你怎么能';重复使用';git分支安全
我需要找到一种方法来将Git分支更新为新的ref,这样从客户机的角度来看,就可以创建一个新的分支。我心中有一个过程,但我想就我没有考虑的边缘案例提供建议 这里的用例是我们在master中开发的,希望定期冻结代码,并将发布分支更新到master所在的位置。我们不希望每次都创建一个新分支,因为我们的自动化需要更新才能使用新分支 通过这个过程,我们限制了谁以及如何发布提交(cherry最终只从master中挑选),所以发布中不应该有不在master中的提交。虽然这个过程从来都不是完美的,但我还是想谨慎一点 现在,我正计划通过以下方式使用“重置--hard”:你怎么能';重复使用';git分支安全,git,version-control,branch,git-merge,git-reset,Git,Version Control,Branch,Git Merge,Git Reset,我需要找到一种方法来将Git分支更新为新的ref,这样从客户机的角度来看,就可以创建一个新的分支。我心中有一个过程,但我想就我没有考虑的边缘案例提供建议 这里的用例是我们在master中开发的,希望定期冻结代码,并将发布分支更新到master所在的位置。我们不希望每次都创建一个新分支,因为我们的自动化需要更新才能使用新分支 通过这个过程,我们限制了谁以及如何发布提交(cherry最终只从master中挑选),所以发布中不应该有不在master中的提交。虽然这个过程从来都不是完美的,但我还是想谨慎
git checkout master
MASTER_HEAD=`git rev-parse HEAD`
git checkout release
git reset --hard $MASTER_HEAD
git push -f origin
这有点吓人,因为如果一个提交确实进入了主控之外的发布,那么它就有可能在下一次拉某人的时候进入发布。任何强迫的推搡都会把我吓坏
我也看过“更新参考”,但我还不明白
最后一种方法是在剪切发布后,标记发布分支并删除分支。然后,当代码冻结再次发生时,从master重新创建释放。这里的缺点是,由于分支不再存在,任何自动化也需要禁用。更新远程分支的方法似乎是正确的 一个警告是,如果一个新的提交被推到
release
,而不是以前的release
s的快速后续提交,那么如果有人在哪里更新他们的本地release
分支通过通常的git pull
,则可能会出现不希望的合并
本地发行版
分支机构的任何更新都应通过以下方式完成:
git fetch
git reset --hard origin/release
我认为这可以通过将master合并到release中以一种更简单的方式解决。我不明白为什么会有问题,如果有充分的理由,请告诉我们。我会做以下几件事:
git checkout rebase
git merge master
git push -f origin
我不太清楚,但你似乎无缘无故地经历了很多痛苦和痛苦。请原谅我的假设,但这似乎是对您的自动化的
增强
,允许它更改为新的发布分支将是微不足道的。我想,要想得到你想要的东西,最好的办法就是在master
brancharelease
上下功夫。在release
中进行发布修复,并将相关修复合并回master
。一旦你对发行版满意了
标记它,停止对该分支的工作,并为下一个发行版创建一个新的分支。现在有一个很好的遗留自动化功能不容易更新。这就是保持一个分支名称背后的推动力。我们当前的git结构也造成了问题,所以这比更新所有的自动化更重要。如果你真的被卡住了,那么你就被卡住了,但我会小心使用“安全”这个词。记住,unix的设计理念在git中非常强大。特别是它不会阻止你做愚蠢的事情,因为那会阻止你做聪明的事情。你可以使用组成分支的ref
对象,但是你必须使用你的判断来判断你所做的是愚蠢的
还是聪明的
,这将是非常棒的,但由于我不想说的原因和我无法控制的原因,这是不可能的。这正是我问题的症结所在。有很多承诺我们也不想参与,我不相信每次都会发生。git钩子可以防止它,但它会很昂贵,我们永远无法关闭它,因为从现在起一两年后,有人可能会使用一台旧计算机,而在执行拉操作时却不记得这样做。