1. 新建代碼庫
# 初始化本地倉庫狂票,在當(dāng)前目錄下生成 .git 文件夾
$ git init
# 默認(rèn)在當(dāng)前目錄下創(chuàng)建和版本庫名相同的文件夾并下載版本到該文件夾下
$ git clone <remote-url>
# 指定本地倉庫的目錄
$ git clone <remote-url> <local-file-path>
# -b 指定要克隆的分支或tag姨伤,默認(rèn)是master分支
$ git clone <remote-url> -b <remote-branch-name> <local-file-path>
# --depth 指定克隆深度,很多時(shí)候我們并不需要將一個(gè)倉庫下的所有歷史全部拉下來绢馍,而是只需要最新的代碼羹膳,這個(gè)時(shí)候就可以用該參數(shù)來控制
# 需要該倉庫下的最新代碼:git clone git@gitlab... --depth 1
$ git clone <remote-url> --depth 1
# 克隆帶主倉庫睡互,并遞歸初始化和更新依賴子模塊
$ git clone --recurse-submodules <remote-url>
參考資料:Git 基礎(chǔ) - 遠(yuǎn)程倉庫的使用
2. 操作遠(yuǎn)程庫
# 列出已經(jīng)存在的遠(yuǎn)程倉庫
$ git remote
# 列出遠(yuǎn)程倉庫的詳細(xì)信息,在別名后面列出URL地址
$ git remote -v
# 添加遠(yuǎn)程倉庫
$ git remote add <remote-name> <remote-url>
# 修改遠(yuǎn)程倉庫的別名
$ git remote rename <origin-name> <new-name>
# 修改遠(yuǎn)程倉庫的 URL 地址
$ git remote set-url <remote-name> <new-remote-url>
3. 狀態(tài)查看及變更
# 查看本地倉庫的狀態(tài)
$ git status
# 以簡短模式查看本地倉庫的狀態(tài)
# 會(huì)顯示兩列陵像,第一列是文件的狀態(tài)就珠,第二列是對(duì)應(yīng)的文件
# 文件狀態(tài):A 新增,M 修改醒颖,D 刪除妻怎,?? 未添加到Git中
$ git status -s 或 git status --short
# 查看依賴的子模塊信息
$ git submodule status
# 把指定的文件添加到暫存區(qū)中
$ git add <文件> ...
# 添加所有文件到暫存區(qū)
$ git add .
# 暫存補(bǔ)丁(交互式選擇暫存文件指定部分)
# y 暫存該修改塊
# n 不暫存該修改塊
# q 退出泞歉,同時(shí)不會(huì)暫存本次提示和所有文件剩余沒有提示過的修改塊
# a 暫存本次提示和該文件剩余沒有提示過的修改塊
# d 不暫存本次提示和該文件剩余沒有提示過的修改塊
# g - select a hunk to go to(未嘗試)
# / - search for a hunk matching the given regex(未嘗試)
# j - leave this hunk undecided, see next undecided hunk(未嘗試)
# J - leave this hunk undecided, see next hunk(未嘗試)
# e - manually edit the current hunk(未嘗試)
# ? 打印幫助文檔
$ git add -p 或 git add --patch
# 進(jìn)入交互式暫存操作
# Commands:
# 1: status逼侦,狀態(tài)查看,在 What now> 的時(shí)候輸入 1 或 s 或 status 然后按enter腰耙,可以查看文件改動(dòng)
# 2: update榛丢,暫存,在 What now> 的時(shí)候輸入 2 或 u 或 update 然后按enter進(jìn)入文件選擇模式挺庞,輸入需要暫存文應(yīng)的編號(hào)晰赞,多個(gè)文件中間用 ',' 隔開(例:Update>> 1、Update>> 1,2)然后按enter進(jìn)入確認(rèn)模式选侨,這個(gè)時(shí)候可以追加暫存文件掖鱼,將會(huì)被暫存的文件前面會(huì)用 '*' 標(biāo)記出來,如果在 Update>> 提示符后不輸入任何東西并直接按enter援制,被標(biāo)記文件會(huì)被暫存起來
# 3: revert锨用,取消暫存,在 What now> 的時(shí)候輸入 3 或 r 或 revert 然后按enter進(jìn)入文件選擇模式隘谣,輸入需要取消暫存文應(yīng)的編號(hào)增拥,多個(gè)文件中間用 ',' 隔開(例:Revert>> 1啄巧、Revert>> 1,2)然后按enter進(jìn)入確認(rèn)模式,這個(gè)時(shí)候可以追加要取消暫存的文件掌栅,將會(huì)被取消暫存的文件前面會(huì)用 '*' 標(biāo)記出來秩仆,如果在 Update>> 提示符后不輸入任何東西并直接按enter,被標(biāo)記文件會(huì)被取消暫存
# 4: add untracked猾封,添加未被跟蹤文件到暫存澄耍,跟 update 和 revert 操作類似
# 5: patch,暫存補(bǔ)丁晌缘,(相當(dāng)于執(zhí)行 git add -p)齐莲,在 What now> 的時(shí)候輸入 5 或 p 或 patch 然后按enter進(jìn)入文件選擇模式,輸入需要補(bǔ)丁暫存操作的文件編號(hào)磷箕,多個(gè)文件中間用 ',' 隔開(例:Patch update>> 1选酗、Patch update>> 1,2)然后按enter進(jìn)入確認(rèn)模式,這個(gè)時(shí)候可以追加要補(bǔ)丁暫存操作的文件岳枷,將會(huì)被補(bǔ)丁暫存操作的文件前面會(huì)用 '*' 標(biāo)記出來芒填,如果在 Patch update>> 提示符后不輸入任何東西并直接按enter,進(jìn)入補(bǔ)丁暫存操作空繁,跟據(jù)提示完成補(bǔ)丁暫存工作
# 6: diff殿衰,查看暫存內(nèi)容(相當(dāng)于執(zhí)行 git diff --cached),跟 patch 操作類似
# 7: quit盛泡,退出交互式暫存操作闷祥,在 What now> 的時(shí)候輸入 7 或 q 或 quit 然后按enter退出交互式暫存操作
# 8: help,打印幫助文檔
$ git add -i 或 git add --interactive
# 查看工作空間修改(尚未暫存的修改)
$ git diff
# 查看指定文件尚未暫存的修改
$ git diff <file>...
# 查看已暫存起來的修改(Git 1.6.1 及更高版本還允許使用 git diff --staged傲诵,效果是相同的)
$ git diff --cached
參考資料:Git 基礎(chǔ) - 記錄每次更新到倉庫凯砍、Git 工具 - 交互式暫存
4. 撤銷
# 撤銷工作區(qū)指定文件的修改
git restore <file>... 或 git checkout -- <file>...
# 撤銷工作區(qū)所有文件的修改
git restore . 或 git checkout -- .
# 取消指定文件的暫存修改
$ git restore --staged <file>... 或 git reset HEAD <file>...
# 取消所有文件的暫存修改
$ git restore --staged . 或 git reset HEAD .
參考資料:Git 基礎(chǔ) - 撤消操作
5. 貯藏
# 將修改貯藏起來,包括工作空間的修改和索引中暫存的修改
$ git status | $ git status push
# 將修改貯藏起來并加上對(duì)應(yīng)描述
$ git status push --message "<貯藏描述>" 或 git status push -m "<貯藏描述>"
# 將修改貯藏起來掰吕,同時(shí)保持索引中的暫存修改
$ git stash --keep-index 或 git stash push -k
# 交互式地提示哪些修改想要貯藏、哪些修改不想貯藏颅痊,根據(jù)提示進(jìn)行選擇(類似上面的 git add -p)
$ git stash --patch 或 git stash -p
# 查看貯藏列表
$ git stash list
# 將最近一次貯藏內(nèi)容重新應(yīng)用(不從貯藏列表中清除)
$ git stash apply 或 git stash apply stash@{0}
# 將最近一次貯藏內(nèi)容重新應(yīng)用(不從貯藏列表中清除)殖熟,并且保持貯藏時(shí)的索引暫存狀態(tài)
$ git stash apply --index
# 將最近一次貯藏內(nèi)容重新應(yīng)用(從貯藏列表中清除)
$ git stash pop
# 丟棄貯藏列表中最近的一次貯藏記錄
$ git stash drop 或 git stash drop stash@{0}
# 清空貯藏列表
$ git stash clear
參考資料:Git 工具 - 貯藏與清理
6. 清理
# 刪除未被跟蹤的文件
$ git clean
# 刪除指定的未被跟蹤的文件
$ git clean <file>...
# 刪除未被跟蹤的文件和目錄
$ git clean -d
# 做一次演習(xí)然后告訴將要移除什么,實(shí)際不會(huì)刪除任何文件
$ git clean -n
# 如果Git配置變量clean.requireForce未設(shè)置為false斑响,git clean將拒絕刪除文件或目錄菱属,除非給定-f
$ git clean -f
# 例:刪除所有未被跟蹤的文件及目錄
$ git clean -d -f
參考資料:Git 工具 - 貯藏與清理
7. 提交
# 把索引中暫存的修改提交到本地倉庫中并添加描述信息
$ git commit -m "<提交的描述信息>"
# 相當(dāng)于 'git add .' 和 'git commit' 組合
$ git commit -a -m "<提交的描述信息>"
# 將另外某個(gè)分支上的修改作用到當(dāng)前分支上
$ git cherry-pick <commit-id>
8. 重寫歷史(未同步到遠(yuǎn)程倉庫)
# 修改最后一條提交,追加索引中新暫存的修改舰罚,可以修改commit message(以vim方式展示)
# 如果想撤銷 amend 操作可以參考 http://www.reibang.com/p/97341ed9d89e纽门,原理:用 git reflog 查找到對(duì)應(yīng)的commit id,然后回滾回去
$ git commit --amend
# 修改最后一條提交营罢,追加索引中新暫存的修改赏陵,并修改commit message
$ git commit --amend -m "<提交的描述信息>"
# 索引中新暫存的修改同步到最后一次commit饼齿,跳過commit message編輯
$ git commit --amend --no-edit
# 交互式操作最近的n次提交,例如對(duì)最近3次提交進(jìn)行修改 'git rebase -i HEAD~3'
# Commands:
# p, pick <commit> = 保留該commit
# r, reword <commit> = 保留該commit, 但是可以編輯commit message
# e, edit <commit> = 保留該commit, 停留在該次commit, 對(duì)該次commit或前后面做些修改, 修改完后運(yùn)行 'git rebase --continue' 往下走
# s, squash <commit> = 保留該commit, 將其合并到前一次commit
# f, fixup <commit> = 跟squash一樣, 但是會(huì)跳過合并后的commit message編輯
# x, exec <command> = run command (the rest of the line) using shell (未嘗試)
# b, break = stop here (continue rebase later with 'git rebase --continue') (未嘗試)
# d, drop <commit> = 丟棄該commit
# l, label <label> = label current HEAD with a name (未嘗試)
# t, reset <label> = reset HEAD to a label (未嘗試)
# m, merge [-C <commit> | -c <commit>] <label> [# <oneline>] (未嘗試)
$ git rebase -i HEAD~n
參考資料:Git 工具 - 重寫歷史蝙搔、撤銷 git commit --amend
9. 重置
# 將HEAD挪到指定提交缕溉,索引暫存和工作區(qū)保持不變
$ git reset --soft <commit-id>
# 將HEAD挪到指定提交,索引暫存區(qū)回滾到指定提交吃型,工作區(qū)保持不變
$ git reset --mixed <commit-id> 或 git reset <commit-id>
# 將HEAD挪到指定提交证鸥,索引暫存區(qū)和工作區(qū)都回滾到指定提交
$ git reset --hard <commit-id>
# 將HEAD挪到前一次或前n次提交,索引暫存和工作區(qū)保持不變
$ git reset --soft HEAD~ 或 git reset --soft HEAD~n
# 將HEAD挪到前一次或前n次提交勤晚,索引暫存區(qū)回滾到前一次或前n次提交枉层,工作區(qū)保持不變
$ git reset --mixed HEAD~ 或 git reset HEAD~n
# 將HEAD挪到前一次或前n次提交,索引暫存區(qū)和工作區(qū)都回滾到前一次或前n次提交
$ git reset --hard HEAD~ 或 git reset --hard HEAD~n
參考資料:Git 工具 - 重置揭密
10. 提交查看
# 按提交時(shí)間列出所有的更新(會(huì)列出每個(gè)提交的 SHA-1 校驗(yàn)和赐写、作者的名字和電子郵件地址鸟蜡、提交時(shí)間以及提交說明)
$ git log
# 顯示每次提交的內(nèi)容差異
$ git log -p
# 可以加上 -1 來僅顯示最近一次提交的內(nèi)容差異
$ git log -p -1
# 顯示每次提交內(nèi)容簡略的統(tǒng)計(jì)信息
$ git log --stat
# 只顯示 --stat 中最后的行數(shù)修改添加移除統(tǒng)計(jì)
$ git log --shortstat
# 只顯示 --stat 中已修改的文件清單
$ git log --name-only
# --pretty選項(xiàng)可以指定使用不同于默認(rèn)格式的方式展示提交歷史。 比如用 oneline 將每個(gè)提交放在一行顯示血淌。 另外還有 short矩欠,full 和 fuller 可以用,展示的信息或多或少有些不同
$ git log --pretty=oneline
# 顯示 ASCII 圖形表示的分支合并歷史悠夯,常與 git log --pretty 配合使用 git log --pretty=oneline --graph
$ git log --graph
# 僅顯示指定時(shí)間之后的提交癌淮,例如:git log --since="2019-11-27"
$ git log --since 或 git log --after
# 僅顯示指定時(shí)間之前的提交,例如:git log --since="2019-11-27" --until="2019-11-28" 可以查看 2019年11月27日到2019年11月28日之間的提交
$ git log --until 或 git log --before
# 僅顯示指定作者相關(guān)的提交
$ git log --author
# 僅顯示含指定關(guān)鍵字的提交沦补,例如:git log --grep="xxx"乳蓄,或者后面可以直接跟正則表達(dá)式,
$ git log --grep
# 僅顯示指定文件或者目錄的歷史提交夕膀,-- 告訴 git log 接下來的參數(shù)是文件路徑而不是分支名虚倒,如果分支名和文件名不可能沖突,你可以省略 --
$ git log -- <file>
# 顯示那些添加或移除了某些字符串的提交产舞,想找出添加或移除了某一個(gè)特定函數(shù)的提交魂奥,例如:git log -S "main()"
$ git log -S
# 查看所有分支提交
$ git log --all
# 輸出當(dāng)前分支提交歷史(每次提交一行顯示),--oneline 是 --pretty=oneline --abbrev-commit 合用的簡寫
$ git log --oneline
# 輸出提交歷史易猫、各個(gè)分支的指向以及項(xiàng)目的分支分叉情況
$ git log --graph --oneline --all
# 格式化查看提交歷史耻煤,--pretty=format
# 常用可選項(xiàng)
# %H 提交的完整哈希值
# %h 提交的簡寫哈希值
# %P 父提交的完整哈希值
# %p 父提交的簡寫哈希值
# %an 作者名字
# %ae 作者的電子郵件地址
# %ad 作者修訂日期(可以用 --date=選項(xiàng) 來定制格式)
# %ar 作者修訂日期,按多久以前的方式顯示
# %cd 提交日期
# %cr 提交日期(距今多長時(shí)間)
# %s 提交說明
# 例:git log --pretty=format:"%h %an"
$ git log --pretty=format:“<指定給是>"
參考資料:Git 基礎(chǔ) - 查看提交歷史准颓、Git log 高級(jí)用法
11. 分支
# 列出本地的所有分支哈蝇,當(dāng)前所在分支以 "*" 標(biāo)出
$ git branch
# 列出所有本地分支和遠(yuǎn)程分支
$ git branch -a
# 查看每一個(gè)分支的最后一次提交
$ git branch -v
# 將所有的本地分支列出來并且包含更多的信息,如每一個(gè)分支正在跟蹤哪個(gè)遠(yuǎn)程分支與本地分支是否是領(lǐng)先攘已、落后或是都有
$ git branch -vv
# 創(chuàng)建本地新分支炮赦,新的分支基于前一次提交建立
$ git branch <branch-name>
# 查看已經(jīng)合并到當(dāng)前分支的分支
$ git branch --merged
# 查看所有未合并到當(dāng)前分支的分支
$ git branch --no-merged
# 刪除指定的本地分支
$ git branch -d <branch-name>
# 強(qiáng)制刪除指定的本地分支,例如分支上有改動(dòng)沒提交或合并刪除需要使用強(qiáng)制刪除
$ git branch -D <branch-name>
# 切換到已存在的指定分支
$ git checkout <branch-name>
# 創(chuàng)建并切換到指定的本地分支
# 等同于 "git branch" 和 "git checkout" 兩個(gè)命令合并
$ git checkout -b <branch-name>
# 從遠(yuǎn)程跟蹤分支檢出一個(gè)本地分支样勃,名字與遠(yuǎn)程分支名一樣
$ git checkout --track <remote-name>/<remote-branch-name>
# 從遠(yuǎn)程跟蹤分支檢出一個(gè)本地分支吠勘,名字與遠(yuǎn)程分支名可以不一致
$ git checkout -b <local-branch-name> <remote-name>/<local-branch-name>
# 當(dāng)前分支與指定遠(yuǎn)程分支建立追蹤關(guān)系性芬,例如:git branch -u origin/develop
$ git branch -u <remote-name>/<remote-branch-name>
# 指定本地分支與遠(yuǎn)程分支建立追蹤關(guān)系,例如:git branch --set-upstream-to=origin/develop develop
$ git branch --set-upstream-to=<remote-name>/<remote-branch-name> <local-branch-name>
# 修改本地分支名稱
# 如果不指定原分支名稱則為當(dāng)前所在分支
$ git branch -m <new-branch-name>
# 修改指定分支
$ git branch -m <origin-branch-name> <new-branch-name>
# 強(qiáng)制修改分支名稱
$ git branch -M <origin-branch-name> <new-branch-name>
參考資料:Git 分支 - 遠(yuǎn)程分支看幼、Git 分支 - 分支簡介批旺、Git 分支 - 分支管理
12. 合并
# 將指定分支合并到當(dāng)前分支,可以用作"快進(jìn)"合并
$ git merge <branch-name>
# 將某一個(gè)分支“變基”合并到當(dāng)前分支
# 實(shí)現(xiàn)步驟
# 首先诵姜,git 會(huì)把當(dāng)前分支里面的每個(gè) commit 取消掉汽煮;
# 其次,把上面的操作臨時(shí)保存成 patch 文件棚唆,存在 .git/rebase 目錄下暇赤;
# 然后,把當(dāng)前分支更新到最新的 basebranch 分支宵凌;
# 最后鞋囊,把上面保存的 patch 文件應(yīng)用到當(dāng)前分支上;
$ git rebase <base-branch>
# 將某一個(gè)分支“變基”合并到指定分支
$ git rebase <base-branch> <topic-branch>
# 取出 topic-branch 分支瞎惫,找出它從 exception-branch 分支分歧之后的補(bǔ)丁溜腐,然后把這些補(bǔ)丁在 base-branch 分支上重放一遍,讓 topic-branch 看起來像直接基于 base-branch 修改一樣
$ git rebase --onto <base-branch> <exception-branch> <topic-branch>
# 將對(duì)應(yīng)的遠(yuǎn)程分支“變基”合并到當(dāng)前本地分支
$ git pull --rebase
參考資料:Git 分支 - 分支的新建與合并瓜喇、Git 分支 - 變基
13. 遠(yuǎn)程同步
# 創(chuàng)建遠(yuǎn)程分支
$ git push <remote-name> <loacl-branch-name>:<remote-branch-name>
# 將遠(yuǎn)程分支與當(dāng)前本地分支建立對(duì)應(yīng)關(guān)系
$ git push --set-upstream <remote-name> <remote-branch-name>
# 一步到位創(chuàng)建遠(yuǎn)程分支并與本地分支建立對(duì)應(yīng)關(guān)系
$ git push -u <remote-name> <loacl-branch-name>:<remote-branch-name>
# 強(qiáng)制將本地差異推送到遠(yuǎn)端挺益,讓遠(yuǎn)端跟本地保持同步,例如:當(dāng)遠(yuǎn)程倉庫比本地更新乘寒,可以通過該指令將遠(yuǎn)程更新成和本地一樣
$ git push -f <remote-name>
$ git push --force <remote-name>
# 將本地所有分支提交到遠(yuǎn)端
$ git push --all
# 刪除遠(yuǎn)程分支
$ git push <remote-name> :<remote-branch-name>
$ git push <remote-name> --delete <remote-branch-name>
# 將本地分支修改內(nèi)容推送到對(duì)應(yīng)的遠(yuǎn)程分支
$ git push <remote-name> <remote-branch-name>
# 從遠(yuǎn)程倉庫中獲得數(shù)據(jù)望众,不會(huì)自動(dòng)合并或修改你當(dāng)前的工作
$ git fetch <remote-name>
# 同步遠(yuǎn)程分支,例如小伙伴已經(jīng)刪除了 origin/develop這個(gè)分支伞辛,但是我們本地倉庫還有這個(gè)分支烂翰,可以執(zhí)行下面指令進(jìn)行同步
$ git remote prune origin
參考資料:Git 分支 - 遠(yuǎn)程分支
14. 標(biāo)簽
# 在最新commit上打上標(biāo)簽,例如:git tag v1.0
$ git tag <tagname>
# 在指定commit上打標(biāo)簽蚤氏,例如:git tag v1.0 e7bd1d2
$ git tag <tagname> <commit-id>
# 創(chuàng)建帶有說明的標(biāo)簽甘耿,用-a指定標(biāo)簽名,-m指定說明文字竿滨,例如:git tag -a v1.0 -m "version 1.0" e7bd1d2
$ git tag -a <tagname> -m <tag description> <commit-id>
# 將本地標(biāo)簽同步到遠(yuǎn)程佳恬,例如:git push origin v1.0
$ git push <remote-name> <tagname>
# 一次性推送全部尚未推送到遠(yuǎn)程的本地標(biāo)簽
$ git push <remote-name> --tags
# 刪除本地標(biāo)簽,例如:git tag -d v1.0
$ git tag -d <tagname>
# 刪除遠(yuǎn)程標(biāo)簽姐呐,例如:git push origin :refs/tags/v1.0
$ git push <remote-name> :refs/tags/<tagname>
# 查看所有的標(biāo)簽殿怜,按字母排序
$ git tag
# 查看指定標(biāo)簽信息
$ git show <tagname>
15. 別名配置
# 為指定命令設(shè)置一個(gè)別名典蝌,例如:git config --global alias.co checkout
$ git config --global alias.<alias> <order>
# 修改指定別名對(duì)應(yīng)的命令曙砂,例如:git config --global alias.co 'commit'
$ git config --global alias.<alias> '<order>'
可以直接在 ~/.gitconfig 文件中將其設(shè)置別名,我的別名設(shè)置如下
[alias]
st = status -s
lg = log --graph --oneline --abbrev-commit
lga = log --graph --oneline --decorate --all
sbi = submodule init
sbu = submodule update
sbuir = submodule update --init --recursive
crsb = clone --recurse-submodules
sbst = git submodule status
renameTag = "!sh -c 'set -e;git tag $2 $1; git tag -d $1;git push origin :refs/tags/$1;git push --tags' -"
參考資料:Git 基礎(chǔ) - Git 別名
16. 配置
# 全局配置git提交用戶名骏掀,該配置將會(huì)被寫到~/.gitconfig文件里面
$ git config --global user.name "John Doe"
# 全局配置git提交用戶郵箱鸠澈,該配置將會(huì)被寫到~/.gitconfig文件里面
$ git config --global user.email johndoe@example.com
# 項(xiàng)目里面配置git提價(jià)用戶名柱告,該配置將會(huì)被寫到項(xiàng)目目錄下的.git/config文件里面
$ git config user.name "John Doe"
# 項(xiàng)目里面配置git提交用戶郵箱,該配置將會(huì)被寫到項(xiàng)目目錄下的.git/config文件里面
$ git config user.email johndoe@example.com
Git使用一系列配置文件來保存你自定義的行為笑陈。 它首先會(huì)查找系統(tǒng)級(jí)的/etc/gitconfig
文件际度,該文件含有系統(tǒng)里每位用戶及他們所擁有的倉庫的配置值。 如果傳遞--system
選項(xiàng)給git config
涵妥,它就會(huì)讀寫該文件乖菱。
接下來Git會(huì)查找每個(gè)用戶的~/.gitconfig
文件(或者~/.config/git/config
文件)。 可以傳遞--global
選項(xiàng)讓Git讀寫該文件蓬网。
最后Git會(huì)查找你正在操作的倉庫所對(duì)應(yīng)的Git目錄下的配置文件(.git/config
)窒所。 這個(gè)文件中的值只對(duì)該倉庫有效,它對(duì)應(yīng)于向git config
傳遞--local
選項(xiàng)帆锋。
以上三個(gè)層次中每層的配置(系統(tǒng)吵取、全局、本地)都會(huì)覆蓋掉上一層次的配置锯厢,所以.git/config
中的值會(huì)覆蓋掉/etc/gitconfig
中所對(duì)應(yīng)的值皮官。
參考資料:自定義 Git - 配置 Git
17. 其它
# 查看最近 HEAD 和分支引用所指向的歷史
$ git reflog
# 查看引用日志信息
$ git log -g
# 查看上一個(gè)提交,也就是 “HEAD 的父提交”
$ git show HEAD^
# 操作或查看指定目錄下的倉庫实辑,例如查看指定目錄倉庫log:git -C ~/Desktop/Demo log
$ git -C <local-repository-path> <cmd>
參考資料:Git 工具 - 選擇修訂版本