2014-12-01 116 views
1

在我的日常工作中,我發現自己做一個新的代碼提交習慣使用Git:而不是創建dev/master/main分支的一個分支,有做我的變化,當我已經完成合並,然後回通過解決衝突到參考分支我根本不分支。相反,我在引用分支上本地執行更改,並且當我必須推送更改時,爲了獲取其他人已更新的更改,我隱藏了更改,我提交了新提交,然後將我的隱藏更改應用於這些其他人的最新提交併解決衝突(如果有的話)。然後我終於推動變革。我發現這種做法比處理分支更容易和簡單。混帳:藏起來,而不是分支

是提交更改錯誤的,可以接受的或比傳統的分支甚至更好的這種方式?爲什麼?

+0

我的理解是你沒有做'git commit',你只是在你的工作目錄下開發,直到你決定從上游引入更改? – 2014-12-01 22:26:49

+0

不,在我要推動我的改變之前,我會立即做出改變。取決於我可以做或不做的任務有多長時間。 – AxeEffect 2014-12-01 22:32:18

+0

只要您在本地進行提交(這只是提供了防止意外刪除的附加措施),您正在處理的分支並不重要。 – 2014-12-01 23:15:41

回答

1

您的規定工作流程與git stash(並且完全可以接受)沒有什麼不對,因爲請記住,它是您的本地存儲庫。只要你推向世界其他地方的事物保持一致,你就可以做任何你想做的事情。例如,不要讓rewriting history提交給其他人。

這裏認識到的重要一點是,分支和積攢並不是相互排斥的。如果存儲滿足您當前的需求,請使用它,直到more complicated scenarios表面,您將需要考慮分支和存儲。

有幾件事情要記住:

  1. 在混帳分支是一個低到沒有儀式的操作。在我的團隊中,這是我們日常工作流程的一部分。
  2. 分支允許團隊成員共享工作正在進行代碼是不準備推到master(或任何你上游主幹分支)。這基本上使我們能夠在團隊成員中形成團隊。
  3. 分支允許我們引入請求提交到GitHub上,同時促進其他項目,或請求代碼評審。
  4. 我總是把我的藏匿名單小,以避免在未來的困惑,通過使用git stash popgit stash drop
  5. 存儲合併衝突仍然存在。
+0

我完全同意。正如你所說,他們兩個都是補充而非排他性的。但即使考慮分支有多容易,也可能有一些簡單的場景,其中的分叉可能比分支更容易。 – AxeEffect 2014-12-01 21:52:23

+0

@AxeEffect很高興聽到。希望有所幫助。如果您喜歡答案,請考慮將其標記爲可接受。謝謝! – 2014-12-01 21:55:29

+0

毫無疑問,你的答案很好。然而,由於這不是一個數學/具體問題,它可能有幾個有效的好答案,聽到他們會很高興。因此,我想留下一些時間,然後再標記「已接受」的答案。 – AxeEffect 2014-12-01 21:59:45

0

通常是有點等於衍合你遵循了一個你的特性分支,因此,例如你按照上游主的featureX,你再這樣做:

git fetch --all 
git checkout featureX 
git rebase master 

根據您的更改,這將適用新的拉代碼。

如果你已經有了窩點周圍,你可以將它們轉換爲擁有分支機構的東西,如:

git branch featureX [<stash>] 

我發現更地道處理功能分支不是處理儲物箱,這對我去容易忘記你您的最終遠程開發回購中不能有push them around