编辑:关于此问题可能已经有答案:,请注意该问题的标题是指撤消提交,而不是推送。我不认为这应该加强git中两者之间的频繁混淆。还有一个问题,22个不同的答案将成为最好的参考?
我在dev分支下的存储库X中创建了一个新项目lambda
,然后git add
,git commit
和git push
。
原来它不属于该存储库,而是存储库Y中的dev分支。现在看X的人看到了一堆不属于的东西。
如何从X dev中删除该推送?请注意,我不想从X中删除整个分支,只是我做的不好。
如果有帮助,那个项目中的一切都是自包含的,没有其他项目被改变。只是删除lambda项目及其任何历史也没关系。
搜索后,我认为我想要做的是undo a git push。但我不确定我是否理解这个解决方案。
这是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
答案 0 :(得分:3)
最安全的是:
git revert 0c9ac8b157222995d3414b84e7ce1b3e1adf5560
这将在本地撤消提交。然后:
git push
这将更新远程存储库。提交仍然是远程的,只是不再存在了。