2011-03-08 37 views
2

我在我的本地git仓库中有两个分支:masteranotherbranch。当我从master切换到anotherbranchgit checkout anotherbranch并运行git status我看到修改后的文件。为什么工作目录中的文件在Git分支之间切换时获得修改状态?

我用git reset HEAD取消这些修改,然后git status不显示它们。但是,当我切换到主并切换到分支后,我再次看到这些修改后的文件。

你能解释一下发生了什么吗?

+0

修改后的文件是否在两个分支中被跟踪?或者只在其中一个? – Amber

+1

有些事情你没有告诉我们,或者不清楚,因为上述情况,正如你所描述的,是不可能的。你可以在你的问题中包含你的git命令的实际输出吗? –

+0

我很想看看如何以一步一步的方式重现这一点。我试图根据我所做的一些假设重新创建它,但不能。 – Tone

回答

1

如果项目没有在任一分支跟踪,这些文件将在git statusuntracked显示,和整个检出

3

你不会autocrlf set to true将求生存,以任何机会呢?
因为它可以改变你的文件上签出...

见线程“core.autocrlf considered half-assed”:

那时候,我是不是该core.autocrlf支持的粉丝。
*但我不得不承认,在此期间,我变成了一个彻头彻尾的特征粉丝。不是因为它的意图是错误的,而是因为它的实现是糟糕的。

只要尝试到git reset --hardgit stash当有DOS行结尾的文件和core.autocrlf不是false时。

然后绝望。

+0

@Mark:我的设置历史悠久......有理由将其设置为true(http://stackoverflow.com/questions/2825428/why-should-i-use-core-autocrlf-true -in-git),但还有其他方法:http://stackoverflow.com/questions/2332349/best-practices-for-cross-platform-git-config – VonC

+0

我通常建议Windows用户,他们unset core.autocrlf只需使用足够复杂的工具来处理不同的行结尾。我承认这是警察,但它排除了这么多混乱的问题。 –

1

git reset --hard将删除索引中的修改。尝试使用这个附加参数后,应该可以。

相关问题