前两天做OS实验,又被一波Git操作迷倒,想来还是自己理解上不够细致,总结一下关于远程操作Git push和Git pull的知识。
git push
一、git push使用本地的对应分支来更新对应的远程分支。
1 git push <远程主机名称> <本地分支名称>:<远程分支名称> 、
注意:本地分支名称是指要被推送到远端的分支,而远程分支是指推送的远程主机的其中一个目标分支。
二、区别
a. git push origin master b. git push origin :master
c. git push origin
d. git push
e. git push -u origin master
f. git push --all origin
g. git push --force origin
1.省略远程分支名称
如果省略远程分支名,则表示将本地分支推送到与之存在“追踪关系”的远程分支(通常二者同名),如果该远程分支不存在,则会被新建。
a中,被省略的是冒号和后面的远程分支名称,这句话的意思是:将本地的master分支推送到origin主机上的master分支,如果后者不存在便创建一个新的master的远程master分支。
2.省略本地分支名称
如果省略本地分支名称,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支。
b中命令是删除远程master分支。它等同于git push origin --delete master
3.省略本地分支和远程分支名
如果当前分支和远程分支之间都存在追踪关系,那么两者是都可以不加任何参数的。
4.省略主机名
如果当前分支只有一个追踪分支,那么主机名都可以省略。
5.使用默认主机名
如果当前分支与多个主机存在追踪关系,则可以使用-u来指定一个默认主机,这样后面就可以使用直接使用git push.
6.将所有本地分支都推送到origin主机
可以使用--all选项将所有的本地分支进行推送。
7.强制推送
如果远程主机的版本比本地的版本要新,推送是Git会报错,要求现在本地做Git pull 合并差异,然后在推送到远程主机。这时候如果想要强制推送的话可以使用-force。(强制推送会导致主机产生一个non-fast-forward merge的合并,不确定的情况下不推荐使用。)
git pull
git pull获取合并其他的厂库,或者本地的其他分支。
git pull <远程主机> <远程分支>:<本地分支>
例如:
git pull origin master:lab2
意思是将origin主机上的master分支拉到本地的lab2分支上。
其他类似。