繁体   English   中英

Git将原点-f remote_branch推送到隔离的分支

[英]Git push origin -f remote_branch to isolated branch

如果我有一个远程分支My_Remote_Branch ,它将最终与PR合并为master分支; 而且该分支仅由我处理,执行git push origin My_Remote_Branch -f是否有危险?

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

人们谈论的是--force危险,他们指的是两种不同的情况,您很容易陷入这种情况:

  1. 您的分支历史记录不包括远程上的某些提交,因此您的推送有效地删除了该工作。

  2. 在使用rebase或commit --amend的情况下,您可以更改提交HASH ID,​​从而为基于旧提交创建的任何其他分支创建混乱。

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

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

不幸的是,-- --force-with-lease并不是灵丹妙药,因为它对问题2没有帮助。 如果您正在其他开发人员正在使用的公共分支上工作或以分支为基础,则应尽可能避免使用push --force 如果确定出于某种原因需要某个人,那么您需要与每个人进行协调,以确保您不会被别人抓住而感到惊讶,并且确保这样做的时间和方式可以将干扰降到最低。

不,没有特别的危险。

首先,您不可能通过推动“真正”失去历史。 从来没有git命令实际破坏或覆盖提交(嗯,除了垃圾回收之外,显然……)。 还有诸如git reflog类的机制来查找丢失的内容。

git push -f的真正危险在于,您可能会浪费很多其他合作者的时间,尤其是在没有知名团队结构的开源软件之类的松散协作中。 但是,既然没有,那么您完全可以做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM