2016-02-29 97 views
22

壓縮提交git的意思是什麼。我如何在Github中壓縮提交?什麼是壓縮提交git?

我是新來的Git,我要求被分配到一個新的coala分析器的bug。我修復了這個bug,現在我被要求壓縮我的提交。我該怎麼做?

回答

42

你可以認爲的Git爲你的工作目錄(IES)的快照的高級數據庫。

Git的一個很好的功能是能夠重寫提交歷史。
這樣做的主要原因是很多這樣的歷史記錄只與生成它的開發人員有關,因此在將其提交到共享存儲庫之前必須簡化或更好。

壓縮提交意味着,從習慣的角度來看,將在所述提交中引入的更改移動到其父項中,以便以一個兩次提交結束。
如果您多次重複此過程,則可以將n減少到

視覺上,如果你在提交標記開始開始你的工作,你要想這

Git commits squashing

您可能會注意到新的提交有藍色稍深色調。這是故意的。

在Git的擠壓與再次基於實現所謂衍合互動一種特殊形式的。
簡化當你變基一組提交到一個分支,應用由承諾,因爲他們做的,而不是原來的祖先開始介紹的所有變化。

視覺線索

enter image description here

注意再次的藍色深淺不同。

交互式底墊讓你選擇如何提交應重訂基期,如果你運行此命令:

git rebase -i branch 

你最終會與該名單上提交一個文件將被重建基礎

pick ae3... 
pick ef6... 
pick 1e0... 
pick 341... 

我沒有名字的提交,但這些四個一的目的是從提交開始

關於此列表的好處是,它可編輯
你可以省略提交,或者你可以用壓扁它們
您只需要將第一個字改爲壁球即可。

pick ae3... 
squash ef6... 
squash 1e0... 
squash 341... 

如果您關閉編輯器並沒有合併衝突被發現,你結束了這段歷史:

enter image description here

在你的情況,你不想變基到另一個分支,而是進入之前的提交。
爲了改造歷史如圖所示的第一個例子,你要像

git rebase -i HEAD~4 

改變運行的東西的「命令」,以壁球對所有提交,但第一,然後關閉編輯器。


備註篡改歷史

在git的承諾從來沒有編輯,就可以修剪,做出不可達,克隆,但沒有改變。
當您重新綁定時,您實際上正在創建新的提交。
舊的不再可以通過任何參考,所以沒有顯示在歷史中,但他們仍然存在!

這就是你實際得到的底墊:

enter image description here

如果您已經將他們推某處,改寫歷史,實際上使一個分支!

+0

不錯 - 儘管原始提交評論會發生什麼 - 它們是否合併成一個大的提交評論或丟失了? –

+0

從'man git rebase':_建議的提交 消息爲摺疊的提交是提交 第一次提交的消息和那些與「squash」command_ –

+0

的鏈接感謝 - 這很好理解! –