git checkout .
#本地所有修改的。沒有的提交的,都返回到原來的狀態
git stash
#把所有沒有提交的修改暫存到stash里面。可用git stash pop回復。
git reset --hard HASH
#返回到某個節點,不保留修改。
git reset --soft HASH
#返回到某個節點。保留修改
撤銷Git add操作
- git reset HEAD <file> # 取消add操作並保留修改
- git checkout -- <file> # 若繼續該命令,則會刪除掉剛剛的修改內容
撤銷Git commit操作
- git reset --soft <commit_id> #可以回退到某個commit並保存之前的修改 <commit_id>從git log中取,取前7位即可
- git reset --hard <commit_id> #回退到某個commit不保留之前的修改
撤銷Git push操作
- git revert <commit_id>
原理: git revert 會產生一個新的 commit,它和指定 SHA 對應的 commit 是相反的(或者說是反轉的)。 任何從原先的 commit 里刪除的內容會在新的 commit 里被加回去,任何在原先的 commit 里加入的內容會在新的 commit 里被刪除。這是 Git 最安全、最基本的撤銷場景,因為它並不會改變歷史 — 所以你現在可以 git push 新的“反轉” commit 來抵消你錯誤提交的 commit。
Git:代碼沖突常見解決方法
如果系統中有一些配置文件在服務器上做了配置修改,然后后續開發又新添加一些配置項的時候,
在發布這個配置文件的時候,會發生代碼沖突:
error: Your local changes to the following files would be overwritten by merge:
protected/config/main.php
Please, commit your changes or stash them before you can merge.
如果希望保留生產服務器上所做的改動,僅僅並入新配置項, 處理方法如下:
git stash
git pull
git stash pop
然后可以使用Git diff -w +文件名 來確認代碼自動合並的情況.
反過來,如果希望用代碼庫中的文件完全覆蓋本地工作版本. 方法如下:
git reset --hard
git pull