远程分支
当我们新建一个分支,并执行push操作时:
git checkout -b dev
git push
fatal: The current branch dev has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin dev
提示我们当前分支没有对应的上游分支(远程分支),可以执行git push --set-upstream origin dev
命令,把当前分支推送到远程,并在远程创建一个同名的(dev)分支。把远程分支和本地分支对应上。即把远程的dev当做本地dev的upstream。
git push -u origin dev 和 git push --set-upstream origin dev 效果一样
git push --set-upstream origin dev
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote: Create a pull request for 'dev' on GitHub by visiting:
remote: https://github.com/ningcg/learngit/pull/new/dev
remote:
To https://github.com/ningcg/learngit.git
* [new branch] dev -> dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.
当另一个人git pull 拉取的时候会把当前远程分支拉取回去。
git branch -av
* master 79ae122 stash
remotes/origin/HEAD -> origin/master
remotes/origin/dev 79ae122 stash
remotes/origin/master 79ae122 stash
但对应的本地dev分支并没有。
需要通过git checkout -b dev origin/dev
创建对应的本地分支。
git checkout --track origin/dev
和git checkout -b dev origin/dev
效果一样。
git push 的完整形态: git push origin src:dest
删除远程分支,两种方法:
- git push origin :dev
- git push origin --delete dev
重命名远程分支,只能先删除远程分支,改本地分支名后再推送到远程。
小结
- push操作的完整命令是:git push origin srcBranch:destBranch
- pull操作的完整命令是:git pull origin srcBranch:destBranch
- HEAD标记:HEAD文件是一个指向你当前所在分支的引用标识符,该文件内部并不包含SHA-1值,而是一个指向另外一个引用的指针
- 当执行git commit命令时,git会创建一个commit对象,并且将这个commit对象的parent指针设置为HEAD所指向的引用的SHA-1值
- 我们对于HEAD修改的任何操作,都会被git reflog完整记录下来
- 实际上,我们可以通过git底层命令symbolic—ref来实现对HEAD文件内容的修改