git高級命令總結版

目錄

一、洞悉[1]

本地分支與遠程倉庫聯(lián)系關系總結

  • 查看默認追蹤:
  1. git config --list拉到底下會看到所有遠程倉庫所有默認追蹤【有則顯示】
  2. git status 工作區(qū)干凈情況下,底下可以看到當前分支的默認追蹤【有則顯示】
  3. git branch -vv 所有本地分支所有默認追蹤【有則顯示】所有分支提交的信息
  • 綁定及修改默認追蹤(特別是對于多個遠程倉庫)
  1. 綁定: push時,綁定:git push -u 主機名 本地分支:遠程分支
    【優(yōu)點】遠程倉庫可以不存在時也可以操作
    【缺點】會附帶push
    【總結】綁定
  2. 修改: git branch --set-upstream-to=主機名/遠程分支 本地分支
    【優(yōu)點】沒有副作用
    【缺點】必須要有該遠程分支(因為只有push能修改遠程分支)
    【總結】修改(特別適合多倉庫時,切換追蹤查看情況)

--set-upstream-to在pull時,如果沒有默認追蹤,則會提示這個命令

  • 查看所有分支:及同步遠程分支
  1. git branch -vv 所有本地分支所有默認追蹤【有則顯示】
  2. git branch -a 所有本地分支所有遠程倉庫及分支

同步遠程分支---說明

  • git branch只能知道遠程最后一次更新下來后的遠程分支(pull/fetch或clone)及自己后續(xù)對遠程分支的操作。但其它同事的遠程分支操作并沒有更新到下來
  • 可能同事A刪除了遠程某個分支,則會和自己本地顯示的遠程分支不同步

解決方法

  1. git pull/fetch
    【優(yōu)點】拉取的時候會自動更新該遠程倉庫的分支
    【缺點】不及時,且拉取的只是該遠程倉庫的的分支
    【總結】自動同步
  2. git remote update
    【優(yōu)點】會更新所有遠程倉庫的分支
    【缺點】和原來本地保留的遠程分支或操作。即:只會添加,不會去掉遠程不存在的遠程分支。查看文章
    【總結】手動同步,且要保留之前的遠程分支
  3. git remote update -p|--prune 主機名
    【優(yōu)點】 和原來本地保留的遠程分支并操作。即和遠程完全一樣,會剔除掉不存在的遠程分支。
    【缺點】只會更新該遠程倉庫的分支
    【相同命令】git remote prune 主機名查看文章
    【總結】手動同步,且要和遠程倉庫保持一致
  • 查看所有遠程倉庫:
  1. git remote -vv 所有遠程倉庫
  2. git remote show 主機名 一個個主機查看,可以查看遠程倉庫及分支,及該倉庫對應本地的所有默認追蹤【有則顯示】

二、工作順序[2]

  • 【正確的工作順序】
    【總結】 工作前git pullpush前,git pull
    【總結】多用git status
    【總結】多用git diff
  1. 工作前git pull。同事A,先git pull 主機名 遠程分支:本地分支 或簡寫
  2. git status。因為:
  • 如果工作區(qū)干凈,git pull則會直接更新到工作區(qū)
  • 如果工作區(qū)進行了操作,則會更新到暫存區(qū),此時git status會發(fā)現(xiàn)和暫存區(qū)不一樣。并且會提示你是丟棄工作區(qū)還是保留。
    若保留:直到你git commit ,后會自動進入merge解決沖突操作。最后push即可
  1. 開始工作
  2. push前,再git pull,若有沖突,解決沖突,再push
  3. 同事B工作前,也是以上步驟

說明

  1. pull可能會有沖突:若工作區(qū)不干凈,git commit后自動進入
  2. push可能會有沖突:若有沖突,自動進入

三、常用命令總結[3]

  • 初始化倉庫:git init

  • 增刪改查配置:git config

基本格式:git config [--local|--global|--system]

  • 增:--add section.key value
  • 刪:--unset {key}、--unset {key} value、--unset-all {key}
  • 改:section.key value
  • 查:{key}、--get-all {key}--list
  • 編輯:--edit

  • 提交到暫存區(qū):git add [<file>|<path>] 可以簡寫 git add . 說明:.表示根目錄(以下path都可以.)

后悔藥:

  • git rm --cached [<file>]撤銷追蹤
  • git checkout -- [<file>|<path>]從暫存區(qū)重置到工作區(qū)(工作區(qū)撤銷修改
  • git reset HEAD [<file>|<path>]從版本庫重置到暫存區(qū)(暫存區(qū)撤銷修改)

補充:

  • 好習慣:add前,查看工作區(qū)和暫存區(qū)的區(qū)別git diff
  • 好習慣:每次操作后,git status查看git狀態(tài)

  • 提交到版本庫:git commit -m '這次提交的說明'

后悔藥:

  • git reset --hard HEAD^ 版本回退
    對比暫存區(qū)及工作區(qū)的重置:因為版本庫有多個版本,所以可以選擇重置到哪個版本

說明:提交到遠程倉庫前,都有后悔藥(遠程倉庫版本個人沒權限修改)

補充:

  • 好習慣:commit前,查看暫存區(qū)和版本庫的區(qū)別git diff --cached

  • 查看提交歷史:$ git log (版本庫中往前查:已刪除的或往后的查不到)

相關操作:

  • $ git reflog 查看提交日志(本地提交記錄查:這臺電腦所有的提交)

  • 增刪改查本地分支:git branch
  • 增:$ git branch <BranchName>
  • 刪:$ git branch -d <BranchName>說明:-d即delete刪除
  • 改:$ git branch -m <old_branchName> <new_branchName>說明:-m即modify修改
  • 查:git branch、git branch -a、git branch -vv

  • git diff 比較差異:
  • 工作區(qū)和暫存區(qū)比較:git diff
  • 暫存區(qū)和版本庫比較:git diff --cached
  • 版本庫和遠程倉庫比較:git diff 本地分支 <remote>/遠程分支
  • 分支比較:git diff 分支1 分支2

把結果輸出到指定文件:后面加 >>文件名.diff


  • 提交到遠程倉庫: git push
  • 完整命令:git push 主機名 本地分支:遠程分支
  • 簡化:git push需要設置默認的主機(遠程分支默認和本地分支同名)
    $ git push --set-upstream|-u <remote> 本地分支:遠程分支
  • 若不同名,要設置: git config --global push.default upstream

通過以上命令可以發(fā)現(xiàn):git push也可以修改遠程分支

  • 增:git push 主機名 本地分支:遠程分支
  • 刪:git push 主機名 :遠程分支
  • 改:先刪,在增
  • 查:同branch命令:git branch -a、git branch -vv

  • 拉取更新 git pullgit fetch

完整命令:
$ git pull 主機名 <遠程分支名>:<本地分支名>
$ git fetch 主機名 <遠程分支名>:<本地分支名>


區(qū)別:git pullgit fetch的區(qū)別
查看文章


  • 克隆項目 git clone <remote_url>

  • 倉庫命令 $ git remote
  • 增:git remote add [shortname] [url]
  • 刪:git remote remove <name>
  • 改名字:git remote rename <old> <new>
    改網(wǎng)址: git remote set-url <name> <newurl>]
    改網(wǎng)址(增):git remote set-url --add <name> <newurl>]可以push多個倉庫
  • 查:git remote、git remote -v、git remote show 主機名
  • 更新遠程分支:git remote updategit remote update -p|--prune <remote>、git prune <remote>

  • 合并分支
  • Fast-forward(ff)模式: git merge -ff other_branch
    簡寫 git merge other_branch
  • --no-ff模式:git merge --no-ff -m '提交信息' other_branch

  • 本地緩存:將工作區(qū)和暫存區(qū)緩存起來。并使其重置為上次提交后的狀態(tài)
  • 增:git stash push -m '這次緩存的信息'
  • 刪:c drop <stash_index>git stash drop刪除棧頂
    全刪:git stash clear
  • 應用:git stash [apply|pop] <stash_name>git stash [apply|pop] 應用棧頂那個
  • 查:$ git stash list

  1. 跳轉到洞悉 ?

  2. 跳轉到工作順序 ?

  3. 跳轉到常用命令總結 ?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容