Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在意外删除文件并将其添加回其他位置后,如何修复git历史记录?_Git - Fatal编程技术网

在意外删除文件并将其添加回其他位置后,如何修复git历史记录?

在意外删除文件并将其添加回其他位置后,如何修复git历史记录?,git,Git,我的情况是这样的:我将一个文件移动到了一个新的位置,但意外地只进行了删除。然后在随后的提交中,我在新位置提交了新文件git log--follow似乎没有检测到文件被移动,因此现在没有显示该文件的完整历史记录 然后,我试图通过将文件移回其原始位置来修复此问题,但它现在仍有被截断的历史记录lol,修复失败 我现在如何修复这个文件,让git检测历史链 您需要将两个提交合并在一起: git reset --soft "HEAD^" git commit --amend 或者您可以完全返回到上一次提交

我的情况是这样的:我将一个文件移动到了一个新的位置,但意外地只进行了删除。然后在随后的提交中,我在新位置提交了新文件
git log--follow
似乎没有检测到文件被移动,因此现在没有显示该文件的完整历史记录

然后,我试图通过将文件移回其原始位置来修复此问题,但它现在仍有被截断的历史记录lol,修复失败


我现在如何修复这个文件,让git检测历史链

您需要将两个提交合并在一起:

git reset --soft "HEAD^"
git commit --amend
或者您可以完全返回到上一次提交,重做内容并修改提交:

git reset --hard "HEAD^"
# create the file, or move, ...
git commit --amend
最后,如果您已按下remote键,则需要使用
-f
覆盖远程历史记录:

git push origin -f

您需要将两个提交合并在一起:

git reset --soft "HEAD^"
git commit --amend
或者您可以完全返回到上一次提交,重做内容并修改提交:

git reset --hard "HEAD^"
# create the file, or move, ...
git commit --amend
最后,如果您已按下remote键,则需要使用
-f
覆盖远程历史记录:

git push origin -f

git push origin-f
两个选项都需要吗?@BT:是的,每当历史记录被修改时,我都会使用rebase(git rebase-I HEAD~5)做一些非常类似的事情,然后挤压除1之外的所有提交,并在没有-f参数的情况下进行推送(忘了它)。虽然我在历史上仍然有最初的承诺,但历史现在很好。可能没有你的方法干净,但它让我得到了我想要的。我按照以下指南合并提交:。谢谢
git push origin-f
两个选项都需要吗?@BT:是的,每当历史记录被修改时,我都会使用rebase(git rebase-I HEAD~5)做一些非常类似的事情,然后挤压除1之外的所有提交,并在没有-f参数的情况下进行推送(忘了它)。虽然我在历史上仍然有最初的承诺,但历史现在很好。可能没有你的方法干净,但它让我得到了我想要的。我按照以下指南合并提交:。谢谢