from="branch2" // You only have to change this line
to=HEAD
first_shared_commit="$(
git merge-base "$to" "$from"
)"
list_of_commits_exclusively_in_from="$(
git log --format=%H "$first_shared_commit".."$from"
)"
git cherry-pick "$list_of_commits_exclusively_in_from"
3条答案
按热度按时间xxb16uws1#
合并前重基特征分支
如果你想避免合并提交,你需要确保所有的提交都是快进的。你可以通过确保你的特性分支在合并之前干净地重新定基到你的开发线上来做到这一点,就像这样:
Rebase也有很多标志,包括
-i
标志的交互式rebase,但如果你想保持尽可能简单,并希望在合并时保留所有分支历史,你可能不需要它。使用
--ff-only
标志除了换基之外,
--ff-only
标志的使用将确保只允许快进提交。如果提交是合并提交,则不会进行提交。git-merge(1)手册页说:--仅限ff
拒绝合并并以非零状态退出,除非当前HEAD已经是最新的,或者合并可以作为快进解决。
vxf3dgd42#
“托德A. Jacobs”已经提到“rebase”是这里的概念,这只是一种更详细的做事方式。
假设您位于master分支上
您希望进行修复,因此创建一个从master分支出来的“fixbranch”
也许你已经在这个分支上工作了几天,并提交了几次。
您想将提交推送到中央主存储库的那一天! checkout master并从中央主存储库获取最新更改
使用master重定fixbranch的基,以获得干净的历史记录,并解决本地存储库本身中的冲突(如果有的话)。
现在fixbranch是最新的与中央主,让我合并fixbranch到主分支
我完成了!让我把本地master推到中央master
https://git-scm.com/book/en/v2/Git-Branching-Rebasing
tvmytwxo3#
有可能:
下面是它的做法:
我为此创建了一个别名。我称之为
git merge-quiet
。您可以使用以下一行代码在.git/config
中创建此别名:我相信这是最好的解决方案,因为它不需要创建一个[临时]branch 2-rebased分支来避免改变现有的branch 2。它通过在内存中 * 创建分支 *(实际上是组成分支的提交列表)来实现。
欢迎您的反馈!️️🌈🧘🏽🕉️️