使用 git 很長一段時間了,覺得干巴巴的指令集合用處真心不大,結(jié)合場景使用才能理解的更深入(雖然也可能更片面)。下面是我整理的常見的場景:
撤銷
1. 沒有add,撤銷工作區(qū)的更改
git checkout fileName(從暫緩區(qū)恢復(fù)到工作區(qū))
2. 已經(jīng)add,撤銷緩存區(qū)的更改
git reset fileName
3. 已經(jīng)commit,覆蓋提交
git commit —amend(修改文件為正確的之后,add之后)
4. 已經(jīng)commit,撤銷提交
git reset --hard fileName(—hard 使得工作區(qū)也會被撤銷到以前版本)
5. 已經(jīng)push且在遠程分支上,本地撤銷提交后強制提交
git push origin branch1 -f
線上提交代碼
1. Clone自己的項目
git clone git@github.com:leonzone/test.git
git push origin master
2. 關(guān)聯(lián)本地已有項目
git remote add origin
git@github.com:leonzone/test.git
git push -u origin master(-u 以后默認(rèn)push到origin)
遠程分支
1. 新建遠程分支
git check -b develop
git push origin develop: develop
2. 同步代碼到遠程分支
git push origin develop
3. 同步遠程分支到本地
git checkout -b develop origin/develop
添加忽略
.gitignore只能忽略那些原來沒有被track的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無效的。那么解決方法就是先把本地緩存刪除(改變成未track狀態(tài)),然后再提交:
git rm -r –-cached filePath
//添加 filePath 到 .gitignore
git commit -m “remove xx”
查看變動
- 查看歷史中的多個 commit:log
- 查看詳細改動: git log -p
- 查看大致改動:git log --stat
- 查看具體某個 commit:show
- 要看最新 commit ,直接輸入 git show ;要看指定 commit ,輸入 git show commit的引用或SHA-1
- 如果還要指定文件,在 git show 的最后加上文件名
- 查看未提交的內(nèi)容:diff
- 查看暫存區(qū)和上一條 commit 的區(qū)別:git diff --staged(或 --cached)
- 查看工作目錄和暫存區(qū)的區(qū)別:git diff 不加選項參數(shù)
- 查看工作目錄和上一條 commit 的區(qū)別:git diff HEAD