我有一个非常奇怪的情况......可能是因为我对git相对较新,但这似乎是错误的。每次我从命令行更改分支时,都会得到一组未提交的更改(根据我签出的分支不同而不同)。
我正在使用Stash存储库(“存储”Git存储库,就像私有GitHub,而不是“git stash”命令)。这个repo有多个分支:master / development / feature1等。
要明确的是,我没有对任何分支机构进行任何更改......我是一个全新的用户,连接到全新安装的全新客户端。我只是浏览分支并确保每个分支都建立在我的系统上。
以下是我使用的命令:
git branch -a
这列出了所有分支,最初显示我在本地“主”和其他分支远程。
然后我检查了开发分支
git checkout -b development origin/development
git status
这告诉我,我现在有大约20个未提交的更改,包括一些源文件,项目文件和一些misc数据文件。为什么?这是正常的git行为吗?
我试着回去掌握:
git checkout master
但由于未提交的更改,此操作失败。如果我强迫它:
git checkout master -f
它似乎工作正常,我回到主分支,没有任何未提交的更改。
真的吗?!?未提交的更改甚至不是分支之间的差异......只是一个子集。有什么可以解释这种行为?我怎么能阻止它?
仅供参考,在Windows 7上运行 git version 1.8.3.msysgit.0
答案 0 :(得分:1)
我几乎100%确定这与Windows与Linux / Mac行结尾的经典问题有关 - 也就是说,当您点击Windows中的“Enter”键时,您会获得不同的字符/在Linux或Mac中点击“Enter”时的字符集。 (如果你很好奇,here's some information关于那个问题)
要确定这是否是您的问题,请运行git diff
。如果结果显示被删除的行与添加的行具有相同的内容(或“看起来相同”),则可能是空白问题。
Git知道这个问题,并会为你管理行结尾......如果你告诉它。尝试更改autocrlf
选项:
git config --global core.autocrlf true
看看问题是否仍然存在。
您可能仍需要针对这些差异重新规范存储库。如果是,GitHub has a great article on this。有关重新规范化的详细信息,请参阅底部。
(哦,如果我离开这里,请用git diff
中的例子更新你的问题,我们可以用它来解决这个问题。)