有没有办法设置主机 Git 存储库,以便默认git pull
使用其(本地)克隆完成的任何操作?--rebase
通过在 Stack Overflow 上搜索,我了解了branch.autosetuprebase
,但需要为每个克隆单独配置。
我的项目流程是这样设置的,以便我们pull
在向它添加功能分支develop
之前先merge
创建分支。这pull
几乎总是使用--rebase
,所以我试图弄清楚这是否可以成为默认值。
有没有办法设置主机 Git 存储库,以便默认git pull
使用其(本地)克隆完成的任何操作?--rebase
通过在 Stack Overflow 上搜索,我了解了branch.autosetuprebase
,但需要为每个克隆单独配置。
我的项目流程是这样设置的,以便我们pull
在向它添加功能分支develop
之前先merge
创建分支。这pull
几乎总是使用--rebase
,所以我试图弄清楚这是否可以成为默认值。
默认拉取行为现在有 3 种不同级别的配置。从最一般到最细粒度,它们是:
pull.rebase
将此设置为true
意味着git pull
始终等效于git pull --rebase
(除非branch.<branchname>.rebase
明确设置为false
)。这也可以按存储库或全局设置。
branch.autosetuprebase
将此设置为always
意味着无论何时创建跟踪分支,都会为其创建如下所示的配置条目。对于更细粒度的控制,这也可以设置为never
,local
或者remote
并且可以设置为每个存储库或全局。有关详细信息,请参阅git config --help
。
branch.<branchname>.rebase
将此设置为true
意味着该特定分支将始终通过变基从其上游拉取,除非git pull --no-rebase
明确使用。
因此,虽然您无法更改存储库的所有未来克隆的默认行为,但您可以通过git config --global pull.rebase true
.
怎么样
git config --global pull.rebase true
这将告诉 git 始终使用 rebase 拉动。
没有办法设置远程存储库,以便克隆它的每个人都具有git pull
更改的默认行为。
但是,您可以设置一个服务器端挂钩来检查是否没有人推送合并提交(可能是这样的)。
还有一些您可能感兴趣的配置选项。从远程存储库克隆的所有开发人员都必须自己手动设置。
branch.<name>.rebase
您可以将本地分支配置为始终使用--rebase
,就像这样,用<name>
分支名称替换:
git config branch.<name>.rebase true
在 上运行后master
,中的master
部分.git/config
如下所示:
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
branch.autosetuprebase
为每个 Git 分支运行之前的配置命令可能很麻烦,因此您可以将 Git 配置为自动为每个新分支设置它:
git config branch.autosetuprebase always
(您也可以指定never
、remote
和local
,详情请参阅man git-config
。)
如果没有该--global
选项,配置将保存到.git/config
,并且只有当前存储库受到影响。使用--global
,配置保存到~/.gitconfig
,并且每个未配置的存储库都会受到影响。
此选项不会影响已经存在的分支。
pull.rebase
git config pull.rebase true
(您也可以--global
选择它。)
如果此选项为 true,则 runninggit pull
等效于git pull --rebase
,除非branch.<name>.rebase
已设置为false
。
这使得在 给定分支上--rebase
发出 a 时该选项成为默认选项。git pull
@Flimm,我需要添加true
以使您的第一个选项起作用。
所以正确的语法是:
git config branch.<branch>.rebase true
develop
要在分支上运行此命令:
git config branch.develop.rebase true
现在develop
部分.git/config
看起来像这样:
[branch "develop"]
remote = origin
merge = refs/heads/develop
rebase = true
目前无法为存储库设置默认策略。
如果你自己想要它并且至少使用 git 1.7.9,你可以全局设置pull.rebase
配置如下:
git config --global pull.rebase true
但是你必须在每台机器上做。一种选择是使用该选项配置默认用户主页模板/骨架。但是,用户可能会更改该选项。
如果您不想要合并,您可以定义一个服务器端挂钩来拒绝合并推送。
供您参考,他是pull.rebase的源文档:
如果为 true,则在获取的分支之上重新设置分支,而不是在运行“git pull”时从默认远程合并默认分支。请参阅“branch..rebase”以在每个分支的基础上进行设置。
合并时,将 --rebase-merges 选项传递给 git rebase 以便本地合并提交包含在 rebase 中(有关详细信息,请参阅git-rebase )。
保存时,还将 --preserve-merges 传递给 git rebase 以便本地提交的合并提交不会通过运行 git pull 变平。
当值是交互式时,rebase 以交互模式运行。
注意:这是一个可能很危险的操作;除非您了解其含义,否则不要使用它(有关详细信息,请参阅git-rebase)。