git rebase 的妙用


首先來看應用場景:我們要修改之前某一個特定的commit的時候,就需要用到這個命令。

假如之前的某個提交的上一筆commit id是:928fc8a3686bf5fcf4527873e075703a9998c127

git log #查看commit id 找到上一筆commit id git rebase 928fc8a3686bf5fcf4527873e075703a9998c127 --interactive或者-i
//注意,一定要上一筆,為什么呢?實際上rebase翻譯過來就是變基,簡而言之,就是變更為基於哪一筆提交上的提交, 這里指的“哪一筆”就是需要修改的提交的上一筆了。

然后在vi中修改pick為edit,wq保存退出,接着進行內容修改,git addgit commit --amend
最后git rebase --continue即可再次回到最新的頭部

//git rebase --continue 作為整個操作的結束動作,所以一定要執行。

 

接下來看下一些具體場景:

1.有的時候,我們從遠程git同步代碼時候會有以下信息:

 上傳新提交的時候,也會因為這筆記錄的格式問題報錯,

 

此時用git rebase 92320630cbf41f656361271110c6fc1298b1ec19 -i,然后不做任何修改,wq保存退出,這筆merge信息就沒有了。我的理解是跟不加參數-i是一樣的。

2.當執行git rebase 92320630cbf41f656361271110c6fc1298b1ec19 -i 后有多筆提交的時候,

如:

pick xxxxxx

pick xxxxxx

pick xxxxxx

可以刪除不相關的幾筆提交,只留下要修改的那筆pick xxxxxx, 這樣的做的好處,就是git commit 之后,進行repo upload 的時候,不會出現其他幾筆提交也重新上傳一次。我的理解是如果多個pick, 那么這幾筆都重新rebase到了需要的修改的上一筆提交上。

如果只剩下需要修改的那一筆,那么只是對需要修改的那一筆進行rebase。

3. 如果中途出錯,可以使用git rebase --skip 來重置

 


免責聲明!

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



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