【问题标题】:Why do changes on a new branch get carried over after switching to a different branch? [duplicate]为什么切换到不同分支后新分支上的更改会被继承? [复制]
【发布时间】:2020-10-03 12:32:46
【问题描述】:

我在我的存储库分支上工作时遇到了这个问题。当我在新分支上对某些文件进行更改然后切换到不同的分支时,git 不会引发错误:You have local changes to "X"; cannot switch branches. 错误。相反,它只会移动到新分支并反映该分支中的更改。如果这是我的初学者错误,请告诉我。

复制步骤 -

  • 分叉存储库
  • git checkout -b new-branch-name
  • 对任何文件进行更改
  • 切换回主服务器,这些更改将反映在那里

这导致我的 master 与我对其进行更改的分支相同,并且继续保留。但是,向新创建的分支提交一次可以解决此问题。

【问题讨论】:

  • 因为这些更改不在分支上(直到它们被提交);它们在工作副本中。

标签: git github version-control


【解决方案1】:

您看到此问题的原因是您尚未提交更改。您已编辑工作副本并可能运行 git add,但尚未运行 git commit

Git 将允许您在工作副本中检出另一个具有更改的分支,前提是它可以保留这些更改。例如,如果您更改了一个文件并且该文件在两个分支中是相同的,那么 Git 在签出期间不需要更改该文件,因此它会在您的工作树中保留该版本。如果您意识到自己不小心进入了错误的分支或需要创建一个新的主题分支,这会变得容易得多。

如果您想在分支上保留更改,则需要提交它们;否则,Git 不会将它们作为该分支的一部分进行跟踪。简单地使用签出的给定分支对工作副本进行更改不会以任何方式保留它们。

如果您的工作树是干净的(即没有未提交的更改),git checkout 会将您的工作树的状态完全更改为另一个分支。

【讨论】:

  • 我认为问题在于任何commit 之前的文件更改。包括git add .
猜你喜欢
  • 1970-01-01
  • 2011-10-02
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 2014-05-23
相关资源
最近更新 更多