【发布时间】:2016-02-19 21:42:57
【问题描述】:
我的一位同事以“错误”的方式创建了一个新的 git 存储库,方法是复制树、删除 .git 目录并创建一个新的 git init。然后,这位同事显着精简了存储库,删除了一堆文件并重命名了其他文件(在提交任何内容之前)。
在我看来,应该可以通过从原始存储库到新存储库进行差异来恢复历史记录,然后进行修补。
我能够使用
生成这样的差异diff -ur old new --exclude=".git" > master.patch
然后我几乎通过这样做来修补它
git clone old new_old
cd new_old
git checkout master
patch -p 1 < ../master.patch
# Then, if the patch command had worked, I would have done:
cd ..
rm -rf new
mv new_old new
(-p 1 告诉它删除存储库目录名称)但它似乎遇到了文件被完全删除的问题。
我预计它也会遇到已重命名的文件(例如,从 old_dog.hpp 到 new_dog.hpp)的问题。但我也读过那个 git
我确定其他人以前也这样做过,但我找不到任何示例。有没有一种简单的方法可以恢复此存储库中文件的历史记录,还是我只是在浪费时间?
【问题讨论】: