对于Jenkins管道代码,我们严格不遵循Gitflow工作流程。
X
从中有一个分支master
,其他技术人员当前可使用该分支进行自己的更改。未来几周分支机构将进行许多提交X
。
+----+------------- master \ \ -----------X (currently used by Developer A)
我的经理要求我在分支Y
上创建另一个分支X
以进行自己的更改。我需要确保X
在我每天在分支上开始编码之前,分支中的分支更改是最新的Y
但是,问题是我每天都需要合并分支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' 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设置为track 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 add
),然后通过告诉Git继续进行下一次提交git rebase --continue
。
或决定一切都发生了很大的错误,而您要重新开始git rebase --abort
。
完成功能设置后,将Y合并到X中(或让Bob执行),删除Y,然后为下一个功能从X开始新的分支。
主节点有一个分支X,其他技术人员当前正在使用该分支X进行自己的更改。未来几周X分支上将有许多提交。
现在,撇开为什么长期存在的分支机构和个人分支机构是一场噩梦的最佳选择,这是一个可避免的问题。
要素分支具有明确定义的目的和明确定义的合并点。相反,个人分支机构没有重点。它们可以包含Bob如今正在处理的所有内容。他们没有尽头。他们成为长寿的分支。
长寿的树枝是一场噩梦,最好避免。随着它们之间越来越多的分歧,master
它们将接受越来越多无关的更改,并且越来越不可能被合并。为了使它们保持最新状态master
(如果他们不愿意这样做),就必须进行越来越多的工作,并且越来越多的工作必须进入分支机构的分支机构管理。
最糟糕的是长期存在的个人分支机构。它包含Bob一直在从事的工作。谁知道那里有什么变化?他们都应该做什么?做他们的工作?这些变化是好是坏?这正是鲍勃决定要做的。合并是对鲍勃的信心的全部或全部飞跃。
如果可能,请尽快关闭分支X,避免使用个人分支,而转而使用寿命短,定义明确的特征分支。好的分支机构管理已经足够困难了。每个人的生活都会因此而变得更好。