git - 为什么在这种情况下我在 Git 中的本地更改会被 checkout 覆盖?

标签 git version-control merge branch branching-and-merging

假设我有一个分支 A,从那个分支 B。我对 A 做了一堆更改,然后 checkout B 并执行 git pull。现在我对 B 进行了更改,但意识到它应该在 A 中。如果我现在尝试 git checkout A,我会得到“您对以下文件的本地更改将被 check out 覆盖”到我触摸的文件。

如果我只是在 B 中执行 git pull 并且从那以后就没有触及 A 中的那个文件,为什么我的更改会被覆盖?

最佳答案

您收到该消息的原因是分支 A 和分支 B 之间的基础文件(在您未提交的修改之前)不同。如果文件相同,Git 将切换分支并保留切换到分支 A 后相同的未提交修改。

实现这些更改的一种方法是将它们存储起来:

(on branch B)$ git stash
git checkout A
git stash pop

如果有冲突的更改,您可能必须在此时解决冲突。如果有变化但不冲突,那么这将成功。

关于git - 为什么在这种情况下我在 Git 中的本地更改会被 checkout 覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12044716/

相关文章:

git - 将项目从 PVCS 转移到 Git

version-control - 特定于插件的grails和版本控制

svn - 重新整合到主干后,使用Subversion功能分支是否安全?

python - 当包含 NaN 时使用 "new information"更新 Pandas 数据帧

git - Ansible:如何在一个剧本中的其他主机上运行任务?

visual-studio - 如何让 Visual Studio 在 TFS Get 后打开“解决冲突”窗口

git - Git 项目的 CMake 外部项目

默认情况下 git merge -Xignore-space-change

git - git rebase 后缺少提交

git - 显示 2 个日期之间 merge 到 Master 的所有分支 - Git