git - autosetuprebase 与 autosetupmerge

标签 git

我只是在我的全局 .gitconfig 文件中转来转去,我注意到我已经设法结束了:

[branch]
  autosetupmerge = always
  autosetuprebase = always

这似乎有点违反直觉,但经过一些阅读后,我仍然不知道我是否需要两者,或者是否足以删除 autosetupmerge 并只保留 autosetuprebase。我工作的大多数项目都有直接的下游-> 上游流程,因此在处理分支时通常首选 rebase。

最佳答案

这里违反直觉的是这些首选项的命名。它们看起来确实指的是相同的功能,但实际上它们并非如此:

  • autosetupmerge 控制 git branchgit checkout -b 是否暗示 --track 选项,即与您的 always 设置,
    • git checkout branchname,如果 branchname 存在于远程但不存在于本地,将创建 branchname 跟踪其远程副本
    • git checkout -b newbranch 将创建一个新分支 newbranch 跟踪您在发出此命令之前 checkout 的任何分支
  • autosetuprebase 控制是否应将新分支设置为重新基于 git pull,即您设置的 always 将导致分支被设置这样 git pull 总是执行 rebase ,而不是 merge 。 (请注意,当您更改此选项时,现有分支会保留其配置。)

因此,同时拥有 autosetupmerge = alwaysautosetuprebase = always 非常有意义;事实上,这也是我所拥有的。

关于git - autosetuprebase 与 autosetupmerge,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5480069/

相关文章:

linux - Git - checkout 后所有文件都失去了可执行权限

c# - 从 gitignore 过滤文件和路径

git - 为什么我需要在 Git 中提交之前的阶段?

git - POSIX 文件 "."作为别名导致 "CFURLGetFSRef was passed this URL which has no scheme"警告

git - tortoisegit = 致命的 : the remote end hung up unexpectedly but not with git bash

git - 识别 merge 到master

GitHub - 使用远程服务器设置自动部署

android - 在 Git 中为免费和付费应用程序风格更改 Android 包名称

使用 Vundle 安装时出现 Git 错误

git - 为什么 git 要求输入提交信息来解释为什么这个 merge 是必要的