We always keep moving forward and backward between commits in git
. Once you checked out a previous hash git log
no more shows the next commits, we end up rebasing or resetting, but git provides a way to see all the commits, and we can checkout the next commits too from a previous state.
The simple and easiest way to do this is:
git log --online --all
Consider this example:
Here if we check out to commit id 95613ab Fix more TOC links
and then see the git history with git log
or git log --oneline
you will only see:
As we see here we missed the commits ahead of 95613ab
. You can see the HEAD with git show-ref --head
but it will not show the commits in between the HEAD
and the commit you checked out. So if you do git log --oneline --all
you will get the whole history with the commit where the HEAD
is right now.
Let us know if you know the better solution for this problem.
Cheers.
Top comments (2)
Thanks for sharing.
I will look at using --all. I usually use the branch references as below. and the order doesn't matter and more branch names could be added.
It doesn't matter which one is latest, they will both show. This is useful if I am on my-feat and it is behind master and want to see commits on master and the feat.
That also works with two feat branch names. Or say
master 1.2.0
for comparing tags. Especially if I accidentally tagged a feature branch so the tag doesn't show up on master.If your master is behind the remote and you have you git fetch then you can also compare local master with remote
Note you use online instead of oneline in the first block so needs to be fixed.
If you want to be more precise you can use relative references
Start the log as if we were 5 commits behind.
And you can check it out or reset.
And reference future commits when you go back like that.