P_M
P_M

Reputation: 2942

Eclipse Egit. Checkout creates new commit. Why?

As I understand GIT, when I checkout on commit, I should get its files copy in my work directory, but no new commit should appear. Though when I use EGit and checkout on commit I see new commit in reflog. Why? As I understand checkout should not create new commit. Right?

Here I right click on commit and choose checkout

enter image description here

Then I get new commit in reflog:

enter image description here

So now I have few commits in my local master, but I never asked to do them.

Git integration for Eclipse - Task focused interface 4.6.1.201703071140-r org.eclipse.egit.mylyn.feature.group Eclipse EGit

Upvotes: 0

Views: 211

Answers (2)

howlger
howlger

Reputation: 34165

You have to work with the History view instead of with the Git Reflog view (see git reflog and toniedzwiedz's answer for details):

  1. Tell the History view which history should be shown: e. g. in Git Repositories view right-click a repository and choose: Show In > History.
  2. In the History view enable the option Show All Branches and Tags (right button in the view toolbar). Otherwise, only commits of the current branch are displayed.

Upvotes: 2

toniedzwiedz
toniedzwiedz

Reputation: 18563

You don't see a new commit in the reflog. What you see is an updated position of HEAD. You changed it to commit 4b0d96a when you checked it out. When you check out another commit, branch or a tag, you'll see yet another entry appear in the reflog.

Try switching between two branches repeatedly and you'll see the same two commit hashes appended to the reflog again and again. This does not mean you're creating new commits. You just see existing commits being logged as recent commits pointed to by the HEAD pointer.

From the git reflog docs:

This command manages the information recorded in the reflogs.

The "show" subcommand (which is also the default, in the absence of any subcommands) shows the log of the reference provided in the command-line (or HEAD, by default). The reflog covers all recent actions, and in addition the HEAD reflog records branch switching. git reflog show is an alias for git log -g --abbrev-commit --pretty=oneline; see git-log for more information.

You may also find this chapter of the Pro Git book interesting. It offers a more comprehensible description of what git reflog does.

Upvotes: 2

Related Questions