Gre*_*ott 79 git github revert
我有一个repo,有两个文件,据说我在本地更改.
所以我坚持这个:
$ git status
# On branch master
# 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: dir1/foo.aspx
# modified: dir2/foo.aspx
#
no changes added to commit (use "git add" and/or "git commit -a")
Run Code Online (Sandbox Code Playgroud)
做了git diff说整个文件内容已经改变了,即使从眼球看起来似乎是不真实的(似乎有差异的共同行范围似乎没有看到).
有趣的是我不记得在本地更改这些文件.此仓库与一个远程仓库(私人,GitHub.com,FWIW)一起使用.
无论我尝试过什么,我都不能放弃这些局部变化.我尝试了所有:
$ git checkout -- .
$ git checkout -f
$ git checkout -- dir1/checkout_receipt.aspx
$ git reset --hard HEAD
$ git stash save --keep-index && git stash drop
$ git checkout-index -a -f
Run Code Online (Sandbox Code Playgroud)
换句话说,我已经尝试了如何在Git中丢弃未分级的更改中描述的所有内容?加上更多.但是这两个文件仍然被"改变但未提交".
什么导致两个文件被卡住这样看似"un-revert-table"?
PS在上面的列表中显示我已经尝试过的命令,我错误地写了git revert我的意思git checkout.对不起,谢谢那些回答我应该尝试的人checkout.我编辑了问题来纠正它.我肯定已经尝试过了checkout.
Ala*_*yth 109
我花了好几个小时试图解决一个类似的问题 - 我检查过的一个远程分支,它固执地显示四个文件为'已更改但未更新',即使删除所有文件并git checkout -f再次运行(或此帖子的其他变体)!
这四个文件是必要的,但我当然没有修改过.我的最终解决方案 - 说服Git他们没有被改变.以下适用于所有已检出文件,显示"已修改"状态 - 确保您已经提交/存储了任何已经修改过的文件!:
git ls-files -m | xargs -i git update-index --assume-unchanged "{}"
Run Code Online (Sandbox Code Playgroud)
在Mac OSX上,然而xargs运行有点不同(丹尼尔评论):
git ls-files -m | xargs -I {} git update-index --assume-unchanged {}
Run Code Online (Sandbox Code Playgroud)
我下次已将此作为占位符添加到我自己,但我希望它也可以帮助其他人.
-Al
Tek*_*kub 31
文件中的行结尾是什么?我打赌他们是CRLF.如果是,请查看本指南:http://help.github.com/line-endings/
简而言之,您需要确保将git设置为在提交时将行结尾转换为LF,然后提交这些文件.repo中的文件应始终为LF,检出的文件应该是操作系统的本机,假设您正确设置了git.
Abu*_*sar 20
这就是我在我的情况下修复相同问题的方法:open .gitattributes change:
* text=auto
Run Code Online (Sandbox Code Playgroud)
至:
#* text=auto
Run Code Online (Sandbox Code Playgroud)
保存并关闭,然后恢复或重置,感谢@Simon East提示
Eya*_*yal 11
另一种可能性是差异(阻止您使用checkout命令恢复这些文件)是文件模式之一.这就是发生在我身上的事.在我的git版本上你可以通过使用来发现它
git diff dir1/foo.aspx
它会显示文件模式的变化.但它仍然不会让你回复它们.对于那个用途
git config core.filemode false
或者通过添加在文本编辑器中更改你的git .config
[核心]
Run Code Online (Sandbox Code Playgroud)filemode = false
执行此操作后,您可以使用
git reset HEAD dir1/foo.aspx
并且文件应该消失.
(我从答案中得到了所有这些如何使git忽略模式更改(chmod)?)
我遇到了同样的问题,有趣的是,这些文件在 Windows 上已更改,但从 WSL 查看它们时却没有更改。无论对行尾、重置等进行多少修改都无法改变它。
最终我在这个答案中找到了解决方案。为了方便起见,正文如下:
我已经使用以下步骤解决了这个问题
1) 从 Git 索引中删除每个文件。
git rm --cached -r .
Run Code Online (Sandbox Code Playgroud)
2) 重写 Git 索引以获取所有新行结尾。
git reset --hard
Run Code Online (Sandbox Code Playgroud)
解决方案是 git 站点https://help.github.com/articles/dealing-with-line-endings/上描述的步骤的一部分
| 归档时间: |
|
| 查看次数: |
35296 次 |
| 最近记录: |