不还原提交的Git合并主机

不还原提交的Git合并主机,git,Git,我正在尝试修复我的git分支,下面是我所做的 我有一些应该在分支中开发的代码;但是,我提交并推送到master(提交A) 然后,我继续执行并恢复了该提交,并且还将恢复推到主控(提交B恢复A) 然后我创建了commit a的一个分支并继续我的开发(commit C和D)。这就是我的树目前的样子: * D (HEAD -> branch_a, origin/branch_a) removed testing code * C updated | * B (origin/master, orig

我正在尝试修复我的git分支,下面是我所做的

我有一些应该在分支中开发的代码;但是,我提交并推送到master(提交A)

然后,我继续执行并恢复了该提交,并且还将恢复推到主控(提交B恢复A)

然后我创建了commit a的一个分支并继续我的开发(commit C和D)。这就是我的树目前的样子:

* D (HEAD -> branch_a, origin/branch_a) removed testing code
* C updated
| * B (origin/master, origin/HEAD, master) Revert "new code"
|/  
* A new code
我希望能够干净地将此分支合并回主分支。通常我会做的是
git将originmaster
拉入我的分支,但在这种情况下我不能这样做,因为
master
具有A的还原


branch\u a
中,我可以做些什么来确保它能够合并回
master
,而不会丢失我的工作?

在键入问题后,我发现一个碰巧有一个命令在其中,它实现了我想要的结果

由于对
master
的唯一提交是B,这是分支上不需要的提交,因此可以使用一种策略将
master
合并到
branch\u a
中,以防发生冲突时保持分支中的更改

branch\u a
运行
git merge-s ours master
,它将
master
合并到
branch\u a
版本中,以防冲突

此操作的结果将树更改为:

E (HEAD -> branch_a, origin/branch_a) Merge branch 'master' into branch_a
|\  
| * B (origin/master, origin/HEAD, master) Revert "new code"
* | D removed testing code
* | C updated
|/  
* A new code

在输入问题后,我发现一个碰巧有一个命令在里面,它达到了我想要的结果

由于对
master
的唯一提交是B,这是分支上不需要的提交,因此可以使用一种策略将
master
合并到
branch\u a
中,以防发生冲突时保持分支中的更改

branch\u a
运行
git merge-s ours master
,它将
master
合并到
branch\u a
版本中,以防冲突

此操作的结果将树更改为:

E (HEAD -> branch_a, origin/branch_a) Merge branch 'master' into branch_a
|\  
| * B (origin/master, origin/HEAD, master) Revert "new code"
* | D removed testing code
* | C updated
|/  
* A new code

你只是想忘记
B
,想让你的历史看起来像
A->C->D
,对吗?@mkrieger1一旦我合并回master,是的,我基本上想忘记
B
。最初的问题是
A
一开始就不应该在master上,唯一需要
B
的原因是
A
在我准备好之前不在master上。你只是想忘记
B
而想让你的历史看起来像
A->C->D
?@mkrieger1一旦我合并回master,是的,我基本上想忘记
B
。最初的问题是
A
一开始就不应该在master上,唯一需要
B
的原因是
A
在我准备好之前不在master上。