8

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

  1. 我创建了一个 git 项目,并从 SVN 存储库中导入了它
  2. 我做了一些承诺
  3. 我想尝试一些东西,所以我创建了一个名为constants-update的分支
  4. 我切换到常量更新分支,移动了一些文件,删除了其他文件并添加了更多
  5. 我致力于这个分支
  6. 现在我正在尝试使用切换到我的主分支git checkout master
  7. 我收到此错误:错误:您对 'src/groovy/Constants.groovy' 进行了本地更改;不能切换分支。

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

附带说明一下,当我提交时,git 警告我 LF 将被 CRLF 替换,并警告我一些尾随空格;在我提交之后,我做了一个git status,一堆文件总是显示为 #modified ....

这是否与 git/ windows有关,或者我不正确理解它应该发生什么?我只想切换到我的主分支,而不会丢失我在另一个分支中的更改。

4

4 回答 4

4

当当前分支中有未保存的更改时,查找 git-stash 以更改分支。

于 2008-11-03T02:47:55.017 回答
4

您对这应该如何工作的想法是正确的。

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

于 2008-11-03T02:48:00.353 回答
4

我解决了破解我的预提交钩子.git/hooks/pre-commit的问题(用 a注释这些行#):

#       if (/\s$/) {
#       bad_line("trailing whitespace", $_);
#       }
于 2008-11-03T10:38:19.203 回答
2

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

[核心] autocrlf = true

它会解决这个问题。

于 2009-01-29T05:23:48.373 回答