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