当前位置:新励学网 > 秒知问答 > 如何使用gitmerge一系列的commits

如何使用gitmerge一系列的commits

发表时间:2024-07-17 01:57:45 来源:网友投稿

  先来说说git所保存的对象。对于git来说commits,文件,branches都是一些对象。commits保存的是一些文本文件之间diff(只对文本文件来说)。所谓的merge就是把那些diff在某些commit点上面重播(replay)一次。

  可是git的merge没有直接merge一系列commits的功能。对于一个commit,我们可以使用cherry-pick来把那个commitreplay到其它commit点上面。对于一系列的commit,这样做很麻烦,假如发生冲突麻烦更加大,你必须记住在replay到哪个commit的时候发生冲突,解决完之后还必须到跳过那个commit继续cherry-pick。

  git的rebase能达到此目的。它和merge的不同之处在于merge是在历史记录分开的时候那个点开始重播的,而rebase是保存好在upstream没有的commits,然后把那些commits重播在新的base点上。

  假设要把branchesA中commitc-d(从a-f)merge到branchB有两种方法:

  方法一:首先用从A创建新的分支A1,用branch–fd去除commitef,然后用rebase去除commita,b(详情见rebase--help)。然后把branchBrebase到branchA1上

  方法二:首先从A创建新的分支A1,用branch–fd去除commitef。然后用rebase–ontoBbA1把A1“嫁接”(transplant)到B上。

  方法一方法二的区别在于c-d应用的位置不同,方法一会出现在B的最前面;方法二相反。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!