如何处理未提交的更改



我刚刚将文件从旧电脑迁移到新电脑。其中包括一些开发git存储库。

但我想,因为文件是复制的,所以日期戳是不同的,所以git现在将它们视为未提交的更改,即使文件没有其他更改。

对此,最好的做法是什么,只需提交文件,或者是否有一些git魔术(命令(来告诉git一切正常?

git查看文件的内容

修改日期是指示应该重新计算索引的触发器,但如果一个文件在同一位置具有完全相同的内容,则它将不会显示为";被修改";。


为了确认文件具有不同的内容,您可以查看git计算的哈希:

# get the hash for the file in the current commit :
git ls-tree HEAD path/to/file
# compute the hash for the file on disk :
git hash-object path/to/file

如果哈希值相等,您可能遇到了索引未正确刷新的问题,请尝试运行:

git update-index --refresh

让git重新检查所有文件(注意:如果文件在那之后仍然显示为已修改,请添加评论或更新您的问题,确实会发生一些奇怪的事情(

如果散列不同,那么内容肯定不同。您必须仔细查看该文件的两个版本之间发生了什么变化,例如,通过比较每个版本的十六进制转储。

TLDR:文件复制repos而不在不同的文件系统(EXT4与NTFS/FAT32(之间进行git克隆会让git抱怨。

完整答案

在与一位熟悉Git的朋友交谈时,他发现了这个问题。

在将我的数据(包括repo(从有Linux文件系统的旧电脑迁移到新的Linux电脑时,由于我没有网络连接,我将所有内容复制到了一个USB HD上,该HD是用Window的文件系统格式化的,因此丢失了一些文件信息,Git报告所有内容都必须重新签入。

因此,解决方案是只在Linux文件系统上移动repo。

我在Linux文件服务器上设置了一个远程repo,将本地工作repo从旧电脑推送到远程git服务器,然后将远程复制到新电脑。

额外积分

克隆并没有拉动所有的远程分支。我找到了这个解决方案来拉取所有远程分支。

git pull allhttps://gist.github.com/grimzy/a1d3aae40412634df29cf86bb74a6f72

#!/usr/bin/env bash
git branch -r | grep -v '->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git fetch --all
git pull --all

感谢大家的帮助、时间和建议。

相关内容

  • 没有找到相关文章

最新更新