我们是两个开发人员,正在使用 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/