Existe uma maneira de configurar o repositório Git do host de forma que qualquer git pull
feito a partir de seus clones (locais) use --rebase
por padrão? Ao pesquisar no Stack Overflow, aprendi branch.autosetuprebase
, mas ele precisa ser configurado por clone individualmente.
Meu fluxo projeto está configurado tal que pull
o develop
ramo antes merge
ing um ramo de recurso a ele. Isso pull
quase sempre usa --rebase
, então estou tentando descobrir se esse pode ser o padrão.
Respostas:
Agora, existem três níveis diferentes de configuração para o comportamento de recebimento padrão. Do mais geral ao mais fino, são:
1
pull.rebase
Definir isso como
true
significa quegit pull
é sempre equivalente agit pull --rebase
(a menos quebranch.<branchname>.rebase
seja explicitamente definido comofalse
). Isso também pode ser definido por repositório ou globalmente.2)
branch.autosetuprebase
Definir isso como
always
significa que sempre que uma ramificação de rastreamento for criada, uma entrada de configuração como a abaixo será criada para ela. Para um controlo mais fino granulado, este também pode ser definida comonever
,local
ouremote
e podem ser definidos por ou repositório globalmente. Vejagit config --help
para mais detalhes.3)
branch.<branchname>.rebase
Definindo para
true
meios de que um determinado ramo sempre puxar do seu montante através rebasing, a menos quegit pull --no-rebase
seja explicitamente utilizado.Conclusão
Portanto, embora não seja possível alterar o comportamento padrão para todos os futuros clones de um repositório, você pode alterar o padrão para todos os repositórios do usuário atual (existente e futuro) via
git config --global pull.rebase true
.fonte
~/.gitconfig
, o que significa que cada desenvolvedor que clona o repositório host precisará executar o comando. Não reclame da sua solução. É bom, só quero confirmar que entendi seu ponto de vista corretamente.E se
Isso diz ao git para sempre puxar com rebase.
fonte
--bool
, é desnecessárioA resposta é não.
Não há uma maneira de configurar um repositório remoto para que todos que o clonam tenham o comportamento padrão de
git pull
alterado.No entanto, você pode configurar um gancho do lado do servidor que verifique se ninguém envia pushs de consolidação ( algo como isto , talvez).
Também há algumas opções de configuração nas quais você pode se interessar. Todos os desenvolvedores que clonam no repositório remoto terão que configurá-los manualmente.
1. Opção
branch.<name>.rebase
Você pode configurar uma filial local para sempre usar
--rebase
, assim, substituindo<name>
por um nome de filial:Depois de executá-lo
master
, amaster
seção em.git/config
ficou assim:2. Opção
branch.autosetuprebase
A execução desse comando de configuração anterior para cada ramificação do Git pode ser um aborrecimento, portanto, você pode configurar o Git para configurá-lo automaticamente para cada nova ramificação:
(Você também pode especificar
never
,remote
elocal
, vejaman git-config
para mais detalhes.)Sem a
--global
opção, a configuração é salva.git/config
e apenas o repositório atual é afetado. Com--global
, a configuração é salva~/.gitconfig
e todos os repositórios não configurados são afetados.Esta opção não afeta as ramificações já existentes.
3. Opção
pull.rebase
(Você também pode dar a
--global
opção.)Se essa opção for verdadeira, a execução
git pull
será equivalente agit pull --rebase
, a menos quebranch.<name>.rebase
tenha sido definida comofalse
.fonte
Isso torna a
--rebase
opção o padrão ao emitir umagit pull
em uma determinada ramificação.@Limlim, eu precisava adicionar
true
para fazer sua primeira opção funcionar.Portanto, a sintaxe correta é:
Para executar este comando na
develop
ramificação:E agora a
develop
seção.git/config
aparece assim:fonte
Atualmente, não há como definir a política padrão para um repositório.
Se você quiser e usar pelo menos o git 1.7.9, poderá definir globalmente a
pull.rebase
configuração da seguinte maneira:Mas você terá que fazer em cada máquina. Uma opção poderia ser configurar o modelo / esqueleto inicial do usuário padrão com essa opção. Os usuários podem, no entanto, alterar essa opção.
Se você não deseja mesclagens, você pode definir um gancho do lado do servidor para rejeitar empates com mesclagens.
Para sua referência, esta é a documentação de origem do pull.rebase:
fonte