git cherry-pick 報錯 fatal: bad object


  場景:程序員A提交了一個commit到gerrit上,我們叫他為commit_id1,但是還沒有review,那就是沒有入庫,程序員B想再本地拿到這個commitd_id1,既然這個提交沒有入庫,很明顯,B單純執行git pull是拿不到這個提交的,那他要怎么辦呢,

  目前我想到的有幾種方式:第一種如果只是單純了改了很少量的文件,我們不排斥程序員A把這幾個文件直接發給B。如果改動比較大呢?第二種,程序員A本地關於這個提交生成一個patch,發給B,B再在本地把這個patch打上,這是個不錯的方式。還有一種,完全不需要額外的動作,只要使用git cherry-pick就可以了。

  所以,本篇的關注點是最后一種git cherry-pick的方式,如果想要使用patch的方式,參考我的另一篇博客:https://www.cnblogs.com/zndxall/p/8093455.html

  然后B在本地執行了git cherry-pick commit_id1,接着報錯 fatal: bad object  commit_id1了!!! 那是因為git cherry-pick是本地特性,本地要有這個commit才可以被git cherry-pick。但是他本地並沒有這個commit id,所以出現了這個錯

    既然用了gerrit,那么就用gerrit提供的cherry-pick就好了,如下:

(1)登陸gerrit頁面,找到A提交的commit_id1,點擊右上角的‘download’,然后復制cherry-pick那條,如下:

(2)然后再本地執行剛才復制的命令,執行,如下:

如果跟B本地的文件有沖突,會顯示error,然后執行git status 可以看到‘both modify’的字樣,告訴你了沖突文件,修改沖突文件即可。

如果沒有沖突,命令執行完,B本地執行git log 就可以看到A的commit_id1的提交了。


免責聲明!

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



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