Git 如何从备份中恢复更改?

Git 如何从备份中恢复更改?,git,backup,Git,Backup,我的Mac电脑有问题,我决定格式化并重新安装所有东西。我将我的项目复制到另一台机器上,希望git能保存我的更改。现在我将我的项目复制回来,结果是我的所有文件都显示为复制粘贴的修改产品,是的,这是一个愚蠢的错误 我怎样才能忽略所有这些虚拟的差异并保留旧的更改? 是否有一个命令可以还原所有这些差异 谢谢 编辑: 关于“虚拟更改”,我指的是: $ git diff --stat AuthenticationViewElements/background.png | Bin 613

我的Mac电脑有问题,我决定格式化并重新安装所有东西。我将我的项目复制到另一台机器上,希望git能保存我的更改。现在我将我的项目复制回来,结果是我的所有文件都显示为复制粘贴的修改产品,是的,这是一个愚蠢的错误

我怎样才能忽略所有这些虚拟的差异并保留旧的更改? 是否有一个命令可以还原所有这些差异

谢谢

编辑: 关于“虚拟更改”,我指的是:

$ git diff --stat
 AuthenticationViewElements/background.png          |  Bin 6130 -> 6130 bytes
 AuthenticationViewElements/background_iPhone.png   |  Bin 5799 -> 5799 bytes
...
$ git diff AuthenticationViewElements/background.png 
diff --git a/AuthenticationViewElements/background.png b/AuthenticationViewElements/background.png
old mode 100644
new mode 100755

此处的更改是由文件副本的文件权限引起的。这就是我想要摆脱的更改。

如果仍然有一个.git文件夹,它应该保留所有版本的记录。我想也许你可以使用
git log
来找出你是哪个版本,
git status
来了解这个存储库的状态,
git diff(branch | Tag | HEAD)
来检查与其他版本的差异。最后使用
git revert HEAD
还原提交状态,或使用
git checkout
签出提交。我建议使用一些服务来推送您的代码。

看起来唯一的区别在于文件权限。你应该可以用它来清除它们

git reset --hard

您可能需要这样做。

什么是“虚拟更改”?也许只有文件权限
git diff
会告诉你这一点。知道哪些更改需要忽略将使人们更容易为您的问题提供一个好的答案。我最终手动更改了所有文件权限,其中大部分是使用
find-f型-exec chmod 644{}\
您可以在
git diff
上编写脚本,将“旧模式”和
chmod
写入文件。这样做的成本/收益比很大程度上是要修复的文件数量的函数。。。虽然通常唯一会被破坏的标志是exec位
chmod a-X
可以正确获取大多数文件,然后在应该包含它的文件上重新添加exec…是的,或者您可以非常小心地单独
chmod
文件!