git push 的使用

關於git push 命令

  • git push 命令用於將本地分支的更新,推送到遠程主機 它的格式與git pull命令相仿
    $ git push <遠程主機名> <本地分支名>:<遠程分支名>
  • 注意 分支推送順序的寫法是 <來源地>:<目的地>
    • 所以git pull 是<遠程分支>:<本地分支> 而git push 是<本地分支>:<遠程分支>

  • 如果省略遠程分支名,則表示將本地分支推送與之存在”追蹤關係”的遠程分支(通常兩者同名)
  • 如果該遠程分支不存在,則會被新建
    $ git push origin master
  • 上面命令表示
    • 將本地的master分支 推送到origin主機的master分支 如果後者不存在,則會被新建

  • 如果省略本地分支名,則表示刪除指定的遠程分支,因爲這等同於推送一個空的本地分支到遠程分支
   $ git push origin :master
   // 等同於
   $ git push origin --delete master
  • 上面命令表示
    • 刪除origin主機的master分支

  • 如果當前分支與遠程分支之間存在追蹤關係,則本地分支和遠程分支都可以省略
   $ git push origin
  • 上面命令表示
    • 將當前分支推送到origin主機的對應分支

  • 如果當前分支只有一個追蹤分支,那麼主機名都可以省略
   $ git push

  • 如果當前分支與多個主機存在追蹤關係 則可以使用-u選項指定一個默認主機
  • 這樣後面就可以不加任何參數使用git push
   $ git push -u origin master
  • 上面命令表示
    • 將本地的master分支推送到origin主機 同時指定origin爲默認主機
    • 後面就可以不加任何參數使用git push

  • 不帶任何參數的git push 默認只推送當前分支 這叫做simple方式
  • 此外 還有一種matching方式 會推送所有有對應的遠程分支的本地分支
  • git 2.0版本之前,默認採用matching方法,現在改爲默認採用simple方式
  • 如果要修改這個設置,可以採用git config命令
   $ git config --global push.default matching
   // 或者
   $ git config --global push.default simple

  • 還有一種情況 就是不管是否存在對應的遠程分支 將本地的所有分支都推送到遠程主機 這時需要使用--all選項
   $ git push --all origin
  • 上面命令表示
    • 將所有本地分支都推送到origin主機
    • 除非特殊情況 我不太建議用這種方式

  • 如果遠程主機的版本比本地版本新 推送時git會報錯 會要求先在本地做git pull合併差異
  • 然後再推送到遠程主機 這時,如果你一定要推送,可以使用--force選項
   $ git push --force origin
  • 上面命令使用 --force 選項
    • 結果導致在遠程主機產生一個”非直進式”的合併(non-fast-forward merge)
    • 除非你很確定要這樣做 否則應該儘量避免使用--force選項
    • 目前accuvally嚴禁使用這種方式 如有需要 需要整個team商議決定

  • 最後 git push 不會推送標籤(tag),需要明確推送tag名或使用--tags選項
   $ git push origin v1.0 // v1.0 是個tag
   // 或者
   $ git push origin --tags

發佈了30 篇原創文章 · 獲贊 1 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章