Git push
在使用git commit命令將修改從暫存區(qū)提交到本地版本庫后,只剩下最后一步將本地版本庫的分支推送到遠程服務器上對應的分支了,如果不清楚版本庫的構(gòu)成,可以查看我的另一篇,git 倉庫的基本結(jié)構(gòu)。
git push的一般形式為 git push <遠程主機名> <本地分支名> <遠程分支名> ,例如 git push origin master:refs/for/master ,即是將本地的master分支推送到遠程主機origin上的對應master分支, origin 是遠程主機名,遠程分支名>本地分支名>遠程主機名>
第一個master是本地分支名,第二個master是遠程分支名。
1.1 git push origin master
如果遠程分支被省略,如上則表示將本地分支推送到與之存在追蹤關(guān)系的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建
1.2 git push origin :refs/for/master
如果省略本地分支名,則表示刪除指定的遠程分支,因為這等同于推送一個空的本地分支到遠程分支,等同于 git push origin --delete master
1.3 git push origin
如果當前分支與遠程分支存在追蹤關(guān)系,則本地分支和遠程分支都可以省略,將當前分支推送到origin主機的對應分支
1.4 git push
如果當前分支只有一個遠程分支,那么主機名都可以省略,形如 git push,可以使用git branch -r ,查看遠程的分支名
1.5 git push 的其他命令
這幾個常見的用法已足以滿足我們?nèi)粘i_發(fā)的使用了,還有幾個擴展的用法,如下:
?。?) git push -u origin master 如果當前分支與多個主機存在追蹤關(guān)系,則可以使用 -u 參數(shù)指定一個默認主機,這樣后面就可以不加任何參數(shù)使用git push,
不帶任何參數(shù)的git push,默認只推送當前分支,這叫做simple方式,還有一種matching方式,會推送所有有對應的遠程分支的本地分支, Git 2.0之前默認使用matching,現(xiàn)在改為simple方式
如果想更改設(shè)置,可以使用git config命令。git config --global push.default matching OR git config --global push.default simple;可以使用git config -l 查看配置
?。?) git push --all origin 當遇到這種情況就是不管是否存在對應的遠程分支,將本地的所有分支都推送到遠程主機,這時需要 -all 選項
?。?) git push --force origin git push的時候需要本地先git pull更新到跟服務器版本一致,如果本地版本庫比遠程服務器上的低,那么一般會提示你git pull更新,如果一定要提交,那么可以使用這個命令。
?。?) git push origin --tags //git push 的時候不會推送分支,如果一定要推送標簽的話那么可以使用這個命令
1.6 關(guān)于 refs/for
// refs/for 的意義在于我們提交代碼到服務器之后是需要經(jīng)過code review 之后才能進行merge的,而refs/heads 不需要