繁体   English   中英

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

[英]Binary file showing as modified after git checkout

出于某种原因,在克隆存储库并更改分支之后,我将一个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'.

请注意, .gitattributes文件.gitattributes jar文件标记为由LFS处理

*.jar filter=lfs diff=lfs merge=lfs -text

不确定此处是否要进行下一步。 自几个月前提交以来,该文件尚未修改。

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

由于您的git设置要处理行尾,应该为'autocrlf',因此git在结帐时修改/损坏jar文件!

您应该在存储库中添加“ .gitattributes”文件,在其中将“ jar”文件设置为“ binary”,而git将不再尝试转换行尾。

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

看来问题与Git LFS有某种联系。 我们将Git(从2.8.4升级到当前的2.9.3)和Git LFS(从1.2.1本地升级到了最新的1.3.1)都进行了升级。 然后删除并重新添加jar文件。

之后,我们在新文件夹上进行了干净的克隆,问题似乎已解决。 可能是git + lfs的升级解决了该问题。

暂无
暂无

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

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