簡體   English   中英

從當前工作的分支分支-Git

[英]Branching off from currently working branch - Git

對於Jenkins管道代碼,我們嚴格不遵循Gitflow工作流程。

master有一個分支X ,其他技術人員當前正在使用該分支X進行自己的更改。 未來幾周X分支上有許多提交。

+----+------------- master
      \
       \
         -----------X (currently used by Developer A)

我的經理要求我在分支X上創建另一個分支Y進行自己的更改。 我需要確保在分支Y每天開始編碼之前,分支X更改是最新的。

但是,問題是我每天都需要合並分支X以保持最新,這會導致合並沖突。 在創建任何分支Y之前,我得到以下錯誤:

$ git branch
  master
* X
$
$
$ git pull origin X
error: Pulling is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
$

在與分支X合並沖突較少的情況下,在我自己的分支上工作的最佳方法是什么?


在與分支X合並沖突更少的情況下,在我自己的分支上工作的最佳方法是什么?

使用短暫的,集中的功能會從X分支分支出來。僅僅因為其他人都不是,就意味着你不能。 在X上使用短暫的特征分支可以最大程度地減少X與特征分支的偏離,並減少沖突。

創建一個分支,在分支中實現一件事 ,然后在X漂移得太遠之前盡快將其合並到X中。 理想情況下,您的分支機構應該持續數天甚至數小時。

完成任務並合並分支后,請勿重復使用它。 刪除它。 為下一個任務在X上創建一個新分支。


處理工作的流程與從master分支相同,只是您從X分支。

這是您的存儲庫的插圖,其中Y分支了X。Y已過時。

A - B [origin/master]
     \
      C - D - G - H [origin/X]
           \
            E - F [Y]

您已將Y設置為跟蹤origin/X

$ git branch -u origin/X Y
Branch 'Y' set up to track remote branch 'X' from 'origin'.

建議不要重新合並上游分支而不是進行更新。 這將使您的歷史記錄更加整潔,並使合並處理變得更加簡單。 運行git pull --rebase Git不會獲取並合並,而是會獲取並重新設置基礎。 這會在X的最新版本上重播每個提交。

A - B [origin/master]
     \
      C - D - G - H [origin/X]
                   \
                    E1 - F1 [Y]

好像您一直在使用最新的X一樣。 這樣可以避免造成很多混亂和不必要的“更新合並”。

這也使合並沖突的管理更加容易。 不必一次用X處理所有合並沖突,您可以逐個提交地處理它們。 首先,您處理E和X之間的沖突,然后處理F和X。每次提交將沖突分開,可以更輕松地了解沖突和原因。

您可以在.gitconfig其設置為默認值。 確實需要一些習慣。

[pull]
        rebase = preserve

無論是合並還是變基,解決沖突都是相同的基本過程。 解決Git中的沖突就像同事打電話給您以幫助進行編輯一樣。 Git將盡可能合並並分階段( git add )工作。 當遇到無法解決的問題時,它將編輯文件以顯示使用沖突標記無法解決的問題,並將這些位暫存,並要求人員(您)來解決。 您編輯文件以修復它們, git addgit add ),然后告訴Git使用git rebase --continue繼續進行下一次提交。

或者確定一切都出了錯,您想從git rebase --abort重新開始。

完成功能設置后,將Y合並到X中(或讓Bob這樣做),刪除Y,然后為下一個功能從X開始新的分支。


主節點有一個分支X,其他技術人員當前正在使用該分支X進行自己的更改。 未來幾周X分支上將有許多提交。

現在,撇開為什么長期存在的分支機構和個人分支機構是一場噩夢的最佳選擇,這是一個可避免的問題。

要素分支具有明確定義的目的和明確定義的合並點。 相反,個人分支機構沒有重點。 它們可以包含Bob如今正在處理的所有內容。 他們沒有盡頭。 他們成為長壽的分支。

長壽的樹枝是一場噩夢,最好避免。 隨着他們與master分歧越來越大,他們將接受越來越多無關的更改,並且越來越不可能被合並。 越來越多的工作要做到僅與master保持最新(如果他們再麻煩的話),並且越來越多的工作必須進入管理分支機構的分支。

最糟糕的是長期存在的個人分支機構。 它包含Bob一直在從事的工作。 誰知道那里有什么變化? 他們都應該做什么? 做他們的工作? 這些變化是好是壞? 這正是鮑勃決定要做的。 合並是對鮑勃的信心的全部或全部飛躍。

如果可能,請盡快關閉分支X,避免使用個人分支,而轉而使用壽命短,定義明確的特征分支 好的分支機構管理已經足夠困難了。 每個人的生活都會因此而變得更好。

暫無
暫無

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

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