2013-05-08 108 views
3

我有一個由超過1人共享的存儲庫因此,經常看到提交歷史記錄中有很多合併提交。我想擺脫他們,讓我的承諾歷史看起來更清潔。如何擺脫git中的合併提交

我們應該遵循什麼實踐來避免這些合併提交?它可行嗎?

我讀了關於使用--ff-only開關合並。這個開關可以幫助我嗎?

+3

例子:http://randyfay.com/content/rebase-workflow-git - 同樣,對於乾淨的歷史,'混帳log'有一個'--no-merges'開關省略了合併提交。 – 1615903 2013-05-08 05:06:56

+0

爲什麼你想擺脫合併提交?或者,你爲什麼考慮一個準確的歷史與合併承諾「不潔」。合併是多用戶存儲庫中的一項自然活動,準確記錄開發活動(包括合併活動)應該是一件好事。 – 2013-05-08 05:39:59

+0

@CharlesBailey我的一些部分也想問一下是否有一種做法可以避免合併提交,以及避免合併提交是否正確。感謝提示 – sachinjain024 2013-05-08 08:00:19

回答

8

如果您有沒有推到遠程但當地的變化,如果你拉從遠程它會創建一個合併提交最新的更新。爲了避免這種嘗試

git pull --rebase 
3

我還有一種方法來避免合併提交。這就是我現在所遵循的。

  1. 在進行任何提交之前,請始終從上游提取最新的代碼。

  2. 有時,它可能會說,請提交您的更改/藏匿他們,不會讓你獲得最新的提交。這是因爲你編輯了一些文件,而且這些文件也是在上游的一個提交中編輯的。因此,使用git stash

  3. 再次使用git pull origin master

  4. 這次藏匿您的更改,不會有任何問題,你從上游有最新的代碼。現在,使用恢復從藏匿代碼git stash apply

  5. 可能有一些automerge衝突,解決這些問題,使您的提交和使用git push origin master

有可能的情況下,推送到服務器,即的過程中,合併和提交,其他人也在上游/服務器上進行提交。在這種情況下,您的推送將失敗並要求您再次從服務器/上游獲取代碼。如果您立即取消,您將成爲合併提交的受害者。因此,爲了避免這種使用git reset head^

不要擔心你的代碼也不會迷路,現在你再回到步驟0再次按照同樣的步驟。你已準備好出發。衍合工作流程的

+1

git stash pop可能比git存儲應用更好,因爲pop也會從stash堆棧中刪除stach,否則您的工作流將意味着堆棧stash只會不斷增長。 – 2015-08-07 15:46:07

+0

@darran我同意......我們應該大部分時間使用git stash pop,除非我知道我可以稍後重用這些更改..就像一些conifg更改...用戶可能想要使用git stash apply – sachinjain024 2015-08-07 16:02:43