Git – 切换分支(窗口)&uncommited更改

我很难理解一些git / DCVS的概念。 以下是发生的事情:

  1. 我创build了一个git项目,并从SVN仓库导入
  2. 我做了一些提交
  3. 我想尝试一些东西,所以我创build了一个名为constants-update的分支
  4. 我切换到常量更新分支,移动了一些文件,删除了其他人,并添加了更多
  5. 我致力于这个分支
  6. 现在我正在尝试使用git checkout master切换到我的主分支
  7. 我得到这个错误: 错误:你有本地修改'src / groovy / Constants.groovy'; 不能切换分支。

我对DCVS的理解是,只要我提交了我的文件,即使某些分支文件比其他文件多或less,也可以随意切换分支。 我试着提交git commit -a并切换到主分支,但我有同样的错误。

作为一个侧面说明,当我提交git警告我LF将被CRLF取代,并警告我一些尾随的空格; 在我提交后,我做了一个git status ,一堆文件总是显示为#modified ...

这是相关的混帐/ 窗户 ,或者我不明白它应该发生什么? 我只想切换到我的主分支, 而不会丢失其他分支中的更改

Solutions Collecting From Web of "Git – 切换分支(窗口)&uncommited更改"

你在思考如何工作时是正确的。

但是,这听起来像git是有问题的行尾,它认为所有的文件都修改,即使它们不是。 我不在Windows上使用git,但是我会建议使用“core.autocrlf”选项来使crlf处理工作。 但是,以下博客条目表明这可能不是一个好主意: http : //weierophinney.net/matthew/archives/191-git-svn-Tip-dont-use-core.autocrlf.html

我解决了黑客攻击我的预提交钩子 (在.git/hooks/pre-commit中用#注释这些行)的问题:

 # if (/\s$/) { # bad_line("trailing whitespace", $_); # } 

查找git-stash用于在当前分支中存在未保存更改的情况下更改分支。

只需在位于用户目录中的.gitconfig文件中使用以下选项即可。

[core] autocrlf = true

这将解决这个问题。