【问题标题】:Switch git branch while keeping current branch in conflicted state切换 git 分支,同时保持当前分支处于冲突状态
【发布时间】:2016-06-21 04:22:25
【问题描述】:

我有一个分支master。我创建了一个新分支feature,对其文件fileAfileB 进行了一些更改。同时,master 也在同一文件fileAfileB 中进行了一些更改。现在我将master 合并到feature 中。它显示文件fileAfileB 中的冲突。假设,现在我决定将功能分支保持在相同的冲突状态,并希望转移到 master。

git checkout master 给出如下错误:

fileA: needs merge

fileB: needs merge

error: you need to resolve your current index first

如何在保持feature 不变的同时切换到master

EDIT 基本上发生的事情是,我从 master 合并并且发生了一些冲突,这使得我对功能的更改毫无用处。所以我想回到 master 并切出一个新的分支来处理这个特性。同时,我不希望我之前的功能分支被删除,因为它有一些我可能需要再次编写的代码,因此我想保留它以便在需要时引用它。

【问题讨论】:

    标签: git git-branch git-checkout


    【解决方案1】:

    您不能保持原样,但您可以将未提交的更改放在一边,稍后再恢复到您当前的状态。

    • git stash save 会将您未提交的更改放在一边
    • git checkout master切换到master
    • 在master上做任何你想做的事
    • 完成后,git checkout feature
    • git stash show 将列出您隐藏的所有更改
    • git stash pop 将恢复最后隐藏的更改

    【讨论】:

    • 那么有没有办法移动到提交,我在将featuremaster 合并之前是在哪里? @布拉德
    • @GauravKumar 我不知道你想要完成什么。如果您要回到之前的feature 的位置,那么将master 更改合并为feature 有什么意义? (这在技术上是可行的,但会创建一个“分离的 HEAD”状态,这会引入其他问题。)
    • 基本上发生的事情是,我从 master 合并并且发生了一些冲突,这使得我对功能的更改毫无用处。所以我想回到 master 并切出一个新的分支来处理这个特性。同时,我不希望我之前的功能分支被删除,因为它有一些我可能需要再次编写的代码,因此我想保留它以便在需要时引用它。 @布拉德
    【解决方案2】:

    你不能。

    您不能从分支切换并让它保持未合并或冲突状态。该状态仅适用于您的工作目录,不适用于特定的分支。

    您的工作目录中存在 Git 未跟踪的更改。您需要解决这些更改并提交它们,否则当您切换分支时它们会丢失。

    【讨论】:

      猜你喜欢
      • 2022-01-19
      • 2015-03-15
      • 2013-12-09
      • 2011-08-28
      • 2018-04-19
      • 1970-01-01
      • 2022-11-03
      • 2011-05-26
      • 2018-04-28
      相关资源
      最近更新 更多