git push --force-with-lease 与 --force

标签 git git-push

我试图理解两者之间的区别

git push --force

git push --force-with-lease

我的猜测是后者只推送到远程如果远程提交了本地分支没有

最佳答案

force 用本地分支覆盖远程分支。

--force-with-lease 是一个更安全的选项,如果更多提交被添加到远程分支(由另一个团队成员或同事或其他人),它不会覆盖远程分支上的任何工作你)。它确保您不会通过强制推送来覆盖其他人的工作。

我认为您围绕该命令的总体想法是正确的。如果远程分支与本地计算机上的远程分支具有相同的值 - 您将覆盖远程。如果它没有相同的值 - 它表示在您处理代码时其他人对远程分支所做的更改,因此不会覆盖任何代码。显然,如果远程有额外的提交,那么这些值将不会相同。

我只是认为 --force-with-lease 是我想确保不覆盖任何队友代码时使用的选项。我公司的很多团队都使用 --force-with-lease 作为故障安全的默认选项。在大多数情况下它是不必要的,但如果您碰巧覆盖了另一个人贡献给远程的东西,它会让您省去很多麻烦。

我确定你看过文档,但这里可能包含一些更冗长的解释:

https://git-scm.com/docs/git-push

关于git push --force-with-lease 与 --force,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52823692/

相关文章:

git:显示默认/配置的寻呼机命令

git - "HEAD -> branch, origin/branch"在 git 提交日志中意味着什么?

android - 查看两个版本之间 Android 支持库源代码的变化

git - 如何知道 "git push"将推送哪些差异?

linux - 在使用 Yocto 构建 Linux 镜像时,pathspec 'gnulib' 与 git 已知的任何文件都不匹配

node.js - 更新 docker 容器中的 git 版本

git - 为什么非裸远程的 `git push` 不是远程的 `git fetch` 的对偶

git - 在预推 Hook 中克隆 GIT 存储库时出现异常 "working tree already exists"

git - 文档根目录中的远程 Git 存储库

Git:如何通过 SSH 将 SourceTree 连接到我的 Git-Enabled-Web-Hosting?