从命令行看到以下内容后:
# On branch RB_3.0.10
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.htm
Run Code Online (Sandbox Code Playgroud)
我试图通过键入命令来放弃我的更改:
git checkout -- index.htm
Run Code Online (Sandbox Code Playgroud)
但是当我重新运行git status时,它看起来完全一样.结帐似乎不起作用.难道我做错了什么?我在windows/cygwin上使用GIT 1.6.1.2.
# On branch RB_3.0.10
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: index.htm
Run Code Online (Sandbox Code Playgroud)
Fra*_*tin 41
这一直困扰着我一段时间,几乎我检查的每一个回购都有我无法丢弃的变化.长话短说,我尝试了以上所有,没有任何效果.这就是我为了让事情恢复正常而做的事情(在Mac上):
Completely remove the autocrlf & safecrlf settings from ~/.gitconfig
Completely remove the autocrlf & safecrlf settings from your repo's local config ./.git/config
git rm --cached -r .
git reset --hard
Run Code Online (Sandbox Code Playgroud)
180*_*ION 35
git diff文件上显示了哪些更改?在Windows上,我看到了行尾的问题导致了这样的问题.在这种情况下,请查看您拥有的设置git config core.autocrlf和git config core.safecrlf.这里有一些关于这些设置的文档.
我会说,如果你git svn用于与subversion集成,那么请确保autocrlf关闭.据我所知,它只是在这个配置中被破坏了,它使得大多数工具都认为文件已被更改,当你完成了checkout还原任何更改时.
如果您看到问题所在git checkout,然后git status显示文件仍然被修改,并git diff显示该文件在文件中的每一行都被修改,那么这就是您所看到的问题.
core.autocrlf
如果为true,则在从文件系统读取时将git将CRLF在文本文件的行末尾转换为LF,并在写入文件系统时反向转换.该变量可以设置为输入,在这种情况下,转换仅在从文件系统读取时发生,但文件在行末用LF写出.目前,考虑"文本"(即受到自动机制机制)的哪些路径纯粹基于内容来决定.
core.safecrlf
如果为true,则进行git检查是否转换为core.autocrlf控制的CRLF是可逆的.Git将验证命令是直接还是间接修改工作树中的文件.例如,提交文件后检出同一文件应该会在工作树中生成原始文件.如果对于core.autocrlf的当前设置不是这种情况,git将拒绝该文件.该变量可以设置为"警告",在这种情况下,git只会警告不可逆转换,但继续操作....
Nia*_*ang 35
以下是我的经验,在以下变量中设置.git/config:
[core]
autocrlf = false
safecrlf = false
eol = crlf
Run Code Online (Sandbox Code Playgroud)
然后运行$ git checkout HEAD .,它的工作原理.但$ git checkout -- .不,奇怪!
*git版本1.9.3
has*_*sen 15
我想你需要通过 -f
从手册页(man git-checkout,GIT-CHECKOUT(1)):
-f, - force
即使索引或工作树与HEAD不同,也要继续.
这用于丢弃本地更改.
例如,丢弃当前分支上的更改并切换到其他分支:
git checkout -f master
Run Code Online (Sandbox Code Playgroud)
Eya*_*yal 10
它可能是行结尾,正如@ 1800-information所暗示的那样,但另一种可能性是(差异(阻止你用checkout命令恢复这些文件)是文件模式之一.这就是发生在我身上的事.在我的git版本上你可以通过使用来发现它
git diff index.htm
它会显示文件模式的变化.但是,即使使用-f选项,它仍然不会让你使用checkout来还原它们.对于那个用途
git config core.filemode false
或者通过添加在文本编辑器中更改你的git .config
[核心]
Run Code Online (Sandbox Code Playgroud)filemode = false
执行此操作后,您可以使用
git reset HEAD index.htm
并且文件应该消失.
(我得到了这一切从回答如何使git的忽略模式的改变(CHMOD)?和更新文件的权限,只合的git)
我的问题有点类似,我刚刚发现 git 正在跟踪文件权限的更改。我尝试丢弃并重置分支,但文件仍然存在。运行git config --get --local core.filemode,如果为 true 那么您需要将其设置为 false 以关闭文件权限的跟踪。跑步git config --local core.fileMode false应该可以解决。你可以在这里阅读更多
您在OSX还是Windows上?如果是这样,问题可能出在两个名称相同但大小写不同的文件中。例如。index.htm和Index.htm
Windows和默认情况下的OSX使用不区分大小写的文件系统,该文件系统与区分大小写的git冲突。
| 归档时间: |
|
| 查看次数: |
48423 次 |
| 最近记录: |