二进制文件在git checkout后显示为已修改

时间:2016-08-22 21:20:01

标签: windows git

出于某种原因,在克隆存储库并更改分支后,我有一个标记为已修改的jar文件(未经修改),我似乎无法修改该文件(这会阻止合并分支)

PS D:\src\expm> git status
On branch epic-my-wallet
Your branch is up-to-date with 'origin/feature-01'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

    modified:   Test/Selenium/selenese-runner.jar

no changes added to commit (use "git add" and/or "git commit -a")

我尝试使用checkout命令撤消

PS D:\src\expm> git checkout -- .

git status输出与之前完全相同的消息。

我尝试使用

HEAD重置它
PS D:\src\expm> git checkout -f HEAD
Your branch is up-to-date with 'origin/feature-01'.

请注意,jar文件被标记为由.gitattributes文件

中的LFS处理
*.jar filter=lfs diff=lfs merge=lfs -text

下一步不太确定。该文件自几个月前提交以来未被修改过。

修改
我应该补充一点,今天我们尝试使用git rm . -r --cached重置缓存并删除LFS缓存(物理删除.git/lfs文件夹)并使用git reset --hard重新下载文件。

2 个答案:

答案 0 :(得分:0)

由于你的git设置要处理行尾,应该是&#39; autocrlf&#39;,git在结帐时修改/破坏jar文件!

你应该添加一个&#39; .gitattributes&#39;存储库中的文件,您可以在其中设置&#39; jar&#39;文件为&#39;二进制&#39;并且git将不再尝试转换行尾。

这是在git存储库中处理行尾的推荐方法,以解决此类问题......

答案 1 :(得分:0)

似乎问题在某种程度上与Git LFS有关。我们将Git(从2.8.4升级到目前的2.9.3)和Git LFS(从本地1.2.1升级到最新的1.3.1)升级。然后删除并重新添加jar文件。

之后我们在新文件夹上做了一个干净的克隆,问题似乎得到了解决。可能是解决问题的git + lfs的升级。