Git - Can we recover deleted commits? [duplicate]

ⅰ亾dé卋堺 提交于 2019-12-03 02:57:25

问题


I am surprised, I couldn't find the answer to this on SO.

Can we recover/restore deleted commits in git?

For example, this is what I did:

# Remove the last commit from my local branch
$ git reset --hard HEAD~1

# Force push the delete
$ git push --force

Now, is there a way to get back the commit which was deleted? Does git record(log) the delete internally?


回答1:


To get back to that commit you can use the reflog to look up it's ref.

Reference logs, or "reflogs", record when the tips of branches and other references were updated in the local repository.

Run this command:

git reflog

Scan the first few entries, and find the commit that was lost. Keep track of the identifier to that commit (you can use either the 1st or 2nd columns). Let's call the identifier "ID".

If you have not made any extra work since you did the reset --hard you can do:

git reset --hard ID
git push -f origin master

If you have made other work since the reset, you could cherry-pick if back onto your branch like this:

git cherry-pick ID
git push origin master



回答2:


Yes, You can find your commit in reflog use:

git reflog

to display all commits which are/were created in your repository - after this you should checkout to removed commit by checkout command

git checkout <your commit-SHA>

or cherry-pick it by:

git cherry-pick <your commit-SHA>



回答3:


Try git reflog, aka Reference logs, it allows you to go back to history in your local repo.

https://git-scm.com/docs/git-reflog



来源:https://stackoverflow.com/questions/34751837/git-can-we-recover-deleted-commits

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!