1. git diff
顯示工作區、暫存區、歷史區之間的不同之處
git diff 分支名 //工作區和歷史區比較
git diff --cached //暫存區和歷史區比較
git diff //工作區和暫存區比較(不帶任何選項的情況下,
//就是顯示暫存區與工作區之間的不同之處)
git diff master //工作區和歷史區去比
複製程式碼
2. 撤銷
沒有提交到暫存區的時候
git checkout . //從暫存區中將工作區內容覆蓋掉
git checkout 檔名 //覆蓋某個檔案
cat 1.txt //檢視
複製程式碼
如果提交到暫存區,那隻能在暫存區裡往上回滾一次,(只能往上回滾一次),然後 用git checkout . , 將工作區內容覆蓋。
git add .
git reset HEAD 檔名 //在暫存區,往上回滾一次。也就是把這一次的提交移除暫存區
git checkout . //覆蓋工作區所有檔案
history > 2.txt //將提交記錄寫到2.txt裡面
複製程式碼
已經被提交到歷史區了,只能在歷史區裡,往上找其他版本,先回滾到其他版本(靠的是版本號),並且還能回來。
git commit -m 'third' //檔案需要提交過一次,版本號"22b3cb5"
git reset --hard e1ecf986 //--hard是堅決回滾。 現在是回滾到"e1ecf986"這個版本
git reflog //可以列印所有的日誌(裡面可以知道所有版本號)
git reset --hard 22b3cb5 //又切回來了
git reset --hard 版本號 //回滾歷史版本
git reset --hard HEAD^ //往上走一次
複製程式碼
3. 分支
假如有甲乙兩人,甲一直在master主幹上寫程式碼,乙寫的程式碼,也需要合併到master主幹上去。
git branch // 檢視目前有幾個分支,*代表當前就在這個分支上
git branch dev // 建立dev分支
git checkout dev // 切到dev分支上
git checkout master // 再回到master分支上
git branch -D dev // 刪除dev分支,
// -D是delete,刪除分支時當前使用者不能在當前要刪除的分支上
複製程式碼
在dev分支下提交
git checkout dev
git add .
git reset HEAD . // 在暫存區回到上一級
git commit -m 'add 1.js' // 和master就沒關係了。 只有dev分支上有 1.js
複製程式碼
怎麼合併
git checkout master
git merge dev // 把dev分支合併到master
git merge 分支名 // 要合誰,就寫哪個分支名
複製程式碼
總結:先建立主幹,在主幹的基礎上新增一個分支,在分支上進行提交,切換到主幹合併分支。
4. 暫存(不常用)
如果,分支有更改不能直接切換,可以提交更改或者暫存更改,
git stash // 暫存檔案
git stash pop // 還原暫存的內容
複製程式碼