删除bitbucket中的最后一个提交

我犯了一个错误,我不知道如何删除我在库中的最新推送。 我拉最新的应用程序更新,但它有冲突,我把它推到知识库。

如何删除我最后一次提交? 或者如何解决它?

首先,如果您在同一个代码库中与其他人一起工作, 则不应该删除提交,因为当您在存储库上强制更新时,它将使同事的本地存储库处于非法状态(例如,如果它们在你删除的那个之后做了提交,那些提交是无效的,因为它们是基于一个现在不存在的提交)。

说,你可以做的是恢复提交。 这个过程完成不同(不同的命令),取决于你使用的CVS:

在git上 :

git revert <commit> 

在mercurial上 :

 hg backout <REV> 

编辑:恢复操作创build一个新的提交,做了相反的回复提交(例如,如果原始提交添加一行,恢复提交删除该行),有效地删除不需要的提交的更改而不重写存储库历史。

如果你和别人一起工作(或者很乐意让他们烦恼) ,那么可以从bitbucket分支中删除提交。

如果您尝试更改非主分支:

 git reset HEAD^ # remove the last commit from the branch history git push origin :branch_name # delete the branch from bitbucket git push origin branch_name # push the branch back up again, without the last commit 

如果你想改变主分支

一般来说,master分支不是特殊的 – 这只是一个约定。 然而,bitbucket和github以及类似的网站通常需要有一个主分支(大概是因为比编写更多的代码来处理仓库没有分支的事件更容易 – 不知道)。 所以你需要创build一个新的分支,并使其成为主分支:

 # on master: git checkout -b master_temp git reset HEAD^ # undo the bad commit on master_temp git push origin master_temp # push the new master to Bitbucket 

在Bitbucket上,进入存储库设置,并将“主分支”更改为master_temp (在Github上,更改“默认分支”)。

 git push origin :master # delete the original master branch from Bitbucket git checkout master git reset master_temp # reset master to master_temp (removing the bad commit) git push origin master # re-upload master to bitbucket 

现在去Bitbucket,你应该看到你想要的历史。 您现在可以进入设置页面并将主分支更改回master

这个过程也可以用于其他的历史变化(例如git filter-branch )。 在新的历史分离之前,您只需确保重置为适当的提交。

编辑 :显然你不需要去github所有这些麻烦,因为你可以强制推重置分支 。

处理恼人的合作者

下一次任何人试图从你的仓库中拉(如果他们已经拉不好提交),拉将失败。 他们将手动不得不重置到更改的历史logging之前的提交,然后再次拉。

 git reset HEAD^ git pull 

如果他们已经提交了错误的提交, 并提交 ,那么他们将不得不重置,然后git cherry-pick他们想创build的良好提交,有效地重新创build整个分支没有不良提交。

如果他们从来没有拉坏坏的话,那么这整个过程就不会影响到他们,而且他们可以像平常一样拉。

你可以重置为HEAD^然后强制推送它。

 git reset HEAD^ git push -u origin master --force 

它会删除最后一次提交,并将bitbucket反映为提交删除,但仍将保留在其服务器上。

我在过去曾经遇到过git回复的问题(主要是因为我不太确定它是如何工作的)。由于合并问题,我遇到了麻烦。

我简单的解决scheme是这样的

步骤1。

  git clone <your repos URL> . 

你的项目在另一个文件夹中,然后:

第2步。

 git reset --hard <the commit you wanna go to> 

然后步骤3。

在您的最新(和主要)项目目录(有问题的最后一次提交)粘贴步骤2的文件

步骤4。

 git commit -m "Fixing the previous messy commit" 

第5步。

请享用

一旦提交更改,将无法删除。 因为承诺的基本性质是不能删除的。

你可以做的事情(简单而安全的方法),

交互式Rebase:

1) git rebase -i HEAD~2 HEAD〜2#将显示你最近的2次提交

2)您的提交将列出,最近将出现在页面的底部LILO(Last in Last Out)

在这里输入图像说明

完全删除最后一个提交行

3)按ctrl+XESC:wq

现在你的分支会更新,没有你最后一次提交