使用 git 很長一段時間了,覺得乾巴巴的指令集合用處真心不大,結合場景使用才能理解的更深入(雖然也可能更片面)。下面是我整理的常見的場景:
撤銷
1. 沒有add,撤銷工作區的更改(從暫緩區恢復到工作區)
git checkout fileName
複製程式碼
2. 已經add,撤銷快取區的更改
git reset fileName
複製程式碼
3. 已經commit,覆蓋提交(修改檔案為正確的之後,add之後)
git commit —amend
複製程式碼
4. 已經commit,撤銷提交(—hard 使得工作區也會被撤銷到以前版本)
git reset --hard fileName
複製程式碼
5. 已經push且在遠端分支上,本地撤銷提交後強制提交
git push origin branch1 -f
複製程式碼
線上提交程式碼
1. Clone自己的專案
git clone git@github.com:leonzone/test.git
git push origin master
複製程式碼
2. 關聯本地已有專案
git remote add origin
git@github.com:leonzone/test.git
git push -u origin master(-u 以後預設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的檔案,如果某些檔案已經被納入了版本管理中,則修改.gitignore是無效的。那麼解決方法就是先把本地快取刪除(改變成未track狀態),然後再提交:
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 的最後加上檔名
- 檢視未提交的內容:diff
- 檢視暫存區和上一條 commit 的區別:git diff --staged(或 --cached)
- 檢視工作目錄和暫存區的區別:git diff 不加選項引數
- 檢視工作目錄和上一條 commit 的區別:git diff HEAD