2013-03-31 106 views
19

我試圖重新設置並壓扁當前分支的所有提交給主。這裏是我想要做的事:Git:如何將分支和壓縮從分支提交給主設備?

git checkout -b new-feature 

一對夫婦提交的,之後我嘗試:

git rebase -i master 

在這種情況下,承諾將繼續留在new-feature分支

git checkout master 
git rebase -i new-feature 

它給我和編輯窗口noop消息。

我知道命令:

git merge --squash new-feature 

但我目前正在rebase命令的學習。

回答

4

重新綁定時,Git不會將提交移動到另一個分支。它將移動包含所有提交的分支。如果您想要在提交到主服務器後將其提交到主服務器,請使用git merge <branch tip or commit of branch>將主服務器分支快速轉發到該提交服務器。

45

讓我們走過這些步驟。

1 - 我們創建了一個新的特性分支

git checkout -b new-feature 

2 - 現在你可以添加/刪除和更新任何你想要在你的新分支

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 - 下一步,選擇和壁球任何提交到一個漂亮的提交消息

git rebase -i master 

你需要記住這裏的關鍵是在第一次提交後將所有提交的文字改爲「擠壓」。這將壓縮所有提交到您的主分支。

4 - 選擇主分支

git checkout master 

5 - 移動頭部和主分支到新的特點是:

git rebase new-feature 

你可以嘗試所有的命令列於本可視化工具: http://pcottle.github.io/learnGitBranching/

+5

您可能會得到'無法擠壓沒有先前提交'的消息這樣做。 http://stackoverflow.com/questions/2563632/how-can-i-merge-two-commits-into-one – backdesk

+0

不錯...雖然我通常會壓制我的提交'git rebase -i HEAD〜##' pull/rebase'git pull --rebase origin master'我只是喜歡在兩個步驟中完成這個任務,這讓我可以在rebase之前/之後進行審查。 – Tracker1

+1

這個答案看起來比挑選的更合適 – fernandopasik