1. 介紹
git 官網(wǎng)介紹:
git push 用于更新遠程引用以及關聯(lián)對象,使用本地 refs 更新遠程 refs,同時發(fā)送完成給定 refs 所需的對象
通俗來講:
git push 用于將本地分支或標簽的更新推送到到遠程主機,也可以用于刪除遠程分支和標簽
2. 語法
語法格式
git push <遠程主機名> <本地分支名>:<遠程分支名>
遠程主機名指的是 git 倉庫地址,也可以使用 git remote add
設置的 url 別名替代倉庫地址
# 將本地的 master 分支推送到遠程 dev 分支
git push https://gitee.com/holyking/test.git master:dev
# 添加遠程庫別名配置
git remote add origin https://gitee.com/holyking/test.git
git push origin master:dev
如果本地分支名和遠程分支名相同,則可以省略遠程分支名
# 下面兩個命令等價,將本地 master 分支推送到遠程 master 分支
git push origin master:master
git push origin master
3. 推送分支到遠程庫
眾所周知,本地分支推送到遠程庫可以使用
git push origin master
每次推送代碼都要寫 origin master
會很麻煩,那么有沒有辦法可以省略掉它呢 ?當然是有的
先來試一下省略掉它去執(zhí)行命令,會是什么結果 ?
$ git push
fatal: The current branch master has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin master
執(zhí)行下面命令,你會看到這樣的一段輸出【沒有 [origin/master]】
$ git branch -vv
* master 2c0a0cd first commit
解決方案: 推送代碼時使用 -u, --set-upstream
參數(shù)將本次推送的遠程分支設置為本地分支的上游分支即可
# --set-upstream 可簡寫為 -u
git push --set-upstream origin master
加了 -u
參數(shù)推送成功后,再執(zhí)行下面命令會發(fā)現(xiàn)多了一項內(nèi)容: [origin/master]
推送代碼時 -u
參數(shù)給本地分支設置了上游分支。當再次推送代碼時,如果沒有指定推送到哪里,自動推送到上游分支
$ git branch -vv
* master 2c0a0cd [origin/master] first commit
有時需要將本地分支強制推送到遠程分支,比如:本地分支和遠程分支代碼不一致且無法合并,但已確認本地是最新的代碼
# -f, --force 強制將本地分支推送到遠程分支,俗稱: 強推
git push --force origin <branch>
將所有分支推送到遠程倉庫
# 命令格式
git push [-u] <remote> --all
# 將本地所有分支推送到遠程庫
git push origin --all
# 將本地所有分支推送到遠程庫,并且設置上游分支
git push -u origin --all
4. 刪除遠程庫內(nèi)容
刪除遠程分支
# --delete 參數(shù)可簡寫為 -d
git push origin --delete <branch>
# 我更喜歡將參數(shù)放在 origin 的前面
git push -d origin <branch>
# 也可以這樣執(zhí)行,作用是一樣的
git push origin :<branch>
刪除遠程分支后一般也需要刪除本地分支
git branch -d <branch>
刪除遠程主機中的標簽
git push -d origin <tagname>
5. 推送到多個遠程庫
以 gitee、github 為例,很多開源項目會同時推送到這兩個代碼托管平臺
第一步:添加兩個遠程源
git remote add gitee git@gitee.com:u1s1it/summary.git
git remote add github git@github.com:u1s1it/summary.git
第二步:將本地倉庫推送到兩個遠程庫
git push gitee master && git push github master
命令太長了,不方便使用,推薦定義命令別名
Zsh 終端配置
alias geh="git push gitee \$(git_current_branch) && git push github \$(git_current_branch)"
6. git push 用法總結
# 將分支或標簽推送到遠程庫
git push [remote] [branch]/[tabname]
# 將分支推送到遠程庫,并設置為上游分支
git push -u [remote] [branch]
# 將分支強制推送到遠程庫
git push -f [remote] [branch]
# 將所有分支推送到遠程庫, -u 是可選的
git push -u [remote] --all
# 刪除遠程庫的分支或標簽
git push [remote] :[branch]/[tabname]