Ahmad Shirzadi
Ahmad Shirzadi
خواندن ۱ دقیقه·۵ سال پیش

difference between origin/branch_name and branch_name

there are different types of branches:

  • local branches, i.e. branches you commit to,
  • Branches that live in a remote repository, for lack of a better term.
  • Remote-tracking branches. Also simply called remote branches, as in the Pro Git book, but I find this phrase confusing; remote-tracking branch is more accurate. They're special local branches whose sole purpose is to reflect the state of branches that live in a remote repository at the time of your last communication with the server. In particular, you can't commit to branches of this type.

Here, branch_name is a local branch, whereas origin/branch_name is a remote-tracking branch; it reflects the state of the corresponding branch that lives in origin.

Right after running

git fetch

the remote-tracking branch origin/master and the corresponding branch that live in origin should be perfectly in sync (modulo concurrent pushes to the remote server, of course). It shouldn't be a surprise, then, that

git push origin origin/branch_name

doesn't push anything: you're essentially attempting to push stuff that is already present in the ancestry of the corresponding branch that live in origin .

However, if your local branch, branch_name, is ahead by one or more commits,

then running

git push origin branch_name

will push the commits contained in branch_name but not in the branch that live in origin:


gitoriginbranchgithubcommit
Proven communication, problem-solving, and technical skills, eager to learn and enjoy work, seeking backend developer role at company, praised for hard work and commitment to company goals.
شاید از این پست‌ها خوشتان بیاید