GIT cherry将存在于一个分支中的所有提交选择到另一个分支
我有两个分支A和B。分支B在某个时候是从分支A分支出来的,多个用户正在向这两个分支提交。我想从分支B到分支A挑选我的所有提交(分支A中还不存在),而不需要手动搜索每个提交。 这有可能吗GIT cherry将存在于一个分支中的所有提交选择到另一个分支,git,cherry-pick,git-cherry-pick,Git,Cherry Pick,Git Cherry Pick,我有两个分支A和B。分支B在某个时候是从分支A分支出来的,多个用户正在向这两个分支提交。我想从分支B到分支A挑选我的所有提交(分支A中还不存在),而不需要手动搜索每个提交。 这有可能吗 谢谢解决了这个问题并制作了这个PowerShell脚本: $Source = Read-Host -Prompt 'Enter Source branch: ' $Target = Read-Host -Prompt 'Enter Target branch: ' cd C:\project git log $S
谢谢解决了这个问题并制作了这个PowerShell脚本:
$Source = Read-Host -Prompt 'Enter Source branch: '
$Target = Read-Host -Prompt 'Enter Target branch: '
cd C:\project
git log $Source --not $Target --cherry --author=my@ema.il --author-date-order --reverse |
Select-String -Pattern "commit" |
ForEach-Object { git cherry-pick -x $_.ToString().split("+")[-1].Trim(' ') }
找到了答案并制作了以下PowerShell脚本:
$Source = Read-Host -Prompt 'Enter Source branch: '
$Target = Read-Host -Prompt 'Enter Target branch: '
cd C:\project
git log $Source --not $Target --cherry --author=my@ema.il --author-date-order --reverse |
Select-String -Pattern "commit" |
ForEach-Object { git cherry-pick -x $_.ToString().split("+")[-1].Trim(' ') }
更直截了当的方法是使用rebase--ON: 如果您的回购协议如下所示:
a - B - c - d - e -> master
\ \
\ f - g -> some-feature
\
h - i - j -> branch-to-move
命令
git rebase --onto some-feature B branch-to-move
会导致
a - B - c - d - e -> master
\
f - g -> some-feature
\
h' - i' - j' -> branch-to-move
更直截了当的方法是使用rebase--ON: 如果您的回购协议如下所示:
a - B - c - d - e -> master
\ \
\ f - g -> some-feature
\
h - i - j -> branch-to-move
命令
git rebase --onto some-feature B branch-to-move
会导致
a - B - c - d - e -> master
\
f - g -> some-feature
\
h' - i' - j' -> branch-to-move
这听起来像是可以通过交互式重基来完成的事情?如果您想要所有提交,最好将B合并到A。或者我遗漏了什么?我只想要由我提交,而不是其他用户提交。我不能合并或重新设置这些分支的基础,因为我不是它们的所有者。好吧,然后按照奥利弗的建议进行交互式重新设置基础可能就可以了。首先,分支机构没有“所有者”,其次,只要您不将本地分支机构推到远程回购,它就不会影响其他任何人。只需执行一个
git-rebase-ia
并保持提交(删除或注释其他行)。然后你可以将B合并到A中。而不必按B。这听起来像是可以通过交互式重基来完成的事情?如果你想要所有的提交,最好将B合并到A中。还是我遗漏了什么?我只想要由我提交,而不是其他用户提交。我不能合并或重新设置这些分支的基础,因为我不是它们的所有者。好吧,然后按照奥利弗的建议进行交互式重新设置基础可能就可以了。首先,分支机构没有“所有者”,其次,只要您不将本地分支机构推到远程回购,它就不会影响其他任何人。只需执行一个git-rebase-ia
并保持提交(删除或注释其他行)。然后你可以把B合并成A,而不用按B