这里是我的情况。如何删除我的分支中的特定提交
1)我分叉一个项目从别人
2)我创建了一个独立分支和编辑它的一些文件
3)我创建了从该分支pull请求和它合并到硕士矿。
4)现在我的主人包含这些提交。
5)我创建了第二个分支。并编辑了一些文件。
6)然后我创建了一个'原始'项目回购的拉请求。
7)项目的所有者要求我删除自己合并的那些提交,因为不需要这些代码。
现在,问题是:我无法弄清楚如何从我的单独分支中删除提交。有人能帮我吗 ???做
这里是我的情况。如何删除我的分支中的特定提交
1)我分叉一个项目从别人
2)我创建了一个独立分支和编辑它的一些文件
3)我创建了从该分支pull请求和它合并到硕士矿。
4)现在我的主人包含这些提交。
5)我创建了第二个分支。并编辑了一些文件。
6)然后我创建了一个'原始'项目回购的拉请求。
7)项目的所有者要求我删除自己合并的那些提交,因为不需要这些代码。
现在,问题是:我无法弄清楚如何从我的单独分支中删除提交。有人能帮我吗 ???做
最简单的事情就是变基上origin/master
你的新分支。
您从此开始。
A - B - C [master]
[origin/master]
A,B和C是现有的提交。 master
是您当地的分支,origin/master
跟踪您看到上游master
分支的最后一个地方。他们都指向承诺C.
将新分支合并到master
之后,您就有了类似的内容。
1 - 2 - 3 [master]
/
A - B - C [origin/master]
上游保持在C,但您的本地master
现在是3承诺通过它。您当地的master
受到本地提交的污染。
当你让你的第二个分支脱离主人并承诺它,你有这个。
4 - 5- 6 [second]
/
1 - 2 - 3 [master]
/
A - B - C [origin/master]
正如你所看到的,second
还包含1,2,3 - 从第一分公司工作。要解决这个问题,请将4,5和6移动到origin/master
之上。
git rebase --onto origin/master master second
,说从一切(但不包括)master
(并包括)second
走上origin/master
。那是4,5和6.结果是这样。
1 - 2 - 3 [master]
/
A - B - C [origin/master]
\
4' - 5' - 6' [second]
注:这是假定4,5,6不依赖于1,2,和3。如果他们这样做,离开一切,因为它是并注意在拉请求的依赖。
一般而言,与上游储存库工作时从... origin/master
master
提交任何内容。这可以确保您的拉取请求不会受到本地更改或其他拉取请求的影响。
在你的情况,你可以尝试执行
的git的复位 - 硬commit_hash
其中commit_hash
是在提交前第一承诺删除。在两次合并之前,您现在有一个初始状态的主分支。在这一点上,只是再次从你的第二个分支合并,它应该工作
另一种解决方案是尝试:
git的变基-i commit_hash
其中commit_hash
之前再次提交是首先承诺删除。在文本编辑器中为你打开git,你需要删除你想删除的两个提交的两行。保存文件,关闭编辑器,git将完成rebase操作,删除两个提交。
警告
两个指令都将改写历史的git,你需要执行强制混帐推
混帐推--force
你可能会通知主人你”对Git不太熟悉,并且礼貌地要求他们修复这个问题。 – Schwern