зеркало из
https://github.com/iharh/notes.git
synced 2025-10-30 13:16:07 +02:00
44 строки
1.9 KiB
Plaintext
44 строки
1.9 KiB
Plaintext
https://www.atlassian.com/git/tutorials/refs-and-the-reflog/the-reflog
|
||
|
||
The reflog is Git’s safety net.
|
||
It records almost every change you make in your repository, regardless of whether you committed a snapshot or not.
|
||
You can think of it is a chronological history of everything you’ve done in your local repo.
|
||
To view the reflog, run the git reflog command.
|
||
It should output something that looks like the following:
|
||
|
||
400e4b7 HEAD@{0}: checkout: moving from master to HEAD~2
|
||
0e25143 HEAD@{1}: commit (amend): Integrate some awesome feature into `master`
|
||
00f5425 HEAD@{2}: commit (merge): Merge branch ';feature';
|
||
ad8621a HEAD@{3}: commit: Finish the feature
|
||
|
||
This can be translated as follows:
|
||
|
||
You just checked out HEAD~2
|
||
Before that you amended a commit message
|
||
Before that you merged the feature branch into master
|
||
Before that you committed a snapshot
|
||
|
||
The HEAD{<n>} syntax lets you reference commits stored in the reflog.
|
||
It works a lot like the HEAD~<n> references from the previous section,
|
||
but the <n> refers to an entry in the reflog instead of the commit history.
|
||
|
||
You can use this to revert to a state that would otherwise be lost.
|
||
For example, lets say you just scrapped a new feature with git reset.
|
||
Your reflog might look something like this:
|
||
|
||
ad8621a HEAD@{0}: reset: moving to HEAD~3
|
||
298eb9f HEAD@{1}: commit: Some other commit message
|
||
bbe9012 HEAD@{2}: commit: Continue the feature
|
||
9cb79fa HEAD@{3}: commit: Start a new feature
|
||
|
||
|
||
The three commits before the git reset are now dangling, which means that there is no way to reference them—except through the reflog.
|
||
Now, let’s say you realize that you shouldn’t have thrown away all of your work.
|
||
All you have to do is check out the HEAD@{1} commit to get back to the state of your repository before you ran git reset.
|
||
|
||
git checkout HEAD@{1}
|
||
|
||
This puts you in a detached HEAD state.
|
||
From here, you can create a new branch and continue working on your feature.
|
||
|