【问题标题】:Hotfixing in gitgit 中的修补程序
【发布时间】:2013-09-24 14:51:03
【问题描述】:

假设我在 Git 中有两个分支:developmentqa-test。这两个分支都包含不同的功能 - 提交,但 A 是这两个分支的最新共同祖先:

A--->B--->C--->developent
\
 \
  D--->E--->qa-test

现在我们发现A 中存在错误,我们需要在qa-testdevelopment 中修复它们,即我们需要修复它们。我可以采用的一种方法是从qa-test 名称hotfix 创建一个新分支,修复错误,提交到qa-test,然后将其挑选到development。有更好的方法吗?

【问题讨论】:

    标签: git branch cherry-pick hotfix


    【解决方案1】:

    扩展@Konstantin 的回答:

    $ git checkout A
    ... fix bugs ...
    $ git checkout -b fix # creates a temporary branch for the fix
    $ git commit
    

    现在的状态:

      fix
     /
    A -> B -> C -> development
     \
      D -> E -> qa-test
    

    现在是变基:

    $ git checkout development
    $ git rebase fix # uproot development and stick it on the fix branch
    ... fix any merge conflicts ...
    $ git checkout qa-test
    $ git rebase fix # same for qa-test
    ... fix any merge conflicts ...
    

    现在的状态:

    A -> fix -> B -> C -> development
           \
            D -> E -> qa-test
    

    如果我在这里做错了什么,请告诉我,以便我解决这个问题!

    【讨论】:

      【解决方案2】:

      从 A 创建一个分支,然后将 qa-testdevelopment 的更改合并。

      $ git merge-base qa-test development 
      sha-1 A
      $ git checkout -b hotfix <<sha-1 A>>
      ... do changes and commits
      $ git checkout devel
      $ git merge hotfix
      $ git checkout qa-test
      $ git merge hotfix
      $ git branch -d hotfix 
      

      【讨论】:

      • 这是一个好方法但是如果A 不是一个分支而只是一个提交呢?以及如何找到共同祖先?那么冲突呢?
      • @Narek 您可以通过以下方式找到共同祖先:stackoverflow.com/questions/7167645/…。你可以从任何你想要的提交中创建一个分支,我不明白你的第一个问题。
      • 所以我们可以这样做:git merge-base qa-test development,在你所有的命令之前。
      • @Narek 是的,你可以这样做。有关从旧提交创建分支的更多信息,您有:stackoverflow.com/questions/7167645/…
      • 当我想从一个我想丢弃的分支中挑选更改时,我只使用cherry pick,因为cherry pick会在历史记录中生成重复的提交:davitenio.wordpress.com/2008/09/27/…。例如,如果你的分支是公开的,你就不能通过 rebase 来避免这种情况。
      【解决方案3】:

      "rebase" 会为你做这些,修复开发分支中的错误,然后用开发重新构建 qa-test

      【讨论】:

      • 不,我认为。我不希望 BC 出现在 qa-test 中,我也不希望 DEdevelopment 中。如果我将rebase qa-testdevelopment 组合在一起,那么我将在qa-test 中拥有1 个hotfixBC
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      相关资源
      最近更新 更多