繁体   English   中英

Git - 切换分支(窗口)和未提交的更改

[英]Git - Switching branches (windows) & uncommitted changes

我很难理解一些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有关 ,或者我不正确地理解应该发生什么? 我只想切换到我的主分支而不会丢失我在其他分支中的更改

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

你对这应该如何运作的想法是正确的。

但是,听起来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", $_);
#       }

只需在.gitconfig文件中使用以下选项,该文件位于users目录中。

[core] autocrlf = true

它将解决这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM