Git 以原子方式推送,仅当目标分支位于预期的 SHA 时

aij*_*aij 3 git

有没有办法只在我上次提取后没有改变的情况下推送到一个分支?

更具体地说,我想删除已经合并的分支,但前提是在我检查分支是否已合并和我推送删除之间没有其他人向它们推送新提交。

git push文档中,我看到它确实支持一个--atomic选项,但该选项用于以原子方式相互更新多个分支,而不是确保我对远程分支的更新相对于其他用户是原子的更新。

即,我想删除远程 git 存储库上的合并分支,而不会删除任何其他人的工作,即使他们正在同时工作。

bk2*_*204 5

是的,这可以通过使用该--force-with-lease选项来实现。例如:

$ git push --force-with-lease=refs/heads/foo origin :refs/heads/foo
Run Code Online (Sandbox Code Playgroud)

这是为强制推送而设计的,但也适用于删除。该选项有许多变体,如果您愿意,可以采用显式值。