有没有一种方法来设置主机Git存储库,这样从它的(本地)克隆进行的任何Git拉取默认使用——rebase ?通过在Stack Overflow上搜索,我了解了分支。Autosetuprebase,但它需要每个克隆单独配置。
我的项目流程是这样设置的,我们在将一个特征分支合并到它之前拉开发分支。这个pull几乎总是使用。rebase,我试着弄清楚这是否可以是默认值。
有没有一种方法来设置主机Git存储库,这样从它的(本地)克隆进行的任何Git拉取默认使用——rebase ?通过在Stack Overflow上搜索,我了解了分支。Autosetuprebase,但它需要每个克隆单独配置。
我的项目流程是这样设置的,我们在将一个特征分支合并到它之前拉开发分支。这个pull几乎总是使用。rebase,我试着弄清楚这是否可以是默认值。
当前回答
缺省的拉行为现在有3个不同级别的配置。从最一般的到最细的,它们是:
1. pull.rebase
将此设置为true意味着git pull总是等价于git pull——rebase(除非branch.<branchname>。Rebase显式设置为false)。这也可以为每个存储库或全局设置。
2. branch.autosetuprebase
将此设置为总是意味着每当创建跟踪分支时,将为其创建如下所示的配置条目。对于更细粒度的控制,也可以将其设置为never、local或remote,并且可以为每个存储库设置或全局设置。详见git config——help。
3.分支。< branchname > .rebase
将此设置为true意味着该特定分支将始终通过rebase从其上游进行拉取,除非显式地使用git pull——no-rebase。
结论
因此,虽然您不能更改存储库的所有未来克隆的默认行为,但您可以通过git config -global pull更改当前用户(现有和未来)存储库的默认行为。变基真的。
其他回答
这使得——rebase选项成为对给定分支执行git pull时的默认选项。
@Flimm,我需要添加真,使你的第一个选择工作。
所以正确的语法是:
git config branch.<branch>.rebase true
在develop分支上运行此命令:
git config branch.develop.rebase true
现在.git/config中的开发部分看起来像这样:
[branch "develop"]
remote = origin
merge = refs/heads/develop
rebase = true
缺省的拉行为现在有3个不同级别的配置。从最一般的到最细的,它们是:
1. pull.rebase
将此设置为true意味着git pull总是等价于git pull——rebase(除非branch.<branchname>。Rebase显式设置为false)。这也可以为每个存储库或全局设置。
2. branch.autosetuprebase
将此设置为总是意味着每当创建跟踪分支时,将为其创建如下所示的配置条目。对于更细粒度的控制,也可以将其设置为never、local或remote,并且可以为每个存储库设置或全局设置。详见git config——help。
3.分支。< branchname > .rebase
将此设置为true意味着该特定分支将始终通过rebase从其上游进行拉取,除非显式地使用git pull——no-rebase。
结论
因此,虽然您不能更改存储库的所有未来克隆的默认行为,但您可以通过git config -global pull更改当前用户(现有和未来)存储库的默认行为。变基真的。
如果你正在使用.gitconfig,并且想要在拉取时使用merge而不是rebase,你可以将这段代码插入到你的.gitconfig中:
[pull]
rebase = false
这将消除在您设置的每个新项目上烦人的警告。
如何
git config --global pull.rebase true
这将告诉git总是拉与rebase。
答案是否定的。
没有一种方法可以设置远程存储库,使每个克隆它的人都改变了git的默认行为。
但是,您可以设置一个服务器端钩子来检查是否没有人推送合并提交(也许类似这样)。
还有一些您可能会感兴趣的配置选项。所有从远程存储库克隆的开发人员都必须自己手动设置。
1. 选择分支。<名称> .rebase
你可以配置一个本地分支总是使用——rebase,像这样,用分支名称替换<name>:
git config branch.<name>.rebase true
在master上运行后,.git/config中的master部分是这样的:
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
2. 选择branch.autosetuprebase
为每个Git分支运行之前的config命令可能会很麻烦,所以你可以配置Git为每个新分支自动设置:
git config branch.autosetuprebase always
(你也可以指定never, remote和local,详见man git-config。)
如果没有——global选项,配置将保存到.git/config,并且只影响当前存储库。使用——global,配置保存到~/。Gitconfig,并且每个未配置的存储库都会受到影响。
该选项不会影响已经存在的分支。
3.选择pull.rebase
git config pull.rebase true
(你也可以给它——global选项。)
如果这个选项为真,运行git pull等同于git pull——rebase,除非branch.<name>。Rebase已设置为false。