簡體   English   中英

Git - Merge vs Rebase用於我的工作流程

[英]Git - Merge vs Rebase for my workflow

我一直在閱讀關於git mergegit rebase操作如何工作的一些內容,我認為我對這些差異有一個非常基本的了解。 我已經看過圖表了:-)盡管如此,我仍然不清楚兩者中最好用的是什么才能用於我目前的工作流程。

我的工作是使用perforce作為它的SCM系統,但我在本地使用git來跟蹤本地更改,進行重構,以及git可以帶來的一堆其他很酷的東西。 我知道已經存在一個工具來幫助設備使用git和perforce(ex p4-git),但我不一定想要/需要這些開銷,所以我試圖讓事情變得盡可能簡單。 以下是我目前創建本地git分支並最終集成到我們的主要perforce倉庫的工作流程的簡要說明:

  1. 我有一個 git分支,它與我們的代碼庫進行夜間p4同步 在perforce同步之后,我將所有更改提交到主分支。 實際上,我的 git分支實際上是提交給我們的perforce主線的最新代碼的快照。

  2. 對於我正在進行的本地更改,我總是首先創建一個git分支 ,並在處理更改時檢查此分支。

  3. 時不時地,我想更新我的分支從最新的。 到目前為止,我剛剛發布了一個git merge master命令來做到這一點,並且它一直很好。

  4. 當我准備好承諾實際的perforce倉庫時,我將我的分支合並回我的分支,通過檢查主服務器並發出git merge BRANCH然后使用常規perforce命令提交

鑒於我的工作流程,我是否真的應該使用步驟#3的git rebase master命令而不是git merge master 根據我對rebase命令的理解,只有當我們的perforce主線 (遠程倉庫)被分支時,這才有必要,並且我想基於這個分支創建一個新的主人 (比如我稱之為master-newbranch)並應用我的更改到這個新的分支。 我需要先衍合過這個分支?

一般來說,我目前的工作流程是否有意義,或者我已經養成了一些壞習慣?

我有相同的工作流程,更喜歡使用git rebase -i master。 這使所有perforce resyncs保持在更改列表的底部。 因此,我看來我檢查了最新版本,並進行了大量的更改。 此外,只有在重新同步后才會顯示與分支相關的更改。 看起來更直觀,但聽起來更像是風格而不是正確的東西。 〜奔

在這種情況下,你不應該(必然)使用rebase而不是merge。 請記住,rebase基本上會重寫您的歷史記錄。 它有助於清理多個分支並提供更線性的歷史記錄,但從您的用例中,您不會通過使用rebase獲得任何東西。 您描述的行為是一個正常的git工作流,其合並是為此而設計的。

關於rebase的一個棘手的事情是當你重新定位(重寫歷史)你已經推動的提交時。 這可能會導致與其他人合作時出現嚴重問題,但您正在使用perforce進行協作,因此您不太可能遇到此問題。

Rebase正在重寫您的歷史記錄。 所以真的取決於你想如何保持你的歷史。 Rebase使歷史記錄更加清晰。

歷史記錄顯示了項目中發生的情況。 但是,您不必暴露您所做的一切。 想象一下,你正在寫一本書。 您不必向用戶顯示您的寫作歷史記錄,包括草稿版本。

就我而言,在合並master和branches時,我通常更喜歡rebase而不是merge。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM