我试图了解它们之间的区别
git push -f
Run Code Online (Sandbox Code Playgroud)
和
git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)
我的猜测是,如果遥控器没有本地分支没有的提交,后者只会推送到遥控器?
如果有更好的方式来表达问题,lmk,但希望它很清楚.
我用了
git reset --hard dc082bc...由于一些错误的提交,恢复到分支回到所需的先前状态.这让我当地的分公司很好.但是,我想将'origin'上的分支回滚到同一个commit,以便我可以重新开始.谁能告诉我如何将原始分支(非主人)恢复到此提交?
我已经尝试过git push origin master,但它给出了以下错误
! [rejected] branch -> branch (non-fast-forward) error: failed to push some refs to 'git@github.com:xxx/xxx.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
假设我有这样的代码:
git fetch && git diff origin origin/master --quiet || echo "untracked"
Run Code Online (Sandbox Code Playgroud)
我希望它定期运行。比方说,每秒一次,或每五秒一次,依此类推。
如果此代码输出“untracked”,或者换句话说,如果远程有更新,我将运行 agit pull来更新本地代码。
问题是:做这样的事情不好吗?我的意思是,我知道这将是远程服务器上的持续请求。但是,这样不好吗?除此之外,还有其他副作用吗?非常感谢。
我一直遵循的规则是,一旦将 git 历史推送到远程存储库,就不要修改它。
但我想知道是否交互式变基到 push --force-with-lease 绕过了这个规则?
如果强制租赁成功,其他用户是否完全安全,或者此策略是否有任何警告?
预先感谢您提供任何意见。
当我想强制推送时,我几乎总是使用--force-with-lease. 今天我升级到 Git 2.30 并发现了一个新选项:--force-if-includes.
阅读更新的文档后,我仍然不完全清楚在哪种情况下我会使用--force-if-includes而不是--force-with-lease像我通常那样使用。
我已经开始使用git push --force-with-lease而不是--force在大多数情况下用于额外的分支保护:
我什至可以尝试将此选项设置为默认选项,如下所述:
但使用时的主要烦恼--force-with-lease是输入该标志的尴尬措辞和冗长语法。
Git--force和-f标志更短并且更容易键入,但不提供额外的安全性。
是否有缩写形式--force-with-lease,例如--fwl?
如果默认情况下不存在这样的标志,我如何在自己的计算机上创建这样的标志或别名?