将git分支修改为从上游提交分支
我分叉了一个git存储库,从将git分支修改为从上游提交分支,git,Git,我分叉了一个git存储库,从master分支了new\u功能,开发了一个新功能,并将我的分支合并回master。像这样: ^ | * <-- current commit |\ | \ * * * | | * <-- new_feature branch | | * * | / |/ * * * | * <-- release commit on master | 这可能吗?如果可能,如何实现?我是唯一使用new\u功能的用户,我以前从未承诺过ma
master
分支了new\u功能,开发了一个新功能,并将我的分支合并回master
。像这样:
^
|
* <-- current commit
|\
| \
* *
* |
| * <-- new_feature branch
| |
* *
| /
|/
*
*
*
|
* <-- release commit on master
|
这可能吗?如果可能,如何实现?我是唯一使用new\u功能的用户,我以前从未承诺过master
,如果这有助于隔离提交的话。是的,这是可能的,但这是一种破坏性的历史更改,您需要小心处理
让我们首先给出一些虚拟SHA,以便能够在git命令中识别它们:
当前状态:
- 在
主机上对释放提交进行硬重置:
git重置——硬A132263
- 分支新功能分支:
git签出-b新功能
- 将提交从旧功能分支移动到新功能分支,依次进行:
git cherry pick 45C9A66
- 在发布提交时合并或向第二主控主机发出合并请求:
git签出第二台主机
git合并新特性
- 从原始的
主机
获取其他提交:
git cherry pick 15B6BDD
吉特樱桃皮克91C021C
吉特樱桃精选D2FD393
吉特樱桃皮卡F679B1B
- 检查
第二主控
的状态是否正常,然后将原始主控
硬复位到它
(仔细的破坏命令:在此之后,原始的主文件
将丢失并替换为第二主文件
):
git签出主机
git重置--硬第二主控
完成这些步骤后,您的git回购中应具有以下状态:
结果状态:
^
|
*75C70DB是的,这是可能的,但这是一个破坏性的历史变化,你需要小心处理
让我们首先给出一些虚拟SHA,以便能够在git命令中识别它们:
当前状态:
- 在
主机上对释放提交进行硬重置:
git重置——硬A132263
- 分支新功能分支:
git签出-b新功能
- 将提交从旧功能分支移动到新功能分支,依次进行:
git cherry pick 45C9A66
- 在发布提交时合并或向第二主控主机发出合并请求:
git签出第二台主机
git合并新特性
- 从原始的
主机
获取其他提交:
git cherry pick 15B6BDD
吉特樱桃皮克91C021C
吉特樱桃精选D2FD393
吉特樱桃皮卡F679B1B
- 检查
第二主控
的状态是否正常,然后将原始主控
硬复位到它
(仔细的破坏命令:在此之后,原始的主文件
将丢失并替换为第二主文件
):
git签出主机
git重置--硬第二主控
完成这些步骤后,您的git回购中应具有以下状态:
结果状态:
^
|
*75C70DB我能想到的另外两个选项:
如果在发布提交和分支的提交之间没有太多提交,则可以恢复每个提交
如果您不关心保留您所做的单个提交,您可以将master软重置到从它分支出来的位置,隐藏这些更改,硬重置到发布提交并应用隐藏
两个示例显示了上述两个选项的一个示例,我已将虚构的提交ID添加到您的关系图中:
^
|
* current-commit <-- current commit
|\
| \
* *
* |
| * <-- new_feature branch
| |
* *
| /
|/
* commit-branched-off-of
* intermediate-commit-1
* intermediate-commit-2
|
* release-commit <-- release commit on master
|
上述命令将在释放提交
之后恢复所有提交,直到并包括从
分支出来的提交
如果您确实遇到任何冲突,只需按照提示修复冲突即可
备选办法2可以是:
git reset --soft commit-branched-off-of
git stash
git reset --hard release-commit
git stash apply
git commit -m "New commit message for your feature"
我可以想到另外两个选择:
如果在发布提交和分支的提交之间没有太多提交,则可以恢复每个提交
如果您不关心保留您所做的单个提交,您可以将master软重置到从它分支出来的位置,隐藏这些更改,硬重置到发布提交并应用隐藏
两个示例显示了上述两个选项的一个示例,我已将虚构的提交ID添加到您的关系图中:
^
|
* current-commit <-- current commit
|\
| \
* *
* |
| * <-- new_feature branch
| |
* *
| /
|/
* commit-branched-off-of
* intermediate-commit-1
* intermediate-commit-2
|
* release-commit <-- release commit on master
|
上述命令将在释放提交
之后恢复所有提交,直到并包括从
分支出来的提交
如果您确实遇到任何冲突,只需按照提示修复冲突即可
备选办法2可以是:
git reset --soft commit-branched-off-of
git stash
git reset --hard release-commit
git stash apply
git commit -m "New commit message for your feature"
git revert release-commit..commit-branched-off-of
git reset --soft commit-branched-off-of
git stash
git reset --hard release-commit
git stash apply
git commit -m "New commit message for your feature"