删除bitbucket中的最后提交
我犯了一个错误,我不知道如何删除我在库中的最新推送。 我拉应用程序的最新更新,但它有冲突,我把它推到知识库。
如何删除我最后一次提交? 或者如何解决它?
首先,如果您在同一代码库中与其他人一起工作,则不应删除提交,因为当您在存储库上强制更新时,它会使同事的本地存储库处于非法状态(例如,如果它们在你删除的那个之后做了提交,那些提交将是无效的,因为它们是基于一个现在不存在的提交)。
说,你可以做的是恢复提交。 根据您使用的CVS,此过程以不同的方式完成(不同的命令):
在git上:
git revert <commit>
在mercurial上:
hg backout <REV>
编辑:恢复操作创建了一个新的提交,做了与恢复提交相反的操作(例如,如果原始提交添加了一行,恢复提交删除该行),可以在不重写存储库历史记录的情况下有效移除不需要的提交的更改。
如果你没有和其他人一起工作(或者很乐意让他们烦恼) ,那么可以从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
如果你想改变主分支
在git中,主分支并不特殊 - 这只是一个约定。 然而,bitbucket和github以及类似的网站通常要求有一个主分支(大概是因为比编写更多的代码来处理仓库没有分支的事件更容易 - 不确定)。 所以你需要创建一个新的分支,并将其作为主分支:
# 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上所有这些麻烦,因为你可以强制推复位分支。
处理烦人的合作者
下一次任何人试图从你的仓库中取出,(如果他们已经拉出了错误的提交),拉将失败。 他们将在更改的历史记录之前手动重置为提交,然后再次提取。
git reset HEAD^
git pull
如果他们已经提交了错误的提交,并将其提交,那么他们将不得不重置,然后git cherry-pick
他们想创建的好提交,有效地重新创建整个分支而没有错误的提交。
如果他们从来没有拉过坏提交,那么这整个过程不会影响他们,他们可以像往常一样拉。
您可以重置为HEAD^
然后强制按下它。
git reset HEAD^
git push -u origin master --force
它会删除最后一次提交,并将bitbucket反映为提交删除,但仍将保留在其服务器上。
链接地址: http://www.djcxy.com/p/23775.html