我最近完成了为我正在处理的项目添加某个功能的任务.由于此功能依赖于残酷使用的旧代码,因此我决定分两步执行任务:
我创建了一个分支feat/foo,在重构完成后,我将它合并到我们的master中,以便我们可以直接使用这些更改.现在我留下了以下提交历史记录:
A ---> B ---> C --> E ---> F <master B: created branch feat/foo
| ^ D: refactoring finished
D -----------| C: changes in master in between
^ E: merge commit
feat/foo F: master is now here
Run Code Online (Sandbox Code Playgroud)
feat/foo仍然指向D,我的主人提升到了提交F.我现在要做什么来继续我在分支专长/ foo中完成这项任务的工作?我看到两种可能性:
checkout -b又要删除它,所以我有一个与我的旧分支同名的新分支,第一个解决方案对我来说感觉不太对,删除分支只是为了再次创建它似乎是"错误的".但我不知道如何重复使用它.
我该怎么办?删除并重新创建分支,或者如果正确的答案将重用它,如何?
在许多工作流程中,一旦将功能分支合并回其中,就会将master其删除.GitHub可能是这方面的主要例子.如果你遵循这种思想,你会删除feat/foo并为你的下一个sprint创建一个新的功能分支.
如果你真的想使用的分支保持,那么你将不得不重订feat/foo上master或合并master成feat/foo.我没有看到任何有利于变基的优势,这可能是混乱的,所以让我们考虑合并.你合并feat/foo到master了提交E.因此master已经拥有了所有的功能feat/foo,但反之则不然,即feat/foo可能缺少master自提交以来引入的几个功能D.要执行合并,您将使用此命令:
git checkout feat/foo
git merge master
Run Code Online (Sandbox Code Playgroud)
您可能必须解决由master尚未在feat/foo分支中的新功能引起的合并冲突.
现在,feat/foo分支机构与master保持同步,如果您愿意,可以继续使用它.就个人而言,我会离开feat/foo现在的位置并创建一个全新的功能分支.您可以保留几个冲刺,直到您确定删除它是安全的.
由于您需要继续在分支机构上工作feat/foo,首先要做的是结帐:
git checkout feat/foo
Run Code Online (Sandbox Code Playgroud)
因为您没有完成新功能的工作,所以您继续工作并在分支上提交,直到您完成工作并准备将其合并回主服务器.
不时从主分支机构获取最新更改是很好的.你这样做是通过运行:
git merge master
Run Code Online (Sandbox Code Playgroud)
而你在feat/foo分支机构.
删除分支只是为了重新创建它没有多大意义.git checkout feat/foo然后git merge master产生相同的结果.
| 归档时间: |
|
| 查看次数: |
5992 次 |
| 最近记录: |