作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们是使用 BitBucket 上的中央存储库从事一个项目的两名开发人员。
有时我想将历史重置为特定修订版(我知道这会丢失信息):
git.exe reset --mixed 0e827d5fcb7d9b
git.exe push --all --force
这正确地将历史重置为我想要的修订。但是,如果第二个开发人员没有做同样的事情,如果他没有重置他自己的 local 存储库,那么他将要进行的下一次推送 将添加回我的所有提交重置后删除!
当项目中只有两个开发人员时,情况还不错。我可能会要求其他开发人员在其本地存储库上运行相同的重置,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
。
关于混帐 : How to reset the history of all the repositories associated with a project?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41151797/
我是一名优秀的程序员,十分优秀!