git push 命令詳解

作者:辰風沐陽 閱讀:1127 發(fā)布時間:2022-04-18 上次更新:2023-12-14

1. 介紹


git 官網(wǎng)介紹:

git push 用于更新遠程引用以及關聯(lián)對象,使用本地 refs 更新遠程 refs,同時發(fā)送完成給定 refs 所需的對象

通俗來講:

git push 用于將本地分支或標簽的更新推送到到遠程主機,也可以用于刪除遠程分支和標簽

2. 語法


語法格式

  1. git push <遠程主機名> <本地分支名>:<遠程分支名>

遠程主機名指的是 git 倉庫地址,也可以使用 git remote add 設置的 url 別名替代倉庫地址

  1. # 將本地的 master 分支推送到遠程 dev 分支
  2. git push https://gitee.com/holyking/test.git master:dev
  3. # 添加遠程庫別名配置
  4. git remote add origin https://gitee.com/holyking/test.git
  5. git push origin master:dev

如果本地分支名和遠程分支名相同,則可以省略遠程分支名

  1. # 下面兩個命令等價,將本地 master 分支推送到遠程 master 分支
  2. git push origin master:master
  3. git push origin master

3. 推送分支到遠程庫


眾所周知,本地分支推送到遠程庫可以使用

  1. git push origin master

每次推送代碼都要寫 origin master 會很麻煩,那么有沒有辦法可以省略掉它呢 ?當然是有的

先來試一下省略掉它去執(zhí)行命令,會是什么結果 ?

  1. $ git push
  2. fatal: The current branch master has no upstream branch.
  3. To push the current branch and set the remote as upstream, use
  4. git push --set-upstream origin master

執(zhí)行下面命令,你會看到這樣的一段輸出【沒有 [origin/master]】

  1. $ git branch -vv
  2. * master 2c0a0cd first commit

解決方案: 推送代碼時使用 -u, --set-upstream 參數(shù)將本次推送的遠程分支設置為本地分支的上游分支即可

  1. # --set-upstream 可簡寫為 -u
  2. git push --set-upstream origin master

加了 -u 參數(shù)推送成功后,再執(zhí)行下面命令會發(fā)現(xiàn)多了一項內(nèi)容: [origin/master]

推送代碼時 -u 參數(shù)給本地分支設置了上游分支。當再次推送代碼時,如果沒有指定推送到哪里,自動推送到上游分支

  1. $ git branch -vv
  2. * master 2c0a0cd [origin/master] first commit

有時需要將本地分支強制推送到遠程分支,比如:本地分支和遠程分支代碼不一致且無法合并,但已確認本地是最新的代碼

  1. # -f, --force 強制將本地分支推送到遠程分支,俗稱: 強推
  2. git push --force origin <branch>

將所有分支推送到遠程倉庫

  1. # 命令格式
  2. git push [-u] <remote> --all
  3. # 將本地所有分支推送到遠程庫
  4. git push origin --all
  5. # 將本地所有分支推送到遠程庫,并且設置上游分支
  6. git push -u origin --all

4. 刪除遠程庫內(nèi)容


刪除遠程分支

  1. # --delete 參數(shù)可簡寫為 -d
  2. git push origin --delete <branch>
  3. # 我更喜歡將參數(shù)放在 origin 的前面
  4. git push -d origin <branch>
  5. # 也可以這樣執(zhí)行,作用是一樣的
  6. git push origin :<branch>

刪除遠程分支后一般也需要刪除本地分支

  1. git branch -d <branch>

刪除遠程主機中的標簽

  1. git push -d origin <tagname>

5. 推送到多個遠程庫


以 gitee、github 為例,很多開源項目會同時推送到這兩個代碼托管平臺

第一步:添加兩個遠程源

  1. git remote add gitee git@gitee.com:u1s1it/summary.git
  2. git remote add github git@github.com:u1s1it/summary.git

第二步:將本地倉庫推送到兩個遠程庫

  1. git push gitee master && git push github master

命令太長了,不方便使用,推薦定義命令別名

Zsh 終端配置

  1. alias geh="git push gitee \$(git_current_branch) && git push github \$(git_current_branch)"

6. git push 用法總結


  1. # 將分支或標簽推送到遠程庫
  2. git push [remote] [branch]/[tabname]
  3. # 將分支推送到遠程庫,并設置為上游分支
  4. git push -u [remote] [branch]
  5. # 將分支強制推送到遠程庫
  6. git push -f [remote] [branch]
  7. # 將所有分支推送到遠程庫, -u 是可選的
  8. git push -u [remote] --all
  9. # 刪除遠程庫的分支或標簽
  10. git push [remote] :[branch]/[tabname]

標簽: git