在使用上有什么区别吗
git config pull.rebase false # merge (the default strategy)
和
git config pull.ff true
如果可能的话,这两个命令都会快速转发,如果不是合并的话。
我应该使用哪个配置?
发布于 2022-09-28 06:24:57
虽然这两种设置都取决于当git在git pull
期间必须协调本地分支中的更改和更改时git pull
的行为,但它们不会转动相同的旋钮。
pull.ff
可以设置为false | true | only
。它匹配cli选项:--no-ff | --ff | --ff-only
,如果在运行git pull
时传递这些cli选项中的任何一个,则忽略配置设置。如果设置为only
,则如果远程分支不在本地分支的前面,则git pull
将拒绝执行任何操作,因此pull.rebase
设置永远不会启动--除非配置设置被命令行上的标志覆盖。
pull.rebase
可以设置为false | true | interactive | merges
。它与cli选项--rebase[=false|true|merges|interactive]
.匹配。
如果设置为“使用重基组合更改”(例如:true|interactive|merges
),则声明--ff
或--no-ff
的设置不会产生任何效果--无论如何也不会出现合并。
我该用什么?
这个问题取决于上下文--例如:如果您的工作流程特别倾向于一个操作,则将默认值设置为该操作;如果您习惯于特定的操作序列,则将默认值设置为您的用法。
我将不再回答你的问题,而是描述我是如何工作的:
我个人不喜欢使用git pull
,因为您可以一蹴而就地“从中央回购中获取您不知道的更改,并将它们与您的工作合并”,而没有机会检查这两个步骤之间的更改。
我通常是这样说的:
git fetch
git log --graph --oneline origin/master my/branch
(例如:检查我感兴趣的远程分支的状态)git rebase origin/master
或git merge origin/master
(我们碰巧有一个有利于rebase
的工作流,但无论如何:我已经知道这个操作会有多复杂)与git pull
的不同之处在于,在第三步,我可以:
master)
我还为pull --ff-only
设置了一个别名,因为这个别名是“无害的”(例如:如果您运行它,git不会搞乱您的代码,它要么会做一些琐碎的事情,要么会停下来说“这不是快速转发”),并使用它来更新不属于我的分支。
发布于 2022-09-28 05:53:49
如果可能的话,
两个命令都是快速转发的。
实际上,当设置设置为pull.ff
时,如果当前分支的尖端不能被快速转发,则only
将拒绝提取。
而pull.rebase
只是简单地指示pull
进行合并(快进与否)。
就我个人而言,我总是使用git config --global pull.rebase true
,以便在刷新的远程跟踪分支之上重设(重播)本地提交(尚未被推送)。
类似的命令有什么意义?
因为这两种设置实现了不同的目标:
pull
.
pull.ff
to only
不允许快速转发pull
:这是在合并pull.ff
上应该做的事情。pull.rebase
设置为true,那么pull.ff
并不重要:如果是关于在pull
上做什么(合并?或重基?)https://stackoverflow.com/questions/73876703
复制相似问题