1.git diff 顯示unstaged(modify) 和staged 檔案差別
2. git add . 會成為staged狀態
3.git diff --cache_ 看上一個commit和現在staged(add)的不同
4.git diff HEAD 上一個COMMIT 和現在unstaged不同
5.git log --oneline 看commit記錄
共有三個版本
6.git commit --amend --no-edit 當忘了加一個檔案或什麼進去時,又不想commit後會多一筆記錄,所以只是修改上一個commit
7.git reset xxx.php
從staged(add)回到modify
8.git reset --hard HEAD ,假如你commit後修改了些東西,想回到commit的狀況
9.
git reset --hard HEAD^ :想回上一個commit
git reset --hard HEAD^^ :回上上一個commit
git reset --hard HEAD~2 回到前兩個
git reset --hard 6791c76(id號) 回到某個Id號的commit
10. git reflog 當你回到過去commit想看未來commit的log
11.checkout 是與reset 相對,指定單個文件回到過去
12.git checkout 某檔回到過去而已,其他沒改動
-----------------branch
13.git branch 分支概念:
通常master是穩定版本給客戶用,分支則是為了開發而存在,不會影響master
14.git log --oneline --graph
log會加上星號代表分支
15.建立branch dev分支
git branch xxx
15.1建立完切換到分支
git checkout -b xxx
16.git branch 查看分支 星號代表處在哪
17.git checkout xxx切換到dev分支
18.刪分支git branch -D xxx
19.git commit -am 'ccc' 會將已經包含在前一個commit文件也提文
20.git merge --no-ff -m '合併' xxx
21. error : you need to resolve your current index first
merge發生衝突
用
git reset --merge 回到過去
master
xxx
<<<<<<< HEAD
eee
=======
ccc
>>>>>>> master
刪掉沒必要的,存檔commit
22.merge失敗原因,branch同時修改,master,dev
---------------
23.rebase 是很危險的動作
master a->y->o->b
dev ->e->f->g
rebase會變
a->e->f->g->b(不再是原本的b)
23.1 merge
master a->y->o->b
dev ->e->f->g
merge後會變
master a->y->o->b ->h
dev ->e->f->g/
24.git stash 將開發的工作放一邊,執行另外的修bug工作
如dev分支開發到一半要修改master的bug
checkout 到master另外開個edit bug 分支
再merge master
要回剛剛開發的工作就checkout dev
再git stash pop