Git常見知識

still6發表於2018-06-20

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          // 還原暫存的內容
複製程式碼

相關文章