Git:如何合并多个合并提交。

8
我正在处理一个从上游分支派生而来的git代码库。我想要实现一个新功能,所以我创建了一个名为uiTests的新分支,在那里进行了更改并发起了拉取请求。
拉取请求已经存在一段时间了,期间其他拉取请求已经合并并产生了冲突。我在我的派生版本中解决了这些冲突,并最终出现了两个合并提交。
当我查看git日志时,列表的顶部如下所示;
commit 70db4de884d5e4b64ef3a2c903f310c901dd68e2
Merge: ef5dfc2 5b7a827
Author: Padmal
Date:   Sat May 26 18:53:33 2018 +0530

    Merge branch 'CloudyPadmal-uiTest' into uiTests

commit 5b7a827763c35a3605daed6c717004700582eede
Merge: e815867 ef5dfc2
Author: Padmal
Date:   Sat May 26 18:52:52 2018 +0530

    Merge branch 'uiTests' of git://github.com/CloudyPadmal/pslab-android into CloudyPadmal-uiTest

commit ef5dfc2f4af7431b2bc5efa356540bd616669706
Author: Padmal
Date:   Thu May 24 20:06:27 2018 +0530

    test: removed Travis build time consuming UI tests

    removed dummy test files

我想将70db4de884d5e4b64ef3a2c903f310c901dd68e25b7a827763c35a3605daed6c717004700582eede合并到ef5dfc2f4af7431b2bc5efa356540bd616669706中,并用一个提交更新PR。

有关更多信息,请参见git log --oneline结果如下:

70db4de Merge branch 'CloudyPadmal-uiTest' into uiTests
5b7a827 Merge branch 'uiTests' of git://github.com/CloudyPadmal/pslab-android into CloudyPadmal-uiTest
ef5dfc2 test: removed Travis build time consuming UI tests

但是当我尝试运行git rebase -i HEAD~3时,控制台的显示如下:
pick 9b97740 Changed Help and Feedback Activity to Fragment (#882)
pick 7e93db6 chore: Update app version (#922)
pick ca155b6 Added card view for instruments section (#884)
pick e815867 Removed AboutUs activity (#914)
pick ef5dfc2 test: removed Travis build time consuming UI tests

它没有显示给我合并提交。以下是来自Android Studio的版本日志的更多信息:

git log view

我是否按照正确的方法来压缩这些合并提交?或者根本无法压缩这些提交?这些合并提交一直是我的一个小问题。非常感谢任何帮助和提示! :)
1个回答

9
假设您有一个名为“development”的上游仓库分支和一个名为“uiTests”的自己的分支。您已经从创建了一个PR到(所以你有两个远程:fork和upstream)。
在解决冲突后,您的日志中可能会有一些混乱,但是您已经测试过您的工作副本状态很好,应用程序可以正常工作,您的更改也起作用,一切都很好,您想要的就是将您的所有工作合并成一个提交并更新PR。
其中一个简单的解决方案是运行:
git reset --soft upstream/development

然后再次提交您所有的更改:

git add .
git commit

接下来,您只需要在新的上游分支上添加您的更改,然后提交1个更改。

假设您在“uiTests”分支上完成所有操作,则更新拉取请求所需的全部内容是:

git push -f fork

这个可行!:D 我需要深入了解reset --soft!谢谢! :) - Padmal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接