删除bitbucket中的最后一个提交

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

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

    5 Solutions collect form web for “删除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

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