![](/img/trans.png)
[英]Why does git pull origin develop --rebase cause conflict when git pull origin develop doesn't?
[英]Difference between 'git pull origin develop --rebase' and 'git pull --rebase origin develop'
我找不到区别,但可能有区别吗? 之间:
git pull origin develop --rebase
git pull --rebase origin develop
Git文档状态:
git pull [<options>] [<repository> [<refspec>…]]
所以你会认为选项 B 是正确的,但比..
关于选项与论点的放置应该有多严格,存在相互竞争的理论。 POSIX 实用程序指南规定了您所说的选项 B。然而,Git 尝试在选项放置方面非常灵活,即使存在可选或必需的位置参数。
这些是 Git 选项的一般规则:
git
和子命令动词之间的选项,例如git --no-replace-objects log
,由 Git 前端( git
程序本身)处理。 前端将这些转换为环境变量设置,这意味着您始终可以设置一个环境变量。 例如:
git --git-dir=<path> ...
和
GIT_DIR=<path> git ...
做同样的事。
放置在子命令动词之后的选项由子命令处理。
单字母选项(例如-v
)前面有一个连字符,可以组合在一起。 多字母选项,例如--name-status
,前面有双连字符。 因此,在git diff
,有一个-c
选项(“组合差异”),但也有一个--cc
选项(“密集组合差异”); single-c 选项需要一个破折号,double-c 选项需要一个双破折号。
任何以连字符开头的东西都是一个选项,除了双连字符之后。
git filter-branch
命令稍微打破了最后一条规则,因为它必须解析自己的选项,然后将一些选项传递给git rev-list
。 因此,使用 filter-branch,您可以运行:
git filter-branch <filter-options> -- <rev-list-options>
并且<rev-list-options>
本身可以有选项,然后是第二个独立的双连字符--
,然后是路径名。 1
这一切加起来就是你所说的选项 A。 但请注意,如果你在编写命令时考虑到选项 B,它们都在选项 A 下工作。
是否有处理选项的顺序?
过去,对于某些 Git 子命令,有些地方的顺序特别重要。 现在已修复,但您将在git checkout-index
文档中看到此评论:
标志的顺序曾经很重要,但不再重要。
然而,一般来说,选项是按照它们出现的顺序进行处理的,而且经常重复的选项会覆盖前一个选项。 例如:
git --git-dir=/tmp --git-dir=.git status
使用.git
作为 Git 目录,而不是/tmp
。
1到可以在这里,我的意思是身体能。 您实际上不应该将这种容量与git filter-branch
因为它是一种将枪对准您自己脚的形式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.