Git将origin -f remote_branch推送到隔离分支

时间:2017-10-26 15:55:43

标签: git

如果我有一个远程分支, My_Remote_Branch ,最终将与PR合并为master;分支只是由我来处理,做git push起源有危险吗My_Remote_Branch -f

2 个答案:

答案 0 :(得分:1)

“危险”是一个相对术语。

有些人谈论--force是危险的,他们指的是两种不同的情景,你可以很容易地结束:

  1. 您的分支历史记录不包含遥控器上的某些提交,因此您的推送会有效删除该工作。

  2. 对于rebase或commit --amend,您更改提交HASH ID,​​从而为基于旧提交创建的任何其他分支创建一个混乱。

  3. 如果你是唯一一个在分支机构工作的人,那么问题#2可能不会引起太大关注。唯一真正的问题是,如果您使用多个存储库(多台计算机,或者计算机上不同位置的多个完整存储库)。在这种情况下,您很可能最终会覆盖自己的工作。

    幸运的是,#1的简单解决方案是使用--force-with-lease(在我看来,这应该是默认选项)。如果您的远程分支与原点的分支不匹配,这将阻止您推送到仓库。基本上,它有助于防止您覆盖您不知道或忘记的更改。

    不幸的是,--force-with-lease不是灵丹妙药,因为它对问题#2没有帮助。如果您正在使用其他开发人员正在使用的公共分支或基于分支,则应尽可能避免使用push --force。如果由于某种原因确定需要一个人,那么你需要与每个人协调,以确保你不会让人感到意外,并且一次完成并且以最小的干扰方式完成。

答案 1 :(得分:0)

不,没有特别的危险。

首先,你不可能通过推动“真正”失去历史。没有git命令实际上会破坏或覆盖提交(好吧,除了垃圾收集,显然......)。并且有git reflog等机制可以找到丢失的内容。

git push -f的真正危险在于你可能会浪费大量时间给其他合作者,特别是在开源软件等松散的合作中,没有一个众所周知的团队结构。但由于没有,你完全可以做到。