git push --all
和git push --mirror
有什么区别?
我只知道这个:
--all
不推动它和--mirror
。这是对的?
还有其他差异吗?
正如它在the documentation中所说:
- 所有
Push all branches (i.e. refs under
refs/heads/
); cannot be used with other. - 镜子
... specifies that all refs under
refs/
(which includes but is not limited torefs/heads/
,refs/remotes/
, andrefs/tags/
) be mirrored ...
因此,如果不是,关键的区别是,一个意味着refs/heads/*
,一个意味着refs/*
。 refs/heads/*
名称是分支名称。 refs/remotes/
中的任何内容都是远程跟踪名称,refs/tags/
中的任何内容都是标记名称。其他值得注意的名称空间包括refs/notes/
,refs/replace/
和奇异的refs/stash
。
--mirror
选项接着提到:
本地更新的引用将在远程端强制更新,删除的引用将从远程端删除。
因此,--mirror
有效地暗示了--force
和--prune
; --all
没有。但是,如果您愿意,可以将--force
和/或--prune
添加到git push --all
。
由其他Git决定是否遵守礼貌请求(不使用--force
发送的请求)或命令(--force
)来更改其引用。
随着删除的本地分支,
--all
不推动它和--mirror
。
这是--prune
选项的结果:告诉你的Git使用--prune
意味着“要求他们删除名字空间中不属于我的名字”。