- 追溯哪句代碼是誰改的:
- $ git log -p [filename]
顯示文件所有詳細的修改記錄,信息非常全,慢慢找 - $ git log -L 1,2:[filename]
顯示文件1-2行的更改記錄,通過行數縮小范圍 - $ git blame [filename]
顯示的是每一行‘最后’是誰改的,如果只是追查最后的結果,比上一種好找
- commit丟失怎么找?
- $ git reflog
可以查看所有commit的ID:reset后的、rebase中的、pull的、merge的。它的盡頭就是clone或init.
- commit信息寫錯、代碼寫錯、把后一次提交合并到前一次
- 若沒push到遠程:
- $ git add [files] (添加修改文件到暫存區)
- $ git commit --amend (進入文本編輯模式修改commit信息)
- 已經push到遠程:
- $ git revert HEAD (撤銷上一次commit的內容(并且會提交一次))
- 非要改,必須確認本地代碼沒問題的條件下,git push -f 重寫遠程的歷史記錄 非常危險,慎重使用
- 新功能開發到一半,想回到舊代碼測試或者改bug
- 創建一個分支,把修改commit到新分支上存起來(一般都會的操作,不演示命令了)
- $ git stash 默認暫存所有的更改,代碼回到上一次commit的狀態;
- $ git stash pop 取回暫存的更改。
- $ git stash list 查看所有 stash
- $ git stash drop 刪除最新 stash
- $ git stash clear 刪除所有stash
- 注:若pop前有文件修改,也會保留修改;有沖突的話會有提示