Git的常用撤銷技巧與解決沖突方法


git checkout . #本地所有修改的。沒有的提交的,都返回到原來的狀態

git stash  #把所有沒有提交的修改暫存到stash里面。可用git stash pop回復。
git reset --hard HASH  #返回到某個節點,不保留修改。
git reset --soft HASH  #返回到某個節點。保留修改

撤銷Git add操作

 
  1. git reset HEAD <file>   # 取消add操作並保留修改    
  2. git checkout -- <file>  # 若繼續該命令,則會刪除掉剛剛的修改內容  

撤銷Git commit操作

  1. git reset --soft <commit_id>   #可以回退到某個commit並保存之前的修改  <commit_id>從git log中取,取前7位即可    
  2. git reset --hard <commit_id>   #回退到某個commit不保留之前的修改    

撤銷Git push操作

  1. 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM