git - Git在独立分支之间切换
问题描述
我的存储库中有两组代码。一个是旧系统,我不时要维护它。另一个是我的新系统。我从不想将两者合并,但我希望能够在它们之间切换。
早些时候,我从新分支切换到原始分支。今天我想回到特性分支,所以我这样做了:
git switch feature/development
然后我尝试
git pull
并查看有关合并的各种消息。
我也试过
git pull --force
它说“无法提取,因为您有未合并的文件”。
有没有一种简单的方法来维护两个分支并在它们之间来回切换?
解决方案
该git pull
命令是一个方便的命令:它意味着run git fetch
,然后运行第二个 Git command。第二个命令是可选的,但默认是git merge
.
所以你要求你的 Git 进行合并。那次合并还没有完成。您必须先完成或停止合并,然后才能执行其他任何操作。
如果您根本不想进行合并,请使用git merge --abort
停止正在进行的合并并将事情恢复到开始合并之前的状态。如果你确实想要合并,你必须完成 Git 的合并操作,它自己无法做到这一点,然后git merge --continue
用来告诉 Git 你已经把正确的合并结果放在适当的位置,Git 应该把它保存为正确的未来合并的结果。
另外,这是 BizTalk,所以有些文件确实不能合并。
尽管如此,如果你想使用git merge
——which git pull
will do——你必须合并它们,通过构建正确的结果并告诉 Git 你已经这样做了。(您的另一个选择是根本不合并。)
有没有一种简单的方法来维护两个分支并在它们之间来回切换?
如果您使用git pull
,则不会,因为这意味着fetch 然后合并。当您遇到合并冲突时,您必须先修复它(或如上所示终止合并),然后才能切换。1
如果您只想拥有两个独立的工作树,在两个独立的分支上工作,请考虑:
git worktree
如果您的 Git 至少为 2.15,则使用(git worktree
在 Git 2.5 中是新的,但有一个特别糟糕的错误直到 2.15 才修复),或者- 使用两个单独的 Git 存储库。
使用两个独立的工作树——无论是由两个独立的存储库支持,还是由一个共享的存储库支持——你可以将合并冲突保留在适当的位置,只要你喜欢并且仍然在另一个工作树中工作。
1此规则有一些小例外,但它们不适用于您的情况——如果它们适用,您的转换就会起作用。
推荐阅读
- c# - 查找非活动画布面板
- angular - 如何在 Angular 服务中编写 post call
- c# - 我在哪里可以开始在 xamarian.forms 和 MQTTnet 中制作即时通讯工具
- javascript - 消息收集器有没有办法在 Discord.js 中收集 DM?
- csv - 使用 Google Apps 脚本将新的 csv 文件更新到 G 驱动器后,如何用新数据覆盖同一张工作表
- python - 当我打开 csv,处理文件并删除列时,文件大小变大
- sql - WITH READ UNCOMMITED 和 Setting Transaction iso level 之间的区别
- python - 解释 GPFlow 中约束参数的先验
- python - 如何使用 PVLIB 构建通用 pvsystem
- mysql - 在 MySql 表中加载具有唯一 ID 的 mysql 中的每个文件