git: 如何压缩多个合并提交
git: how to squash multiple merge commits
我正在开发一个 git 存储库,它是我从上游派生出来的。有一个我想实现的功能,我创建了一个新分支 uiTests 并在那里进行了更改并提出了拉取请求。
PR 存在了一段时间,与此同时还有一些其他 PR 被合并并产生了冲突。我在我的 fork 中解决了它们,最后有两个合并提交。
当我查看 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
所以我想将 70db4de884d5e4b64ef3a2c903f310c901dd68e2
和 5b7a827763c35a3605daed6c717004700582eede
压缩到 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 的版本日志;
我是否按照正确的方法压缩这些合并提交?或者是否有可能完全压缩这些提交?这种压缩 merge 提交对我来说是一个小问题。非常感谢您的帮助和提示! :)
让我假设您有一个名为 "development" 的上游 repo 分支和您自己的名为 "uiTests" 的分支。你已经创建了一个从 fork/uiTests
到 upstream/development
的 PR(所以你有 2 个遥控器:fork
和 upstream
)。
解决冲突后,您的日志中有些混乱,但您已经测试过您的工作副本状态良好,应用程序正常运行,您的更改有效,一切都很好,您想要的只是让您的工作全部完成1 提交并更新 PR。
一个简单的解决方案是 运行:
git reset --soft upstream/development
然后重新提交所有更改:
git add .
git commit
在此之后,您将在新的上游分支上进行 1 次更改。
假设你在 "uiTests" 分支中完成了所有这些,你需要更新 PR 的是:
git push -f fork
我正在开发一个 git 存储库,它是我从上游派生出来的。有一个我想实现的功能,我创建了一个新分支 uiTests 并在那里进行了更改并提出了拉取请求。
PR 存在了一段时间,与此同时还有一些其他 PR 被合并并产生了冲突。我在我的 fork 中解决了它们,最后有两个合并提交。
当我查看 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
所以我想将 70db4de884d5e4b64ef3a2c903f310c901dd68e2
和 5b7a827763c35a3605daed6c717004700582eede
压缩到 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 的版本日志;
我是否按照正确的方法压缩这些合并提交?或者是否有可能完全压缩这些提交?这种压缩 merge 提交对我来说是一个小问题。非常感谢您的帮助和提示! :)
让我假设您有一个名为 "development" 的上游 repo 分支和您自己的名为 "uiTests" 的分支。你已经创建了一个从 fork/uiTests
到 upstream/development
的 PR(所以你有 2 个遥控器:fork
和 upstream
)。
解决冲突后,您的日志中有些混乱,但您已经测试过您的工作副本状态良好,应用程序正常运行,您的更改有效,一切都很好,您想要的只是让您的工作全部完成1 提交并更新 PR。
一个简单的解决方案是 运行:
git reset --soft upstream/development
然后重新提交所有更改:
git add .
git commit
在此之后,您将在新的上游分支上进行 1 次更改。
假设你在 "uiTests" 分支中完成了所有这些,你需要更新 PR 的是:
git push -f fork