git : How to reset the history of all the repositories associated with a project?

标签 git bitbucket

我们是两个开发人员,正在使用 BitBucket 上的中央存储库处理一个项目。

有时我想将历史记录重置为特定修订版(我知道这会丢失信息):

git.exe reset --mixed 0e827d5fcb7d9b
git.exe push --all --force

这会正确地将历史记录重置为我想要的修订版本。但是,如果第二个开发人员没有做同样的事情,如果他没有重置自己的本地存储库,那么他将要进行的下一次推送将添加回我的所有提交重置后删除!

当项目中只有两名开发人员时,情况还不错。我可能可以要求其他开发人员在其本地存储库上运行相同的重置,并且 BitBucket 上的历史记录将按照我的意愿保留。但我想知道是否有办法强制重置与该项目关联的所有存储库的历史记录?有没有办法强制第二个开发者在再次推送到 BitBucket 之前将其本地存储库重置为我的存储库?

或者也许我遗漏了一些明显的东西(我不是 Git 大师)...

最佳答案

您可以简单地重置创建一个单独的分支。

git checkout -b newBranch 0e827d5fcb7d9b
git push -u origin newBranch

推送新分支将允许您重置自己的分支并强制推送,而不会打扰第二个开发人员。

但是,如果您想强制第二个开发人员在推迟之前重置他/她自己的工作区,您应该:

  • 重置(如您所做的那样)
  • 修改提交(强制提交 0e827d5fcb7d9b 具有新的 SHA1)

    git commit --amend -m "reset branch"
    
  • 强制推送

那么来自其他开发者的任何推送都会默认被拒绝,因为它是非快进的。
他们需要获取,并在 origin/master 之上重新建立自己的分支。或者将他们自己的工作树重置为新的upstream/master

关于git : How to reset the history of all the repositories associated with a project?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41151797/

相关文章:

git subtree merge on the root of repository (with.git-flow)

git - 如何在git中关注一个文件

php - 有没有更好的方法来编写 git 预提交 Hook 来检查提交中的任何 php 文件是否存在解析错误?

git - 如何在 Azure DevOps 中的 PR 完成时添加 Git Hook commit-msg?

git:如何查看分支中所做的更改

linux - Git 服务器 - 自动(重新)推送

android - EGit 忽略/Android

Eclipse、Git 和 Bitbucket - 无法推送 - 错误 401 未经授权

git - 我可以在 pull 请求被批准之前在我的分支中提交吗?

git - 如何做第一个bitbucket提交?