git diff
查看文件修改,雖然git告訴我們文件被修改了,但如果能具體看到文件修改了什么內(nèi)容叛买,自然是很好的掖桦,萬一自己忘了呢
Show changes between the working tree and the index or a tree, changes between the index and a tree, changes between two trees, changes between two blob objects, or changes between two files on disk.
echo "Hello" >> a
git diff a
git diff顧名思義就是查看difference达舒,知道了對文件做了什么修改后疲憋,再把它提交到倉庫就放心多了
git add a
git commit -m "add Hello in a"
git log
Shows the commit logs.
git log
#如果嫌輸出信息太多俘种,可以加上--pretty=oneline
git log --pretty=oneline
時(shí)光機(jī)
1.git checkout -- file
2.git reset HEAD file
3.git reset --hard HEAD^ #HEAD^^使鹅、版本id等
版本回退
Git必須知道當(dāng)前版本是哪個(gè)版本,在Git中银伟,用HEAD表示當(dāng)前版本你虹,也就是最新的提交,上一個(gè)版本就是HEAD^彤避,上上一個(gè)版本就是HEAD^^傅物,當(dāng)然往上100個(gè)版本寫100個(gè)^比較容易數(shù)不過來,所以寫成HEAD~100琉预。
現(xiàn)在董饰,我們要把當(dāng)前版本“append GPL”回退到上一個(gè)版本“add distributed”,就可以使用git reset命令:
git reset --hard HEAD^
cat readme
git log
最新的那個(gè)版本append GPL已經(jīng)看不到了圆米!好比你從21世紀(jì)坐時(shí)光穿梭機(jī)來到了19世紀(jì)卒暂,想再回去怎么辦?
git reset --hard c5da
版本號沒必要寫全娄帖,前幾位就可以了也祠,Git會(huì)自動(dòng)去找。當(dāng)然也不能只寫前一兩位近速,因?yàn)镚it可能會(huì)找到多個(gè)版本號诈嘿,就無法確定是哪一個(gè)了。
git reflog #用來記錄你的每一次命令
撤銷修改
把文件在工作區(qū)的修改全部撤銷削葱,就是讓這個(gè)文件回到最近一次git commit或git add時(shí)的狀態(tài)奖亚。
git checkout -- file
git reset HEAD file可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū)
echo "fuck you" >> a
git status
git add a #將修改放到了暫存區(qū)
git reset HEAD a
git reset命令既可以回退版本析砸,也可以把暫存區(qū)的修改回退到工作區(qū)昔字。當(dāng)我們用HEAD時(shí),表示最新的版本首繁。
再用git status查看一下作郭,現(xiàn)在暫存區(qū)是干凈的陨囊,工作區(qū)有修改:
git status
git checkout -- a #此時(shí)再執(zhí)行丟棄工作區(qū)的修改
git status
整個(gè)世界都清凈了!
現(xiàn)在所坯,假設(shè)你不但改錯(cuò)了東西谆扎,還從暫存區(qū)提交到了版本庫挂捅,怎么辦呢芹助?還記得[版本回退]嗎?可以回退到上一個(gè)版本闲先。不過状土,這是有條件的,就是你還沒有把自己的本地版本庫推送到遠(yuǎn)程伺糠。還記得Git是分布式版本控制系統(tǒng)嗎蒙谓?一旦你把“stupid boss”提交推送到遠(yuǎn)程版本庫,你就真的慘了……
刪除文件
在Git中训桶,刪除也是一個(gè)修改操作
rm a
現(xiàn)在你有兩個(gè)選擇累驮,一是確實(shí)要從版本庫中刪除該文件,那就用命令git rm刪掉舵揭,并且git commit:
git rm a
git commit -m "remove a"
另一種情況是刪錯(cuò)了谤专,因?yàn)榘姹編炖镞€有呢,所以可以很輕松地把誤刪的文件恢復(fù)到最新版本:
git checkout -- a
git checkout其實(shí)是用版本庫里的版本替換工作區(qū)的版本午绳,無論工作區(qū)是修改還是刪除置侍,都可以“一鍵還原”。
補(bǔ)充
撤銷commit并保留代碼
參考文檔: https://www.cnblogs.com/lfxiao/p/9378763.html
上圖4拦焚,其與--hard的區(qū)別:
--soft, 不刪除工作空間改動(dòng)代碼(撤銷commit蜡坊,不撤銷git add . )
--hard, 刪除工作空間改動(dòng)代碼