Git Force vs Force with Lease

669 阅读2分钟

Git Force vs Force with Lease

以及何时使用它们

Mohammad-Ali A'RÂBI

Mohammad-Ali A'RÂBI

遵循

8月12日- 2分钟阅读

当你想执行一个git push ,而远程 repo 拒绝它的时候,有一个危险的方法可以让它发挥作用。

git push --force

这种危险的方法非常流行,大多数IDE都有一个专门的复选框。但是,force 有一个兄弟姐妹,没有得到足够的重视。

git push --force-with-lease

集成开发环境通常没有为force-with-lease 的复选框,文件中通常没有提到它,它也没有得到自己的科幻电影。

引入力与租借

当用force 推送时,git会直接忽略历史,并将其覆盖。当用什么都不推送时,git希望你已经追加了历史记录。但大多数时候,你在历史中做了一个小小的改动。

  • 你重新排列了提交的顺序。
  • 你改变了提交信息。
  • 你把这些提交压成了一个。

在这些情况下,你只是做了一些 "家务事",并没有破坏提交的贡献。在这种情况下,force-with-lease 就会派上用场。基本上,force-with-lease 所检查的是你没有破坏实际工作。所以,如果你没有破坏它,就不要force

不要强行推送,除非你想破坏一些东西。

什么时候用租借的方式使用武力

假设普通的推送不起作用,如果人们在做体面的日常工作,就不需要使用force 。每一个日常的需求都可以用force-with-lease 来满足。这些包括任何形式的重放,特别是。

  • 把一个分支重新放到另一个分支上。
  • 重写过去的一个提交。
  • 把几个提交的内容压在一起
  • 重新安排提交的顺序,或者
  • 改变先前提交的作者。

何时使用武力

当做一些讨厌的事情时。这包括

  • 将一个提交及其贡献从历史中删除。
  • 从历史记录中删除一个不小心提交的大文件。
  • 从 repo 中删除一个文件夹及其所有历史记录。

最后要说的是

在我使用git的6年中,我只做过一次force 。如果你经常这样做,那就有问题了。另外,我从来没有强行推送到master(除了那一次)。

要做force-with-lease 和其他git技巧的快捷方式,请看我的另一篇文章《16个Git技巧和窍门》。