【问题标题】:Switch a branch and preserve current branch changes in Git在 Git 中切换分支并保留当前分支更改
【发布时间】:2013-12-09 18:53:21
【问题描述】:

如何切换分支并仍然保留我当前的分支更改?

考虑这种情况。

我正在处理一个问题,根据我们的开发模型,我创建了一个单独的分支并开始处理它。我使用

创建了我的新分支

git checkout -b new_branch

现在,当我在此分支中进行任何更改时,它都可以正常工作。

但在此之后,由于系统重启,我忘记并切换回默认本地分支(比如“本地”)。

现在我开始进行修复工作,突然意识到我在“本地”分支中。现在因为我必须提交我的更改并将其与 master 合并。

我正在努力

git checkout new_branch

但我不断收到此错误消息:

错误:您对以下文件的本地更改将被覆盖 通过结帐: 内容/some/blah/blah/path_name/file.jsp

请在切换之前提交您的更改或存储它们 分支机构。中止

如何切换到 new_branch 并仍然保留我想要在 new_branch 中实际提交的本地分支中的更改。

PS :- 存储不是一个选项。本地分支上的 git checkout 也不是。我想保留更改。

【问题讨论】:

  • 为什么不能选择存储?这是在这种情况下要走的路。 (在应用隐藏的更改时,您可能需要手动解决冲突)
  • 其实我做“git stash pop”的时候会有合并冲突。这就是为什么我不想做 git stash。有没有办法解决这些冲突? ——
  • 是的,会有的。您更改了相同的线条或线条彼此太近。没有办法绕过它(Git 无法确定哪个更改是“真正的”更改)。手动修复冲突。
  • 谢谢,这就是我想知道的。
  • 只是出于好奇:当系统重新启动时,什么样的设置会让你更改分支?

标签: git github


【解决方案1】:

只需暂时存储更改,并在切换分支后立即弹出它们。

git stash
git checkout new_branch
git stash pop

【讨论】:

  • 其实我做“git stash pop”的时候会有合并冲突。这就是为什么我不想做 git stash。有什么办法可以解决这些冲突吗?
  • 一般来说,您将无法避免冲突。毕竟,您使用代码的一个视图编写了您的更改,并试图将它们应用到不同的视图。如果文件在这两个视图之间发生了变化,那么这种差异就不会完全适用。
  • 谢谢@ChrisHayes,只是想知道是否有更好的方法来解决这些问题。
  • 如果你能添加更多信息会更好,poping stash 是什么意思?
猜你喜欢
  • 2023-02-11
  • 2011-05-26
  • 2016-06-21
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多