首页 > 解决方案 > Git在独立分支之间切换

问题描述

我的存储库中有两组代码。一个是旧系统,我不时要维护它。另一个是我的新系统。我从不想将两者合并,但我希望能够在它们之间切换。

早些时候,我从新分支切换到原始分支。今天我想回到特性分支,所以我这样做了:

git switch feature/development

然后我尝试

git pull

并查看有关合并的各种消息。

我也试过

git pull --force 

它说“无法提取,因为您有未合并的文件”。

有没有一种简单的方法来维护两个分支并在它们之间来回切换?

标签: git

解决方案


git pull命令是一个方便的命令:它意味着run git fetch,然后运行第二个 Git command。第二命令是可选的,但默认是git merge.

所以你要求你的 Git 进行合并。那次合并还没有完成。您必须先完成或停止合并,然后才能执行其他任何操作。

如果您根本不想进行合并,请使用git merge --abort停止正在进行的合并并将事情恢复到开始合并之前的状态。如果你确实想要合并,你必须完成 Git 的合并操作,它自己无法做到这一点,然后git merge --continue用来告诉 Git 你已经把正确的合并结果放在适当的位置,Git 应该把它保存为正确的未来合并的结果。

另外,这是 BizTalk,所以有些文件确实不能合并。

尽管如此,如果你想使用git merge——which git pullwill do——你必须合并它们,通过构建正确的结果并告诉 Git 你已经这样做了。(您的另一个选择是根本不合并。)

有没有一种简单的方法来维护两个分支并在它们之间来回切换?

如果您使用git pull,则不会,因为这意味着fetch 然后合并。当您遇到合并冲突时,您必须先修复它(或如上所示终止合并),然后才能切换。1

如果您只想拥有两个独立的工作树,在两个独立的分支上工作,请考虑:

  • git worktree如果您的 Git 至少为 2.15,则使用(git worktree在 Git 2.5 中是新的,但有一个特别糟糕的错误直到 2.15 才修复),或者
  • 使用两个单独的 Git 存储库。

使用两个独立的工作树——无论是由两个独立的存储库支持,还是由一个共享的存储库支持——你可以将合并冲突保留在适当的位置,只要你喜欢并且仍然在另一个工作树中工作。


1此规则有一些小例外,但它们不适用于您的情况——如果它们适用,您的转换就会起作用。


推荐阅读