2016-04-19 11 views
1

Ich habe zwei verschiedene git Zweige: Master und experimentelle. Beide Zweige haben ihre eigenen Änderungen und Commits. In der experimentellen Branche habe ich verschiedene Dinge ausprobiert (durch verschiedene Dateien und Commits).Reverse Teilmenge der Änderungen von Git-Zweig

Jetzt möchte ich alle Änderungen im experimentellen Zweig zurück und nur eine Funktion beibehalten. Ich möchte den (gestutzten) experimentellen Zweig behalten und daran weiterarbeiten, bis es bereit ist, in Master verschmolzen zu werden.

Bisher habe ich ein diff zwischen den beiden Zweigen (um die Änderungen zu sehen) und hat dann ‚‘ git checkout master ‚‘ auf die Dateien in experimentellen ich Master zurückkehren wollte.

Gibt es einen effizienteren Weg?

Was ist der einfachste Weg, um die Änderungen in allen, aber ein paar Dateien in den experimentellen Zweig zu Master zurückzukehren?

+0

Lesen Sie alles darüber hier. http://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location/34519716#34519716 Fühlen Sie sich frei zu wählen, wenn es Ihnen geholfen hat. – CodeWizard

Antwort

2

Was ist der einfachste Weg, um die Änderungen in allen außer ein paar Dateien im experimentellen Zweig zum Master zurückzusetzen?

Erstellen Sie einen neuen Zweig von master und Kasse von experimental die wenigen Dateien, die Sie wollen:

git checkout -b exp2 master 
git checkout experimental -- path/to/file/or/dir 

An diesem Punkt sind Sie auf Niederlassung exp2, die master weitgehend identisch ist, mit Ausnahme die wenigen spezifischen Dateien/dir checkout von .

0

Wenn alle "verschiedenen verschiedenen Dinge", die Sie in experimental ausprobiert haben, in ihren eigenen separaten Commits waren, dann ist es eine einfache Sache von git rebase -i und löschen Sie einfach die Commits, die Sie nicht wollen.

0

Zuerst Rebase Ihre experimentelle mit aktuellen Master.

gir rebase master 

danach werden alle Ihre Commits von experimental auf Master Commits sein.

Jetzt können Sie alle Ihre commit zum aktuellen Master von git reset master zurückgesetzt werden, nachdem alle Ihre Commits in experimental fallen gelassen werden, aber Ihre Arbeitsdateien nicht berührt werden. Jetzt können Sie neue Commits mit den gewünschten Änderungen erstellen und die letzte Ausführung git reset --hard zum Löschen nicht befristeter Änderungen ausführen.

0

sehr ähnlich, was janos vorgeschlagen, aber sicher, dass Sie zuerst hinzufügen und begehen alle Änderungen auf experimentellen Zweig und dann Kasse Master. Einmal am Hauptkasse auschecken Sie alle Dateien, die Sie die Änderungen von Ihrem experimentellen Zweig möchten. Sie werden dann alles auf Master haben, zu dem Sie wieder hinzufügen können und Commit Änderungen an.Der git Fluss würde wie folgt aussehen:

branch: experimental >$ git add . 
branch: experimental >$ git commit -m "including ALL of my changes" 
branch: experimental >$ git checkout master 
branch: master  >$ git checkout experimental fileWanted1.py fileWanted2.py 
branch: master  >$ git add . 
branch: master  >$ git commit -m "master now includes all my desired changes from experimental" 
Verwandte Themen