Git 基礎(chǔ)
初始化版本庫 init
設(shè)置參數(shù) config --global --system
從工作目錄到緩存 add
從緩存到版本庫 commit
從工作目錄到版本庫 commit -a(不提倡使用)
查看歷史記錄 log
查看狀態(tài) status
創(chuàng)建分支 branch 新分支名 需創(chuàng)建分支處
查看分支 branch
切換分支 checkout 分支名
創(chuàng)建標(biāo)簽 tag 標(biāo)簽名 分支名
查看標(biāo)簽 tag
變基 rebase 分支名
刪除分支 branch -d
分支名發(fā)布 archive --format=壓縮格式 --prefix=目錄名/ 需發(fā)布的位置 > 壓縮包文件名
git add -i/-p/-Agit add -i-->1,2,3,4,5,6,7,8
提交方法:
1、git add 文件名/git commit -m
2、git commit -a -m(工作目錄中的所有變化都一次提交到版本庫)
3、git commit -m 文件名(把指定文件提交到版本庫,要求文件已被追蹤)
git diff:
1、不加參數(shù),比較工作目錄和緩存
2、--cached,比較版本庫和緩存
3、head,
比較版本庫和工作目錄文件改名:git mv 就文件名 新文件名(執(zhí)行后默認(rèn)加入緩存,需commit)
文件刪除:
1、物理刪除,再提交
2、git rm 文件名,再提交
文件恢復(fù):git checkout 版本號(hào),再創(chuàng)建分支
撤銷操作:git reset --hard(--soft) head~n,n是多少,就撤銷多少步。
命令別名:git config --global alias.別名
命令文件忽略:
1、設(shè)置.git/info/exclude,添加欲忽略的文件名,不會(huì)被擴(kuò)散
2、創(chuàng)建.gitignore,添加欲忽略的文件名,可以擴(kuò)散
3、設(shè)置core.excludesfile “A文件名”,添加欲忽略的文件名到A中
修改文本編輯器:設(shè)置參數(shù)core.editor "編輯器文件名"
創(chuàng)建分支:
1、原地創(chuàng)建:branch 新分支名
2、其他分支創(chuàng)建:branch 新分支名 創(chuàng)建處分支名
3、創(chuàng)建并切換分支:checkout -b 新分支名 創(chuàng)建處分支名
4、任意位置創(chuàng)建:branch 新分支名 版本號(hào)
切換分支:checkout 分支名
查看分支:branch
刪除分支:branch -d(-D) 分支名
分支改名:branch -m(-M) 舊分支名 新分支名
恢復(fù)分支:branch 新分支名 版本號(hào)(標(biāo)簽)
分支合并:
1、直接合并 merge 被合并分支名
2、壓合合并 merge --squash 被合并分支名 (合并后加入緩存區(qū),再?zèng)Q定如何提交)
3、揀選合并 cherry-pick 版本號(hào) -n
沖突處理:合并后,沖突的文件會(huì)被標(biāo)記,手動(dòng)處理沖突后,提交。
一、查看git日志
1、顯示最近的N次提交:git log -N
2、顯示日志的格式:git log --pretty=online git log --pretty=format:"%" (%可以通過git help log查看)
二、指定日志顯示范圍
1、顯示日志的時(shí)間范圍:git log --since(after)="2022.3.18" git log --until(before)="2022.3.18"
2、顯示的版本范圍:git log 老版本號(hào)..新版本號(hào)(從老版本號(hào)+1顯示到新版本號(hào)之間的日志)
git log 版本號(hào).. (從版本號(hào)+1顯示到最后一次提交)
git log 版本號(hào) (從初次提交顯示到版本號(hào))
3、版本號(hào)操作符:~N:表示從當(dāng)前版本回退N個(gè)版本 :每一個(gè)表示回退一個(gè)版本
三、比較差異
1、比較所有被追蹤文件在指定版本和最新版本之間的差異: git diff 版本號(hào)
2、比較所有被追蹤文件在指定版本1和指定版本2之間的差異: git diff 版本號(hào)1..版本號(hào)23、
依次比較歷史上所有版本之間的差異 git log -p
四、跟蹤內(nèi)容
1、查看指定文件中每一行的提交信息:git blame 文件名
2、查看指定文件中指定行的提交信息:git blame -L 行號(hào),行號(hào) 文件名 git blame -L 行號(hào),+/-n 文件名
3、查看指定文件中的復(fù)制信息:git blame 文件名 -M,復(fù)制信息要求三行或以上
4、跨文件,查看指定文件中的復(fù)制信息:git blame -C -C 文件名
5、顯示文件間復(fù)制歷史記錄:git log -C -C -p
五、修改歷史記錄
1、增補(bǔ)提交:git commit -m "message" --amend
修改最會(huì)一次提交的留言為message git commit -C 版本號(hào) --amend
修改最會(huì)一次提交的留言為指定版本號(hào)的提交留言 git commit -c 版本號(hào) --amend
以指定版本號(hào)的留言為模板,啟動(dòng)編輯器,修改最后一次留言
增補(bǔ)提交時(shí),按照文件提交的三種方式進(jìn)行,則既修改留言又提交文件。
2、反轉(zhuǎn)提交:git revert 版本號(hào) -n -數(shù)字 --no-edit
通過創(chuàng)建一個(gè)新提交來抵消歷史上的某次提交
反轉(zhuǎn)提交不能用-m留言,使用文本編輯器編輯默認(rèn)留言,也可以直接使用默認(rèn)留言 (--no-edit)
暫存多次反轉(zhuǎn),一起提交。(-n)
連續(xù)多次反轉(zhuǎn)相鄰的提交 (-數(shù)字)
避免翻轉(zhuǎn)時(shí)出現(xiàn)沖突,最好按順序反轉(zhuǎn),出現(xiàn)沖突時(shí),可用“add 沖突文件名”消解
3、穿越歷史:git rebase -i 版本號(hào) 進(jìn)入rebase互動(dòng)模式,在文本編輯器中舊記錄在上顯示從版本號(hào)+1到最新的所有歷史記錄 按照每一記錄前的命令(pick,reword,squash,edit)從版本號(hào)+1到現(xiàn)在,重構(gòu)歷史記錄
修改歷史留言:互動(dòng)模式中,在要修改留言的記錄前,使用reword,在之后彈出的編輯器中編輯新留言
刪除歷史記錄:互動(dòng)模式中,刪掉欲刪除的歷史記錄
改變歷史記錄順序:互動(dòng)模式中,修改命令為pick的歷史記錄行順序
增加歷史記錄:互動(dòng)模式中,插入命令為pick的歷史記錄行 (必須存在的歷史記錄,有正確的版本號(hào))
合并歷史記錄:在欲合并的歷史記錄前使用squash命令,則該記錄會(huì)和上一條記錄合并,且彈出修改留言窗口
拆分歷史記錄:互動(dòng)模式中,在要拆分的記錄前,使用edit,
在回到歷史使用reset --soft撤銷一步,然后分步提交兩次
git rebase --continue繼續(xù)重構(gòu)歷史記錄,也可--abort放棄此次rebase.
一、保存工作目錄和緩存區(qū)
1、git stash save "message" 保存當(dāng)前的目錄和緩存區(qū), 若不加save,則使用最后一次commit的留言保存若工作目錄或緩存區(qū)沒有變化,則不能保存 ,保存后,工作目錄和緩存區(qū)都變成沒有變化
2、git stash list 列出當(dāng)前各個(gè)保存的列表
3、git stash show 保存號(hào) 顯示某個(gè)保存的變化情況 若不加保存號(hào),則顯示最后一次保存的變化
4、git statsh apply (--index) 保存號(hào) 工作目錄恢復(fù)到某個(gè)保存狀態(tài),對應(yīng)的保存不刪除
5、git statsh pop (--index) 保存號(hào) 工作目錄恢復(fù)到某個(gè)保存狀態(tài),對應(yīng)的保存會(huì)刪除
--index參數(shù)決定是否恢復(fù)緩存區(qū) 恢復(fù)后是將保存的狀態(tài)疊加到現(xiàn)在commit狀態(tài) 若工作目錄中有未commit的變化,則不能恢復(fù)
6、git stash drop 保存號(hào) 刪除某次保存 若不加保存號(hào),則刪除最后一次保存
7、git stash clear 刪除全部保存
一、git命令擴(kuò)展
1、git log --stat 在顯示歷史記錄的同時(shí),給出每次提交相對上次提交的變化統(tǒng)計(jì)信息
2、git diff --stat 在顯示版本間差異的同時(shí),給出的差異的統(tǒng)計(jì)信息
3、git log --graph 以圖形的方式,顯示分支上帶合并過程的歷史記錄 若進(jìn)行過rebase -i修改過歷史,則不再算作合并過程
4、git reset 文件名 把指定文件從緩存區(qū)撤出,若不加文件名,則清空緩存區(qū)
5、git status -s 以簡略模式顯示工作目錄狀態(tài)
紅M:已追蹤,未緩存 綠M:已追蹤,已緩存 紅A:未追蹤,已緩存 紅??:未追蹤,未緩存
6、git clean [-n][-f][-d][-x][-X]
-n:顯示將要被刪除的未追蹤文件列表 -f:刪除未追蹤、未忽略的文件,是否需要加 -f,可以在config參數(shù)里設(shè)置 -d:也刪除包含未追蹤文件的目錄 -x:也刪除被忽略的文件 -X:只刪除被忽略的文件
7、git gc 壓縮整理版本庫,縮小版本庫占用空間,提高檢索效率
8、git reflog 顯示head在歷史上的變化過程

浙公網(wǎng)安備 33010602011771號(hào)