git - 推送到错误的存储库,如何删除?

时间:2014-02-14 18:30:36

标签: git maintenance

编辑:关于此问题可能已经有答案:,请注意该问题的标题是指撤消提交,而不是推送。我不认为这应该加强git中两者之间的频繁混淆。还有一个问题,22个不同的答案将成为最好的参考?

我在dev分支下的存储库X中创建了一个新项目lambda,然后git addgit commitgit push

原来它不属于该存储库,而是存储库Y中的dev分支。现在看X的人看到了一堆不属于的东西。

如何从X dev中删除该推送?请注意,我不想从X中删除整个分支,只是我做的不好。

如果有帮助,那个项目中的一切都是自包含的,没有其他项目被改变。只是删除lambda项目及其任何历史也没关系。

搜索后,我认为我想要做的是undo a git push。但我不确定我是否理解这个解决方案。

git log

这是git log告诉我的。

$ git log
commit 0c9ac8b157222995d3414b84e7ce1b3e1adf5560
Author: Clueless <clueless@initech.com>
Date:   Fri Feb 14 10:01:38 2014 -0400

Initial commit of lambda.

commit bdd142c778f0c43141cf48d60e4ee0bef018e1c0
Author: Not Clueless <notclueless@initech.com>
Date:   Thu Feb 13 12:50:39 2014 -0400

update red with latest and greatest

commit f1047816fa7b201de7f798e6026b8b29a1bf8f75
Author: Also Not Clueless <alsonotclueless@initech.com>
Date:   Wed Feb 5 15:48:07 2014 -0400

update green with latest and greatest

etc...

我想使用吗?

git push -f origin 0c9ac8...:<???>

但我不想让bdd142...成为原点吗?另外我还要指定什么? ?

图表

也许有几个图可能会有所帮助:

现在的样子:

X-repo
+---master-branch
|
+---dev-branch---+---red-project
|                |
|                +---green-project
|                |
|                +---blue-project
|                |
|                +---lambda-project <-- doesn't belong
|
+---other-branches

Y-repo
+---master-branch
|
+---dev-branch---+---alpha-project
                 |
                 +---beta-project
                 |
                 +---gamma-project

应该是什么样的:

X-repo
+---master-branch
|
+---dev-branch---+---red-project
|                |
|                +---green-project
|                |
|                +---blue-project
|
+---other-branches

Y-repo
+---master-branch
|
+---dev-branch---+---alpha-project
                 |
                 +---beta-project
                 |
                 +---gamma-project
                 |
                 +---lambda-project <-- belongs here

1 个答案:

答案 0 :(得分:3)

最安全的是:

git revert 0c9ac8b157222995d3414b84e7ce1b3e1adf5560

这将在本地撤消提交。然后:

git push

这将更新远程存储库。提交仍然是远程的,只是不再存在了。