28

I have two branches 'master' and 'develop', I create a new branch from master that 'hotfix-1' and then I merge 'hotfix-1' back to master with ;

git checkout master
git merge --no-ff hotfix-1

Created a tag for this point;

git tag -a hotfix-1 -m ""

and then I switched back to develop branch from master and merge 'hotfix-1' with ;

git checkout develop
git merge --no-ff hotfix-1

after merging 'hotfix-1' to develop I'm getting "warning: refname 'hotfix-1' is ambiguous" message and it's successfully merging my changes to develop too.. should I worry about anything ?

Edit

git show-ref --heads --tags

d97bfc563749918799d4659c43f7bffd29cf4d60 refs/heads/develop
594ea85c94f8321d372779ed3dbd5df07bdb059b refs/heads/master
ffc897f8ab19510d5ff4c67969d0f0cb97d1c4f3 refs/tags/beta-1.0
490a8c80ecec70fd2268aa0c2ad7a9beb6bf491c refs/tags/beta-1.1
644adadb43744ad1d2e0f13fc37abb6906520f8f refs/tags/hotfix-1.0.1
4c49e8d9ddc8d601ed794f307e1c29acfc84b31b refs/tags/release-1.0
Nande kore
  • 784
  • 1
  • 8
  • 16

3 Answers3

34

From your original question it looks like you have a tag and a branch named hotfix-1. Of course, their actual names are refs/tags/hotfix-1 and refs/heads/hotfix-1 respectively, but Git allows you to use the shorthand, which in this case is ambiguous since Git allows you to use any committish in the git merge statement. In fact, when I tested this scenario, Git merged the tag, and not the branch.

When looking at your git show-ref --heads --tags output it is unclear, though, since there only a tag named hotfix-1.0.1, and no branch with the same name. It looks like you may have changed things subsequently.

Joseph K. Strauss
  • 4,683
  • 1
  • 23
  • 40
14

Here's an example where what Joseph's assumption about what happened actually happened to us.

git merge BranchyBranch_r2.1 warning: refname 'BranchyBranch_r2.1' is ambiguous.

There actually is both a tag and a branch of the same name (BranchyBranch_r2.1), and on top of that, someone tried to alleviate the problem by aliasing the tag that duplicated the branch.

git show-ref --heads --tags ac729d902578378557f9f20dbd415c5748a23230 refs/heads/BranchyBranch_r2.1 9f3d242e03837fd33f8355005e9edbee89367bef refs/heads/develop 5995987876e6a2315544bd774b546ed561f78a53 refs/heads/master df26c94be018268e2897807c0750b5c66150750b refs/tags/BranchyBranch_r2.1 df26c94be018268e2897807c0750b5c66150750b refs/tags/BranchyBranch_r2.1Tag

If you refer to the branch by its fully qualified name, then you can proceed.

git merge refs/heads/BranchyBranch_r2.1

Ben Butzer
  • 915
  • 10
  • 24
  • Thank you! That's exactly what I was looking for. I had a tag with the same name of the branch, and that couldn’t allow me to pull the branch and it always says that I have the latest changes already. But in fact, it was fetching the tag, not the branch. So I deleted the tag and all went fine. – Hassen Ch. Mar 30 '20 at 11:37
0

Incase if you have the branch and a tag with same name of a repository better to create a new branch / tag from the revision number.

git checkout -b {new_branch_name} {revision}