Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何在重设基础后重新创建合并提交?_Git_Git Rebase - Fatal编程技术网

Git 如何在重设基础后重新创建合并提交?

Git 如何在重设基础后重新创建合并提交?,git,git-rebase,Git,Git Rebase,我刚刚重新设定了一个实验分支的基础,使其与新的主线保持同步。该分支中有一个特征分支。我想保存它,但现在它丢了。我想在不必再次进行重设基础的情况下重新创建它(有几个耗时的冲突)。我该怎么做 我从这个开始 Z [stable] | Y … | | J [experiment] | |\ | | I | | | | | H | | | | | G | |/ | F | | | E |/ D [last-sync-with-stable] … I1 [experiment] | H1 | G1 | F

我刚刚重新设定了一个实验分支的基础,使其与新的主线保持同步。该分支中有一个特征分支。我想保存它,但现在它丢了。我想在不必再次进行重设基础的情况下重新创建它(有几个耗时的冲突)。我该怎么做

我从这个开始

Z [stable]
|
Y
…
|
| J [experiment]
| |\
| | I
| | |
| | H
| | |
| | G
| |/
| F
| |
| E
|/
D [last-sync-with-stable]
…
I1 [experiment]
|
H1
|
G1
|
F1
|
E1
|
Z [stable]
|
Y
…
git重新设置基址(忽略空格)之后,通过稳定的实验进入稳定的最后一次同步

Z [stable]
|
Y
…
|
| J [experiment]
| |\
| | I
| | |
| | H
| | |
| | G
| |/
| F
| |
| E
|/
D [last-sync-with-stable]
…
I1 [experiment]
|
H1
|
G1
|
F1
|
E1
|
Z [stable]
|
Y
…
合并提交J丢失了,同时G、H和I都作为一个单元完成了这一事实,以及J的日志消息中的基本原理、注意事项和问题编号。我想要回那个。我想要这个

J1 [experiment]
|\
| I1
| |
| H1
| |
| G1
|/
F1
|
E1
|
Z [stable]
|
Y
…
现在我知道我应该用
--preserve merges
运行
重新基址
,但我不想再次运行重新基址并修复所有冲突


如何保存合并提交、日志消息、作者日期和时间以及所有这些,而不必重新修复冲突?我意识到我可以再次手动执行合并,复制日志消息,设置作者日期等等。。。我正在寻找一种更优雅的方式供将来使用。有点像合并提交的
cherry pick

会有帮助,但我不认为它可以追溯打开。@murphy船长是的,唉,我发现太晚了。答案总是
rere
,后续总是“哎呀,忘了打开它”。我相信制作一个程序应该很容易,你可以指向之前的合并,说“打开重新合并,重新合并,使用以前的合并结果作为我的分辨率,然后记录”。我实际上还没有尝试编写这个代码,但听起来你有一个理想的设置。代码基本上相当于:打开Reere,强制再次进行合并(在匿名分支上),从上一次合并中提取合并决议,并使用
git add
/
git commit
记录它们。这可能会有所帮助,但我不认为它可以追溯到打开。@Murphy船长是的,唉,我发现太晚了。答案总是
重新开始
,后续总是“哎呀,忘了打开它”。我相信制作一个程序应该很容易,你可以指向之前的合并,说“打开重新合并,重新合并,使用以前的合并结果作为我的分辨率,然后记录”。我实际上还没有尝试编写这个代码,但听起来你有一个理想的设置。代码基本上相当于:打开Reere,强制再次进行合并(在匿名分支上),从上一次合并中提取合并决议,并使用
git add
/
git commit
记录它们。