【发布时间】:2015-03-31 04:27:52
【问题描述】:
我的问题是结帐时的 git 行为,这里是阐明我不理解的行为的步骤。我创建了一个目录testdir,其中包含文件foo 和bar,每个文件都有一行文本。我执行以下操作:
所以我有master 分支和一个相同的bug 分支。在master 中,我将一行文本添加到文件foo,但不添加或提交到主文件,只是我本地树上的文件更改。接下来我做:
我预计会收到以下错误:
错误:您对以下文件的本地更改将被结帐覆盖: 富 请在切换分支之前提交您的更改或存储它们。但我确实 NOT 得到了上述错误,我的问题是在这种情况下 git 怎么没有错误?相反,我得到了以下信息:
root@revision-control ~/testdir# git checkout bug 美富 切换到分支“错误”我现在在bug 分支,但foo 文件有我在master 时添加的第二行。
谁能解释这里发生了什么以及为什么 git 让我在没有错误消息的情况下更改分支?并且文件中没有合并冲突指示符。
接下来我改回master 分支并添加然后将更改提交到foo 文件(所以master 文件foo 有2 行,bug foo 有1 行)。我在master 中对foo 进行了更改并添加了第三行文本,现在当我尝试签出bug 分支(与上面相同的git 命令)时,我得到:
那么为什么现在这种行为与以前不同并且我得到了错误? (这是我最初期望的行为)。
【问题讨论】:
-
由于您未提交修改的基础/来源与
bug中的相同(指向与您当前的HEAD、master相同的提交)Git 能够签出新分支。如果bug包含对该文件的任何更改,您将收到预期的错误。
标签: git git-branch git-checkout