裝逼
1.文件在各個(gè)區(qū)域的狀態(tài)
工作區(qū)
主流程
git add
git commit
對(duì)于直接添加進(jìn)git倉(cāng)庫(kù)而沒(méi)有進(jìn)行管理的文件域慷,執(zhí)行g(shù)it status會(huì)提示:untracked files
未跟蹤的文件
說(shuō)明git已經(jīng)檢測(cè)到文件了,但是沒(méi)有進(jìn)行跟蹤蒂窒,此時(shí)需要納入到git管理中戚嗅,執(zhí)行g(shù)it add命令脚线,可以只選個(gè)其中若干文件维哈,git add file,或者一次性全部加進(jìn)來(lái)块促,git add .
可以把`add`指令理解為加入購(gòu)物車(chē)
已納入版本管理
此時(shí)的文件已經(jīng)可以進(jìn)行提交了,使用git commit -sm '此次變更的總結(jié)'。當(dāng)然如果反悔了也可以根據(jù)git的提示锌云,進(jìn)行g(shù)it reset HEAD <file>荠医。文件又會(huì)回到未跟蹤狀態(tài)。
不幸的是桑涎,Microsoft的Word格式是二進(jìn)制格式彬向,因此,版本控制系統(tǒng)是沒(méi)法跟蹤Word文件的改動(dòng)的攻冷,
二進(jìn)制文件無(wú)法對(duì)比變更
所以文章開(kāi)頭的圖只能裝逼娃胆,如果要真正使用版本控制系統(tǒng),就要以純文本方式編寫(xiě)文件等曼。
2.編輯已經(jīng)提交的commit
如果剛不小心寫(xiě)錯(cuò)了commit信息里烦,可以使用git commit --amend
會(huì)默認(rèn)打開(kāi)編輯器凿蒜,修改commit信息后:wq即可
如果在上次漏掉一個(gè)文件后,也可以修改后先git add <file>再執(zhí)行此命令胁黑,將此次修改合并到上一次commit
3.版本回退
我們執(zhí)行的每一次命令废封,git都會(huì)有記錄,git reflog可以查看操作歷史丧蘸。其中
HEAD指向的版本就是當(dāng)前指向的版本漂洋,使用命令git reset --hard commit_id。
注意參數(shù)--hard力喷,重置HEAD并且丟棄本地未提交的變更刽漂,--soft則會(huì)在重置HEAD的同時(shí)保留未提交的變更。
穿梭前弟孟,用git log可以查看提交歷史贝咙,以便確定要回退到哪個(gè)版本。
要重返未來(lái)拂募,用git reflog查看命令歷史庭猩,以便確定要回到未來(lái)的哪個(gè)版本。
該git reflog用來(lái)記錄你的每一次命令
git reflog
4.分支管理
git-model@2x.png
【git merge】
默認(rèn)分支
dev分支
新建分支并提交
0-3.png
fast-foward
注意到上面的Fast-forward信息没讲,Git告訴我們眯娱,這次合并是“快進(jìn)模式”,也就是直接把master指向dev的當(dāng)前提交爬凑,當(dāng)然我也可以保留此次合并徙缴,所以我們通過(guò)強(qiáng)制git產(chǎn)生一個(gè)真正的merge---通過(guò)使用--no-ff參數(shù)(no fast forward的意思)
【git rebase vs git merge】
兩種用法:
1)針對(duì)一些本地提交進(jìn)行重新編輯,合并commit嘁信。
整合commit
2)在合并代碼時(shí)進(jìn)行變基操作于样,使得提交歷史線性直觀。
737565-20160407213124718-1899357504.png
737565-20160407213427281-1160492709.png
其他一些補(bǔ)充
git cherry-pick : 將一個(gè)已經(jīng)存在的commit應(yīng)用到其他分支上
git stash:暫存當(dāng)前工作區(qū)的內(nèi)容
git config --global alias.me 'merge'
git log --oneline -5
git revert
作者:koreadragon
原文鏈接:http://www.reibang.com/p/21caf28d1c2b