Git 基(ji)礎
初始化(hua)版本庫 init
設置參(can)數(shu) config --global --system
從工(gong)作目錄(lu)到緩存 add
從緩存到版本庫 commit
從工作目(mu)錄到版本庫 commit -a(不提倡使用)
查看歷史記錄 log
查(cha)看(kan)狀態 status
創建分(fen)支 branch 新分(fen)支名 需創建分(fen)支處
查看分支 branch
切換分支 checkout 分支名
創建標(biao)簽(qian) tag 標(biao)簽(qian)名 分支(zhi)名
查看標簽 tag
變基 rebase 分支名
刪除(chu)分支 branch -d
分支名發(fa)布 archive --format=壓(ya)縮格式 --prefix=目錄名/ 需發(fa)布的位置 > 壓(ya)縮包文件名
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(工作(zuo)目錄(lu)中的所(suo)有變(bian)化(hua)都一次提交(jiao)到版(ban)本庫)
3、git commit -m 文(wen)件(jian)名(把指定文(wen)件(jian)提交到版本庫,要(yao)求文(wen)件(jian)已被追蹤)
git diff:
1、不加參數,比較工(gong)作目錄(lu)和緩存
2、--cached,比較版本庫(ku)和(he)緩存
3、head,
比較版本庫(ku)和工(gong)作目錄(lu)文(wen)件改名:git mv 就文(wen)件名 新文(wen)件名(執行后默認加入緩存,需commit)
文件刪除:
1、物(wu)理刪除,再提交
2、git rm 文件名,再提交(jiao)
文件恢(hui)復:git checkout 版本號(hao),再創(chuang)建分支(zhi)
撤(che)(che)銷操作:git reset --hard(--soft) head~n,n是多少(shao)(shao),就(jiu)撤(che)(che)銷多少(shao)(shao)步。
命令別名:git config --global alias.別名
命令文件忽略:
1、設置.git/info/exclude,添加欲忽(hu)略(lve)的文(wen)件名(ming),不會被擴散
2、創(chuang)建.gitignore,添加欲忽略的文件名,可以擴散(san)
3、設置core.excludesfile “A文件名”,添加欲忽略的(de)文件名到A中(zhong)
修改文本編(bian)輯(ji)器:設(she)置參數core.editor "編(bian)輯(ji)器文件名"
創建分支:
1、原(yuan)地創建:branch 新分(fen)支名
2、其他分支(zhi)(zhi)創建(jian):branch 新分支(zhi)(zhi)名 創建(jian)處分支(zhi)(zhi)名
3、創(chuang)建并切換分支:checkout -b 新分支名 創(chuang)建處分支名
4、任意位置創建(jian):branch 新分支(zhi)名 版本號
切(qie)換分支(zhi)(zhi):checkout 分支(zhi)(zhi)名
查看分支:branch
刪(shan)除分支(zhi):branch -d(-D) 分支(zhi)名
分支(zhi)改名(ming):branch -m(-M) 舊分支(zhi)名(ming) 新分支(zhi)名(ming)
恢復分支:branch 新分支名 版本號(標簽(qian))
分支合并:
1、直接合(he)(he)并 merge 被合(he)(he)并分支名
2、壓合(he)合(he)并(bing) merge --squash 被合(he)并(bing)分支名 (合(he)并(bing)后加入緩存區,再決定如何提(ti)交)
3、揀選合(he)并 cherry-pick 版本號 -n
沖突(tu)處理:合并(bing)后,沖突(tu)的文件會被標記,手動(dong)處理沖突(tu)后,提交。
一、查看git日志
1、顯(xian)示最近的N次提交:git log -N
2、顯示日志的格式:git log --pretty=online git log --pretty=format:"%" (%可以通過git help log查看)
二(er)、指定日(ri)志顯示范(fan)圍
1、顯示日志的時(shi)間范圍:git log --since(after)="2022.3.18" git log --until(before)="2022.3.18"
2、顯(xian)示的版(ban)本(ben)范圍:git log 老(lao)(lao)版(ban)本(ben)號..新版(ban)本(ben)號(從老(lao)(lao)版(ban)本(ben)號+1顯(xian)示到新版(ban)本(ben)號之間的日志)
git log 版本(ben)號.. (從版本(ben)號+1顯示到最后一次提交)
git log 版本號 (從初次提交顯(xian)示到版本號)
3、版本號操作符:~N:表示從當前版本回退N個版本 :每一個表示回退一個版本
三、比較差異
1、比較(jiao)所有被追蹤文件在指定版本和最新版本之間(jian)的差異: git diff 版本號
2、比較(jiao)所有被追(zhui)蹤文(wen)件(jian)在(zai)指定版(ban)本(ben)(ben)1和指定版(ban)本(ben)(ben)2之間的(de)差異: git diff 版(ban)本(ben)(ben)號1..版(ban)本(ben)(ben)號23、
依次比較歷(li)史上所有(you)版本之(zhi)間的差異 git log -p
四、跟蹤內容
1、查(cha)看指定文(wen)件中每一(yi)行的提交(jiao)信息(xi):git blame 文(wen)件名
2、查看指(zhi)定文(wen)(wen)件(jian)中指(zhi)定行的提交信息:git blame -L 行號,行號 文(wen)(wen)件(jian)名(ming) git blame -L 行號,+/-n 文(wen)(wen)件(jian)名(ming)
3、查(cha)看(kan)指定文(wen)件中的復制信息:git blame 文(wen)件名 -M,復制信息要(yao)求三行或以(yi)上(shang)
4、跨文件,查看指定文件中的復(fu)制信息:git blame -C -C 文件名
5、顯示文件間(jian)復(fu)制歷史記錄:git log -C -C -p
五、修改歷史記錄
1、增補提交:git commit -m "message" --amend
修改最會一次提(ti)交的留(liu)言為message git commit -C 版本號 --amend
修改最會一(yi)次提交的留言為指(zhi)定版本號(hao)的提交留言 git commit -c 版本號(hao) --amend
以指(zhi)定版本號的留(liu)言為模板,啟動編輯(ji)器,修改最后一次留(liu)言
增補提交時,按照(zhao)文(wen)(wen)件提交的(de)三種方式進(jin)行,則既修改留言又提交文(wen)(wen)件。
2、反轉(zhuan)提交(jiao):git revert 版本號 -n -數字 --no-edit
通過創(chuang)建一個新提交來(lai)抵消歷史上(shang)的某次提交
反轉提交不(bu)能用(yong)(yong)(yong)-m留(liu)言,使用(yong)(yong)(yong)文本(ben)編輯器(qi)編輯默(mo)認留(liu)言,也可以直接使用(yong)(yong)(yong)默(mo)認留(liu)言 (--no-edit)
暫存多(duo)次反(fan)轉(zhuan),一起提(ti)交。(-n)
連(lian)續(xu)多次反轉(zhuan)相鄰的提交(jiao) (-數字)
避免翻(fan)轉(zhuan)時出現(xian)沖突,最好按順序(xu)反轉(zhuan),出現(xian)沖突時,可用“add 沖突文(wen)件名”消解
3、穿越歷史:git rebase -i 版本(ben)(ben)號 進入rebase互動模式,在(zai)文本(ben)(ben)編輯(ji)器中舊記(ji)錄(lu)在(zai)上顯(xian)示從(cong)版本(ben)(ben)號+1到最新的(de)所(suo)有歷史記(ji)錄(lu) 按(an)照每(mei)一(yi)記(ji)錄(lu)前的(de)命令(ling)(pick,reword,squash,edit)從(cong)版本(ben)(ben)號+1到現在(zai),重(zhong)構歷史記(ji)錄(lu)
修改(gai)歷史留(liu)言(yan):互動模式中,在要修改(gai)留(liu)言(yan)的記錄前,使用reword,在之后彈出(chu)的編(bian)輯器中編(bian)輯新留(liu)言(yan)
刪除(chu)歷史記錄:互動模式(shi)中,刪掉欲刪除(chu)的歷史記錄
改變歷(li)史(shi)記(ji)錄順序(xu)(xu):互動模式中,修改命令為pick的歷(li)史(shi)記(ji)錄行(xing)順序(xu)(xu)
增加歷(li)史(shi)記錄(lu):互動(dong)模式中,插(cha)入命令為pick的(de)歷(li)史(shi)記錄(lu)行 (必須存在的(de)歷(li)史(shi)記錄(lu),有(you)正(zheng)確的(de)版(ban)本號(hao))
合(he)并(bing)歷史記錄(lu):在欲(yu)合(he)并(bing)的歷史記錄(lu)前使用squash命(ming)令,則該記錄(lu)會和上一條記錄(lu)合(he)并(bing),且彈出修改留言窗(chuang)口(kou)
拆(chai)分(fen)歷史記錄:互動模式中,在要拆(chai)分(fen)的(de)記錄前,使用(yong)edit,
在回到(dao)歷史使用reset --soft撤銷一(yi)步,然后分步提交兩次(ci)
git rebase --continue繼(ji)續重構歷(li)史記(ji)錄,也可--abort放棄此(ci)次rebase.
一、保(bao)存(cun)工作目(mu)錄(lu)和緩存(cun)區(qu)
1、git stash save "message" 保(bao)(bao)存(cun)(cun)當前的目(mu)錄(lu)和緩存(cun)(cun)區, 若不(bu)(bu)加save,則(ze)使用最后一次commit的留言保(bao)(bao)存(cun)(cun)若工作目(mu)錄(lu)或緩存(cun)(cun)區沒有(you)變化,則(ze)不(bu)(bu)能保(bao)(bao)存(cun)(cun) ,保(bao)(bao)存(cun)(cun)后,工作目(mu)錄(lu)和緩存(cun)(cun)區都變成沒有(you)變化
2、git stash list 列(lie)出當前各個保存的列(lie)表
3、git stash show 保(bao)(bao)存(cun)號 顯(xian)示某個(ge)保(bao)(bao)存(cun)的變(bian)化(hua)情況(kuang) 若不加(jia)保(bao)(bao)存(cun)號,則(ze)顯(xian)示最(zui)后一次保(bao)(bao)存(cun)的變(bian)化(hua)
4、git statsh apply (--index) 保存號 工作目錄恢復到某個保存狀態,對應的保存不刪除
5、git statsh pop (--index) 保(bao)存號 工作目錄恢(hui)復到某個(ge)保(bao)存狀(zhuang)態(tai),對應的保(bao)存會刪除
--index參(can)數決定是否恢復(fu)(fu)緩存區 恢復(fu)(fu)后是將(jiang)保存的狀(zhuang)態疊加到現在commit狀(zhuang)態 若工作目錄中有未commit的變化,則不(bu)能恢復(fu)(fu)
6、git stash drop 保存(cun)號 刪(shan)除(chu)某(mou)次保存(cun) 若(ruo)不(bu)加保存(cun)號,則刪(shan)除(chu)最后一(yi)次保存(cun)
7、git stash clear 刪除全部(bu)保存
一、git命令擴展
1、git log --stat 在顯示(shi)歷史(shi)記錄(lu)的同時,給出每(mei)次提(ti)交相對上(shang)次提(ti)交的變(bian)化統計信息
2、git diff --stat 在(zai)顯示(shi)版本(ben)間差(cha)異的(de)同時,給(gei)出(chu)的(de)差(cha)異的(de)統計信(xin)息
3、git log --graph 以圖形(xing)的(de)方式,顯(xian)示分支上帶(dai)合并過(guo)(guo)程(cheng)的(de)歷史記錄 若進行(xing)過(guo)(guo)rebase -i修改(gai)過(guo)(guo)歷史,則不(bu)再算作合并過(guo)(guo)程(cheng)
4、git reset 文件(jian)名(ming)(ming) 把指定文件(jian)從緩存(cun)區撤出,若不加文件(jian)名(ming)(ming),則(ze)清(qing)空緩存(cun)區
5、git status -s 以簡(jian)略模式顯示(shi)工(gong)作目(mu)錄狀態(tai)
紅(hong)M:已追(zhui)蹤(zong)(zong),未緩(huan)(huan)存 綠M:已追(zhui)蹤(zong)(zong),已緩(huan)(huan)存 紅(hong)A:未追(zhui)蹤(zong)(zong),已緩(huan)(huan)存 紅(hong)??:未追(zhui)蹤(zong)(zong),未緩(huan)(huan)存
6、git clean [-n][-f][-d][-x][-X]
-n:顯示將要(yao)被刪(shan)除的(de)(de)未(wei)(wei)追(zhui)蹤(zong)(zong)文(wen)件(jian)列表(biao) -f:刪(shan)除未(wei)(wei)追(zhui)蹤(zong)(zong)、未(wei)(wei)忽略的(de)(de)文(wen)件(jian),是否需要(yao)加(jia) -f,可以在config參(can)數里設置(zhi) -d:也(ye)刪(shan)除包含未(wei)(wei)追(zhui)蹤(zong)(zong)文(wen)件(jian)的(de)(de)目錄 -x:也(ye)刪(shan)除被忽略的(de)(de)文(wen)件(jian) -X:只刪(shan)除被忽略的(de)(de)文(wen)件(jian)
7、git gc 壓縮整(zheng)理版(ban)本庫,縮小版(ban)本庫占(zhan)用空間,提高檢索(suo)效(xiao)率
8、git reflog 顯示head在歷(li)史上的變化過程
