fus*_*har 8 git git-revert git-blame
假设我有一个文件a.txt.有一天,我删除了它,提交并推送了.
第二天,我想恢复最后一次提交,带回来a.txt.我尝试过使用git revert,但是当我这样做时git blame,所有行都显示了恢复提交哈希.最初的责备历史丢失了.
我可以恢复文件并保留文件历史记录,即好像之前没有删除过文件吗?请注意,我不得在推送提交时更改历史记录.
谢谢!
你CAN做到这一点!这是如何做:
git merge <sha> -s ours.git diff <sha>^..<sha> | git apply.git checkout -p可能适合您).这产生了一个有两个分支的历史; 文件被删除的文件和永不删除文件的文件.因此,git能够跟踪文件历史记录而无需诉诸诸如此类的英雄事迹-C -C -C.(事实上,即使使用-C -C -C,文件也不会"恢复",因为git看到的是一个新文件被创建为以前存在的文件的副本.使用这种技术,您将相同的文件重新引入存储库. )
git reset您可以通过使用而不是 来做到这一点git revert。git reset删除新的提交并签出以前的提交。如果您已经推送到上游,则不建议这样做。
NAME
git-reset - Reset current HEAD to the specified state
SYNOPSIS
git reset [-q] [<tree-ish>] [--] <paths>...
git reset (--patch | -p) [<tree-ish>] [--] [<paths>...]
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
DESCRIPTION
In the first and second form, copy entries from <tree-ish> to the index. In the third form, set the
current branch head (HEAD) to <commit>, optionally modifying index and working tree to match. The
<tree-ish>/<commit> defaults to HEAD in all forms.
Run Code Online (Sandbox Code Playgroud)
既然你已经推动了:
git reset并强制推送git push -f。