Git log and git reflog are two similarly named components that give developers an opportunity to look into the repository’s commit history through the command line. Those useful commands are usually confused or misunderstood. In this article, you will get to know the differences between them, git reflog usage examples, and how to use git reflog.
What is git log
Committed snapshots are displayed by the git log command. It’s used to list and filter the project’s history, as well as to look for specific modifications. In comparison to git status, which controls the working directory and the staging area, git log only operates on the committed history. Overall the git log command is helpful while looking over the history of a repository and locating a specific version of a project.
What is git reflog
The reflog is strictly local and isn’t part of the repository. It’s also not included in pushes, fetches, or clones. Git uses the git reflog tool to keep track of changes made to branch tips. It lets you go back to any commit, even if it isn’t referenced by any branch or tag. Following the rewriting of history, the reflog contains information about the former state of branches and allows for reverting to that state if necessary. A reference specifying parameter, sometimes known as a “ref”, can be applied to several git operations. This argument is used to reference a commit. You may keep track of the update time of git references in the local repository using this reflog technique.
Reflogs keep track of when git references in the local repository were modified. A separate reflog is kept for the git stash, in addition to branch tip reflogs. Reflogs are kept in folders under the.git directory of the local repository.
Git improved your software development process? Do the next step and secure your code with the first professional GitHub, Bitbucket, and GitLab backup.
Git reflog vs. git log
The most significant distinction between git reflog and log is that the log is a public record of the repository’s commit history, whereas the reflog is private. After a push, fetch or pull, the git log is duplicated as part of the git repository. The git reflog, on the other hand, is not included.
The reflog is a file located in .gitlogsrefsheads that maintains the history of local commits for a specific branch and excludes any commits that may have been trimmed away by git garbage collection processes. The git log, on the other hand, offers a historical traversal of commits for a branch that begins with the most recent commit and concludes with the very first commit in the branch’s history.
While “git reflog” is very beneficial for recovering deleted branches and commits, it does have certain disadvantages. Reference logs, for example, are saved locally, so they can’t be pushed or pulled from a remote repository. To preserve disk space, they usually expire or are wiped after a specific period.
How to use git reflog
Basic git actions like commit, branch, reset, rebase, and merge are included in the reflog. The most basic git eflog example use case is invoking: “git reflog”
You may need to backtrack your route if you make adjustments while working along or across branches. To undo the modifications, several commits are used, including the most damaging ones like the reset command.
There are three steps to the reset command: hard, soft, and mixed. A hard reset clears the disk of all commits and linked files. The soft reset restores the HEAD to the index, whereas the mixed reset restores the file to its original state.
Restore deleted branches
Let’s imagine you had the main branch and then used the command “git branch example1” to create a new branch named example1. Then you used “git branch -d example1” to mistakenly remove this branch. At this point, you either quickly recognize the error (for example, deleting another branch instead of the desired one) because that was the last action you took in your terminal, or you don’t know you deleted the wrong branch at all until later.
Then run the command ‘git checkout sha value>’. This command will direct the HEAD to the commit with the supplied SHA value. This will result in the previously mentioned disconnected HEAD condition.
Execute the command ‘git checkout -b branch name>’ after that. The HEAD pointer will point to the new branch, which will be created from that commit.
If you’ve misplaced the message, use ‘git reflog’ to locate the SHA of the commit that was at the end of the removed branch. Make sure your commits are correctly named so you can discover them quickly.
The procedure for restoring a deleted commit is rather straightforward. All you have to do is use “git reflog” to get the SHA value of the commit you want to revert to, and then run ‘git reset —hard’. Remember that this command will erase any modifications to your working directory that have not yet been committed, so use it with caution.