89

EGit strikes again. I made the mistake of trying to switch to a different branch in EGit and it somehow messed up and checked out no branch. I then made a commit to this non-branch, and then when I realized I wasn't tracking the right branch, I ran the following:

$ git checkout issue2
Warning: you are leaving 1 commit behind, not connected to any of your branches:

    bada553d My commit message

If you want to keep them by creating a new branch, this may be a good time to do so with:

    git branch new_branch_name ....

Branch issue2 set up to track remote branch issue2 from origin.
Switched to a new branch issue2. 

Now that I've botched things, how do I associate that commit with my current branch? I'm not interested in creating a brand new branch, I just want to pull that commit into my branch, issue2.

Adam Dymitruk
  • 124,556
  • 26
  • 146
  • 141
Naftuli Kay
  • 87,710
  • 93
  • 269
  • 411

3 Answers3

137

you can git cherry-pick bada553d if it's just the one commit.

You can also reference anywhere you've been by using the reflog:

git reflog

then use one of those commits:

git checkout -b temp HEAD@{3}

to checkout and make a branch temp from where your current commit was 3 "times" ago. It's a bread crumb of where you used to be.

Adam Dymitruk
  • 124,556
  • 26
  • 146
  • 141
  • 1
    How to delete commit like this which is not required? – Shubham Chadokar Dec 17 '19 at 09:16
  • If you don't give it a name, like a branch or tag, it'll eventually be deleted by git's garbage collector. – Jim Oct 07 '20 at 18:27
  • For multiple commits you can [cherry pick](https://www.tollmanz.com/git-cherry-pick-range/) [a](/a/1994491) range using `git cherry-pick ebe6942^..905e279` – cachius May 23 '23 at 08:38
16

If you just want to associate that commit with your current branch, you can simply do this

  1. Run this command to create a new branch with that commit

    git branch temp {commit's SHA}

  2. Then simply merge this commit with your current branch

    git merge temp

  3. Now just delete the temporary new branch we created

    git branch -d temp

Anmol Ahuja
  • 161
  • 1
  • 3
0

Also you can just apply tag to your commit after using git reflog when you'll know commit's hash:

 Git tag <tag's_name>  <commit's_hash>/HEAD@{<commit's_num>}