我从我主人那里得到了两个分支:

v2.1:(版本2)我已经做了几个月了 wss:我昨天创建了一个特定的功能添加到我的master(在生产中)

有没有办法将昨天的提交从wss复制到v2.1?


当前回答

对于从分支wss复制最后一次提交到v2.1的简单情况,你可以简单地获取提交id (git log——oneline | head -n 1),然后执行:

git checkout v2.1
git merge <commit>

其他回答

使用内置的git gui来选择特定的提交会更安全:

例如:将一个提交从dev分支复制到main分支:

git checkout main
gitk --all

然后右键单击所需的提交,并选择“樱桃选择此提交”

gitk for Mac:在Mac上安装gitk

git精选:应用一些现有提交引入的更改

假设我们有(X, Y, Z)提交的分支A。我们需要将这些提交添加到分支b。我们将使用选择操作。

当我们使用cherry-pick时,我们应该按照提交出现在分支A中的时间顺序在分支B上添加提交。

Cherry-pick确实支持一定范围的提交,但如果在这个范围内有合并提交,就会变得非常复杂

git checkout B
git cherry-pick SHA-COMMIT-X
git cherry-pick SHA-COMMIT-Y
git cherry-pick SHA-COMMIT-Z

工作流示例:

我们可以有选择地选择

-e或——edit:使用这个选项,git会让你在提交之前编辑提交消息。

-n或——no-commit:通常该命令会自动创建一个提交序列。该标志应用必要的更改,将每个命名的提交选择到您的工作树和索引中,而不进行任何提交。此外,当使用此选项时,您的索引不必与HEAD提交匹配。根据索引的开始状态进行选择。

这里有一篇关于择偶的有趣文章。

您可以从想要复制的提交中创建一个补丁,并将该补丁应用到目标分支。

假设我已经向主分支提交了更改。 现在我将获得提交的提交id (xyz)。 然后我必须去到我需要推送提交的分支。

单次提交id xyz

git checkout branch-name
git cherry-pick xyz
git push origin branch-name

多个提交id xyz abc qwe

git checkout branch-name
git cherry-pick xyz abc qwe
git push origin branch-name

对于从分支wss复制最后一次提交到v2.1的简单情况,你可以简单地获取提交id (git log——oneline | head -n 1),然后执行:

git checkout v2.1
git merge <commit>