在我的團隊中,我們有三個開發人員在同一個存盤庫上作業。
這個想法是確保main在將新更改推送到分支之前從分支中拉取它,然后是拉取請求。
我的問題:以下命令的順序是否正確或有效?
命令
git checkout branchName
git add .
git commit -m "Fix Code"
git checkout main
git pull --rebase
git checkout branchName
git rebase main
git push -f origin branchName
uj5u.com熱心網友回復:
這是如何做到這一點的整個流程。
首先,在開始作業之前,請確保您從這樣的最新main分支開始:
git checkout main
git pull
git checkout branchName
然后在名為 的分支上進行更改branchName,并在那里進行提交:
// Do your code changes
git add .
git commit -m "Fix Code"
假設,同時有人更新了main分支。
因此,您需要在推送之前重新設定代碼。
請執行下列操作:
git checkout main
git pull
git checkout branchName
git rebase main
現在,您的分支上也有了最新的代碼。
隨意推:
git push origin branchName
現在您可以main像往常一樣創建拉取請求并將其合并到。
uj5u.com熱心網友回復:
我曾經做過Just Shadow 的回答中提出的建議,而且效果很好。這也是大多數 Git 教程在您開始使用 Git 時推薦的內容。但是,由于您特別要求采用“有效的方式”,因此這是我目前所做的,我發現它的“效率”要高得多:
- 很少,如果有的話,結帳
main!起初這聽起來可能很瘋狂,但有多種原因:它很快就會過時,您可能忘記更新它并意外使用它的舊版本,而您實際上永遠不需要檢查它. - 無論何時您以前使用過 的本地副本
main,請origin/main改用(假設您正在呼叫遠程“源”,這是默認設定)。
如果您這樣做,作業流程將得到簡化。您需要在概念上進行的最大更改是您現在很少使用該pull命令。相反,您將用于fetch更新遠程分支的副本,您使用origin. 例如:
創建一個新分支:
git fetch
git switch -c branchname origin/main --no-track
稍后當您希望使用最新的 main 更新您的分支時:
git fetch
git rebase origin/main
這需要一些時間來適應,但是一旦您對此感到滿意,這就是第二天性。理解它的關鍵是在 Git 中有 3 個概念“桶”需要考慮:
- 您當地的分支機構。
- 您的遠程分支副本。
- 實際的遠程分支。
每次git fetch,您基本上都是在將#3 復制到#2。(順便說一句,pull 在幕后進行提取。)訣竅是意識到您可以訪問存盤桶 #2 中的任何內容,而無需檢查它,如果您不希望的話。
旁注:你的問題的標題:
避免兩個分支沖突的分支策略
表明您使用的分支策略可以幫助避免沖突,但這不一定是真的。即使將您尚未合并的分支與最新的main(或origin/main)保持同步仍然會導致沖突,但是如果您經常這樣做,與長時間運行的功能分支相比,沖突將相對較小且更容易解決t 在創建 PR 之前更新,并且可能有更大的沖突需要處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/369443.html
標籤:混帐
