【问题标题】:Why can I still see local modifications after switching branches?为什么切换分支后还能看到本地修改?
【发布时间】:2014-11-21 09:49:57
【问题描述】:

我在使用适用于 Windows 的 Git 时遇到问题。

我在一个项目中有两个分支:mastermembership。问题是,当我修改membership 分支中的文件并切换回master 时,我仍然有修改。 membership 分支是本地分支。

如果我在 master 是活动分支时提交,则更改将提交给 master。如果我在membership 是活动分支时推送,则会为membership 创建一个远程分支(这是我想要的)。

我尝试过切换分支,但没有成功。

【问题讨论】:

  • 在切换到 master 之前,您是否已将更改提交到 membership?否则这是预期的行为。
  • 我是他的同事。问题是,通常 git 在切换分支之前要求提交。这次它不是出于某种原因要求。
  • @vgSefa 我认为较新的 git 版本对此很聪明,因为它们不会询问结帐是否不涉及冲突。它可以在结帐时为您节省一个 stash-unstash-bracket。
  • @vgSefa 啊,这很简单:Git 询问是否在切换分支时不能保留这些更改。 (如果受影响的文件在当前分支和新分支之间不同。)

标签: git git-branch git-checkout


【解决方案1】:

切换分支后您仍然会看到本地修改,因为 Git 不是恶意的。它没有看似安全的命令会秘密地破坏您的数据。破坏数据的命令是您可能合理预期会破坏数据的命令。

如果您想完全摆脱本地未提交的修改,可以使用单独的命令:git reset --hard。要同时删除未提交的新创建的目录和文件,请使用git clean -df

您可以在切换分支之前或之后执行此操作。

如果您想要摆脱本地未提交的修改,如果您只是不希望它们成为新分支的一部分,请在切换分支之前提交或存储它们。

【讨论】:

  • 赞成“恶意”这个词......以及精彩的解释。
  • 我注意到存储可能会导致跟踪但未提交的文件“消失”。如果您忘记了自己有藏匿处,这不是有点危险吗?
  • @AndyJ0076 这并不比忘记在哪个分支上提交它们更危险,不是吗?文件仍然存在,Git 可以告诉你所有可用的分支、标签和其他引用,包括存储。
  • 是的,对我来说这是一个功能,让我能够在我正在进行一些工作时打补丁,完成工作,然后在另一个分支上对补丁做一些事情。
猜你喜欢
  • 2011-08-25
  • 2020-10-23
  • 1970-01-01
  • 2011-10-02
  • 2019-04-18
  • 2022-11-28
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多