Git rebase的妙用

Git rebase的妙用

确实是一个很强大的工具,记录其使用方法,以供后用。

合并两个分支

已知分支master和分支master.feature,目前两个分支都各有提交,有重叠也有差异,需要将master上差异的commit拿出来提交到master.feature上,有:

  1. 先checkout到master

    git checkout master
    
  2. 然后rebase到新的分支,这里添加参数-i表示逐个commit

    git rebase -i master.feature
    

    这里可能会有冲突,便逐个解决冲突,解决完成后,此时的master分支便已经将自身有差异的改动,rebasemaster.feature分支了,但分支仍然为master

  3. 然后checkout到master.fearture

    git checkout master.feature
    
  4. master分支合并到master.feature分支,最后便得到最终的master.feature分支,此时可以选择push到服务器端:

    git merge master
    

以上指令可以合并为:

删除/改动某些提交

已知有一个分支,改动有a、b、c、d、e、f,这些字母均代表commit id,但是中间的d有问题,需要删除。此时可以用rebase

直接:

git rebase -i d^

根据其提示:

# Rebase 76b1d1a..0f35d41 onto 76b1d1a (2 command(s))
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like "squash", but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

修改对应的pick字段。

例如这里要删除,那么将pick修改为d即可,然后保存、退出,即可删除对应的commit,此时commit便只有a、b、c、e、f了。

posted @   付时凡  阅读(14)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示