2013-03-31 17 views
19

Ich versuche, alle meine Commits vom aktuellen Zweig zum Master zu rebasen und zu quetschen. Hier ist, was ich versuche zu tun:Git: Wie Rebase und Squash Commits von Ast zu Master?

git checkout -b new-feature 

ein paar Commits machen, nachdem es ich versuchte:

git rebase -i master 

in diesem Fall verpflichtet wird in new-feature Zweig bleiben

git checkout master 
git rebase -i new-feature 

Es gibt mir und bearbeiten Fenster mit Noop-Nachricht.

Ich kenne Befehl:

git merge --squash new-feature 

Aber ich arbeite zur Zeit auf das Lernen von rebase Befehl.

Antwort

4

Beim Rebasieren wird Git keine Commits in einen anderen Zweig verschieben. Es wird den Zweig einschließlich aller Commits verschieben. Wenn Sie die Commits in den Master übernehmen wollen, nachdem Sie sie neu aufgesetzt haben, verwenden Sie git merge <branch tip or commit of branch>, um den Master-Zweig schnell zu diesem Commit vorzurücken.

45

Lass uns die Schritte gehen.

1 - Wir schaffen ein neues Feature Zweig

git checkout -b new-feature 

2 - Jetzt können Sie hinzufügen/entfernen und zu aktualisieren, was Sie auf Ihrem neuen Niederlassung wollen

git add <new-file> 
git commit -am "Added new file" 
git rm <file-name> 
git commit -am "Removed a file" 
cat "add more stuff to file" >> <new-file> 
git commit -am "Updated files" 

3 - Als nächstes wählen und Squash Irgendwelche Commits in eine nette schöne Commit-Nachricht

git rebase -i master 

Der Schlüssel, den Sie sich hier merken müssen, ist um den Text, der "pick" sagt, nach dem ersten Commit für alle Commits in "Squash" zu ändern. Dadurch werden alle Commits in Ihren Masterzweig unterdrückt.

4 - Wählen Sie den Master-Zweig

git checkout master 

5 - Bewegen Sie den Kopf und den Master-Zweig zu dem neuen Feature ist:

git rebase new-feature 

Sie können in diese alle Befehle ausprobieren visuelles Werkzeug: http://pcottle.github.io/learnGitBranching/

+5

Sie werden wahrscheinlich eine Meldung erhalten, dass Sie nicht quittieren können, ohne zuvor zu committen. http://StackOverflow.com/Questions/2563632/How-Can-Imerge-Two-Commits-into-one – backdesk

+0

Nizza ... obwohl ich normalerweise meine commits 'git Rebase -i HEAD ~ ##' vorher zerquetschen werde der Pull/Rebase 'Git Pull - Rebase Origin Master 'Ich mag es, es in zwei Schritten zu machen, was mich vor/nach der Rebase überprüfen lässt. – Tracker1

+1

Diese Antwort sieht besser aus als die, die ausgewählt wurde – fernandopasik

Verwandte Themen