git 分回滾后無法合並代碼問題


git reset & git revert 區別:
1. git revert是用一次新的commit來回滾之前的commit,git reset是直接刪除指定的commit。
2. 在回滾這一操作上看,效果差不多。但是在日后繼續merge以前的老版本時有區別。因為git revert是用一次逆向的commit“中和”之前的提交,因此日后合並老的branch時,導致這部分改變不會再次出現,但是git reset是之間把某些commit在某個branch上刪除,因而和老的branch再次merge時,這些被回滾的commit應該還會被引入。
3. git reset 是把HEAD向后移動了一下,而git revert是HEAD繼續前進,只是新的commit的內容和要revert的內容正好相反,能夠抵消要被revert的內容。
 
git revert fcd8a10 -m 1 #撤回提交的commit id:fcd8a10 1代表當前分支 2代表在當前分支 merge的分支
 
解決Git Revert操作后再次Merge代碼被沖掉的問題:
要解決這個問題,需要把revert產生的提交再revert一次
因為git revert是用新提交覆蓋舊提交,因此,被覆蓋的提交等於不會被采用了。如果兩個分支(假設是master和A分支)先合並再用revert回滾,之后又合並(A合並到master),就會發現在master分支上,A分支第一次合並之前的修改大部分不見了。這是因為從時間的發生順序來看,A分支第一次合並之前的修改發生在revert之前,revert發生在后,而 revert拋棄了A第一合並之前的修改,那么再合並Git就認為你永遠拋棄了A第一次之前的修改。
 

 


免責聲明!

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



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