Situation
- I have 2 local branches A and B.
- I have 2 remote branches C and D.
- The name of my remote is origin.
- If I want to push changes from my branch B to remote branch D, what should be the git push syntax? I am confused among the following options
- git push origin B:D
- git push origin B/D
- git push origin B
- git push origin D
Please help me in understanding the correct git push syntax as well as its meaning
CodePudding user response:
The technical description for this syntax is in the Git manual under "The Refspec" and the argument description of git push
, but the short version is that there are two common formats:
- A pair of branch names in the form
source:destination
, e.g.git push origin B:D
means "source is the local branchB
; destination is the remote branchD
". - A single branch name, which is (unless configured specially) shorthand for
source
anddestination
having the same name, e.g.git push origin B
is the same asgit push origin B:B
, and means "source is the local branchB
; destination is the remote branchB
".
Specifying B/D
would look for a branch with that name, e.g. some projects have naming conventions like "username/task-number"). However, you may be confusing it with "remote tracking branches", which take the form "remote-name/remote-branch-name", such as "origin/D"; you wouldn't normally be using those in a git push
command.