Git 允许使用未暂存的更改进行分支更改

标签 git version-control

Git 允许我在有未暂存提交的更改(修改后的文件)时更改分支。

在某处有配置吗?

编辑:起初我认为这是一个我需要设置的配置,以禁止在有修改的未暂存文件时在分支之间进行更改。但是根据 Emily 的评论,如果分支之间的文件不同,系统似乎会提示您,否则不会提示。

最佳答案

它是如何决定的

快速实验显示以下内容。

假设您在分支 dev 上并且您修改了 foo.txt。在不提交的情况下,您尝试检查 master。将发生以下两种情况之一。

  1. 如果 foo.txtmaster 中修改了 dev 没有的提交,您将不会允许在不提交的情况下切换,因为 master 有一个与未暂存的更改冲突的文件的"new"版本。

    因此,要“ checkout ”master,需要 Git 将 foo.txt 更新到 master 拥有的较新版本,从而破坏您未暂存的更改。为防止丢失工作,它不会更改分支。

  2. 否则,修改已经“自”master 知道的版本完成,您将能够更改分支。 Git 不必更新该文件,因为 master 没有关于该文件的新信息。

对于“糟糕”的变化

由于上述原因,如果您对一个分支上的文件进行了未暂存的更改,并且意识到您实际上想在另一个分支上提交更改,则您可能无法 check out 另一个分支。

但是,您可以执行以下操作:

  • git stash save "here's a summary of my changes"(摘要将显示在 git stash list 中)
  • git checkout 其他分支
  • git stash pop(这是 git stash applygit stash drop 的组合)

关于Git 允许使用未暂存的更改进行分支更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8526279/

相关文章:

git - 如果没有新的提交,是否可以在 git 中查看谁 merge 了分支?

git - 在 Git 中提交之前临时清除未跟踪的文件

git - 使用 Google Code 项目验证 SourceTree

version-control - Mercurial 导出变更集

svn - 需要关于使用分支和合并回主干的帮助/建议

iphone - 使用新版本更新时,束路径是否会更改?

java - 通过代理脚本进行Maven配置

git - 为什么github允许无法识别的作者提交

git - 有没有办法从失败的地方继续 Git 克隆?

version-control - 如何将我的自定义 CodePlex Mercurial fork 与主干同步?