Git重用分支或删除并再次创建

Ale*_*lex 13 git

我最近完成了为我正在处理的项目添加某个功能的任务.由于此功能依赖于残酷使用的旧代码,因此我决定分两步执行任务:

  • 重构旧代码以使其更有用
  • 使用重构代码创建功能

我创建了一个分支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中完成这项任务的工作?我看到两种可能性:

  • 要么删除feat/foo checkout -b又要删除它,所以我有一个与我的旧分支同名的新分支,
  • 或以某种方式"重用"feat/foo,我不知道该怎么做

第一个解决方案对我来说感觉不太对,删除分支只是为了再次创建它似乎是"错误的".但我不知道如何重复使用它.

我该怎么办?删除并重新创建分支,或者如果正确的答案将重用它,如何?

Tim*_*sen 8

在许多工作流程中,一旦将功能分支合并回其中,就会将master其删除.GitHub可能是这方面的主要例子.如果你遵循这种思想,你会删除feat/foo并为你的下一个sprint创建一个新的功能分支.

如果你真的想使用的分支保持,那么你将不得不重订feat/foomaster或合并masterfeat/foo.我没有看到任何有利于变基的优势,这可能是混乱的,所以让我们考虑合并.你合并feat/foomaster了提交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现在的位置并创建一个全新的功能分支.您可以保留几个冲刺,直到您确定删除它是安全的.


axi*_*iac 6

由于您需要继续在分支机构上工作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产生相同的结果.