《git權(quán)威指南筆記》

修改提交說明
  • git commit --amend
    修改最新提交的提交說明
  • git rebase -i <commit-id>
    修改某個(gè)歷史提交的提交說明
后悔
  • 如果提交了不應(yīng)該提交的文件秉颗,想要在服務(wù)器中將文件刪除
    git rm --cached <file>
    git commit --amend
    如果是歷史版本搔弄,那么就把第二條更改為 git rebase -i <commit-id>

  • 在git add 之后抄肖,還沒有進(jìn)行g(shù)it commit 规丽,希望取消這一次git add,使用git reset HEAD <file>

關(guān)于git add操作
  • git add -u將所有修改過的文件加入暫存區(qū)
  • git add -A 將本地刪除文件和新增文件都登記到提交暫存區(qū)
  • 一個(gè)修改后的文件被登記到提交暫存區(qū)后挺狰,可以繼續(xù)修改,繼續(xù)修改的內(nèi)容不會(huì)被提交蝴光,除非對(duì)此文件再執(zhí)行一次git add命令。
關(guān)于git checkout操作

用法一:git checkout [-q] [<commit>] [--] <paths> ...
用法二:git checkout [<branch>]
用法三:git checkout [-m] [[-b] --orphan <new_branch>] [<start_point>]

第一種用法的<commit>是可選項(xiàng)雾家,如果省略則相當(dāng)于從暫存區(qū)(index)進(jìn)行檢出。所以盏檐,檢出命令主要是覆蓋工作區(qū)(如果<commit>不省略歇式,也會(huì)替換暫存區(qū)中相應(yīng)的文件)

第一種用法不會(huì)改變HEAD頭指針,主要是用于制定版本的文件覆蓋工作區(qū)中對(duì)應(yīng)的文件胡野,如果省略<commit>,則會(huì)用暫存區(qū)的文件覆蓋工作區(qū)的文件材失,否則用指定提交中的文件覆蓋暫存區(qū)和工作區(qū)中對(duì)應(yīng)的文件。

第二種用法則會(huì)改變HEAD頭指針硫豆。之所以后面的參數(shù)寫作<branch>龙巨,是因?yàn)橹挥蠬EAD切換到一個(gè)分支才可以對(duì)提交進(jìn)行跟蹤,否則仍然會(huì)進(jìn)入“分離頭指針”的狀態(tài)熊响。在“分離頭指針”狀態(tài)下的提交不能被引用關(guān)聯(lián)到旨别,從而可能丟失。所以用法二最主要的作用就是切換到分支汗茄。如果省略<branch>則相當(dāng)于對(duì)工作區(qū)進(jìn)行狀態(tài)檢查秸弛。

第三種用法主要是創(chuàng)建和切換到新的分支(<new_branch>),新的分支從<start_point>指的提交開始創(chuàng)建洪碳。新分支和我們熟悉的master分支沒有什么實(shí)質(zhì)的不同递览,都是在refs/heads命名空間下的引用。

checkout圖片
checkout相關(guān)命令
刪除文件
  • rm <文件名> 在本地刪除一個(gè)文件,然后使用 git ls-files 可以查看到在暫存區(qū)(版本庫)中的文件仍然存在瞳腌,并沒有刪除绞铃。此時(shí)使用git checkout -- <file>可以讓文件在工作區(qū)重現(xiàn)。
  • 在rm <文件名>之后嫂侍,使用git rm <文件名> 刪除就被加入到了暫存區(qū)儿捧。這時(shí)候執(zhí)行提交操作,就從真正意義上執(zhí)行了文件刪除挑宠。不過不要擔(dān)心纯命,文件只是在版本庫的最新提交中被刪除了,在歷史提交中依然存在痹栖,通過git ls-files --with-tree=HEAD^可以發(fā)現(xiàn)該文件,使用git cat-file -p HEAD^:<file>可以查看在歷史版本中尚在的刪除文件的內(nèi)容瞭空。 比如刪除了a.txt文件揪阿,那么調(diào)用 git cat-file -p HEAD~1:a.txt > a.txt 或者git show HEAD~1:a.txt > a.txt 或者 git checkout HEAD~1 -- a.txt都可以把文件從版本庫恢復(fù)到工作區(qū),緩沖區(qū)中并沒有恢復(fù)該文件咆畏。
關(guān)于git reset命令
  • git reset [-q] [<commit>] [--] <paths> 不會(huì)重置引用南捂,不會(huì)改變工作區(qū),而是用指定提交狀態(tài)<commit>下的文件<paths>替換掉暫存區(qū)中的文件旧找。例如命令git reset HEAD <paths>相當(dāng)于取消之前執(zhí)行的git add <paths>命令時(shí)改變的暫存區(qū)
  • git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>] 不使用<paths>的用法則會(huì)重置引用溺健。根據(jù)不同的選項(xiàng),可以對(duì)暫存區(qū)或者工作區(qū)進(jìn)行重置
雜七雜八的命令
  • git stash 保存工作進(jìn)度
    然后git checkout <new_branch>就可以切換到新的分支中了
    當(dāng)新的工作分支修改完畢之后钮蛛,再切換回當(dāng)前分支 git checkout <original_branch>
    再調(diào)用git stash pop恢復(fù)之前保存的工作進(jìn)度

  • git log --stat查看每次提交的文件變更統(tǒng)計(jì)

  • git diff查看兩個(gè)文件的差異

  • git reset HEAD 鞭缭,暫存區(qū)的目錄樹會(huì)被版本庫master分支所指向的目錄樹替換剖膳,但是工作區(qū)的代碼沒有改變

  • git rm --cached <file> ,直接從暫存區(qū)刪除文件岭辣,工作區(qū)不改變

  • git ls-tree -l HEAD 查看版本庫中的目錄樹

  • git ls-filles -s 顯式暫存區(qū)的目錄樹

  • git clean -fd 清除當(dāng)前工作區(qū)中沒有加入版本庫的文件和目錄

幫助理解的圖文
關(guān)于工作區(qū)吱晒、暫存區(qū)和版本庫
  • git reset HEAD ,暫存區(qū)的目錄樹會(huì)被版本庫master分支所指向的目錄樹替換沦童,但是工作區(qū)的代碼沒有改變
  • git rm --cached <file> 仑濒,直接從暫存區(qū)刪除文件,工作區(qū)不改變
  • git checkout . 或者git checkout -- <file> 偷遗,用暫存區(qū)全部的文件或者制定的文件替換工作區(qū)的文件墩瞳,也就是說,工作區(qū)中還沒有被添加到暫存區(qū)的改動(dòng)都會(huì)被清除
  • git checkout HEAD . 或者git check out HEAD <file> 命令氏豌,會(huì)用HEAD 指向的master分支中的全部或者部分文件替換暫存區(qū)和工作區(qū)的文件喉酌,也就是說,工作區(qū)和暫存區(qū)中所有未提交的改動(dòng)都會(huì)被清除
git reset
git reset
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箩溃,一起剝皮案震驚了整個(gè)濱河市瞭吃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涣旨,老刑警劉巖歪架,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異霹陡,居然都是意外死亡和蚪,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門烹棉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來攒霹,“玉大人,你說我怎么就攤上這事浆洗〈呤” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵伏社,是天一觀的道長(zhǎng)抠刺。 經(jīng)常有香客問我,道長(zhǎng)摘昌,這世上最難降的妖魔是什么速妖? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮聪黎,結(jié)果婚禮上罕容,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好锦秒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布露泊。 她就那樣靜靜地躺著,像睡著了一般脂崔。 火紅的嫁衣襯著肌膚如雪滤淳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天砌左,我揣著相機(jī)與錄音脖咐,去河邊找鬼。 笑死汇歹,一個(gè)胖子當(dāng)著我的面吹牛屁擅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播产弹,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼派歌,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了痰哨?” 一聲冷哼從身側(cè)響起胶果,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎斤斧,沒想到半個(gè)月后早抠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡撬讽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年蕊连,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片游昼。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甘苍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出烘豌,到底是詐尸還是另有隱情载庭,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布廊佩,位于F島的核電站囚聚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏罐寨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一序矩、第九天 我趴在偏房一處隱蔽的房頂上張望鸯绿。 院中可真熱鬧,春花似錦、人聲如沸瓶蝴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舷手。三九已至拧簸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間男窟,已是汗流浹背盆赤。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歉眷,地道東北人牺六。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像汗捡,于是被迫代替她去往敵國(guó)和親淑际。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容