AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / computer / Perguntas / 1419613
Accepted
SoniEx2
SoniEx2
Asked: 2019-04-01 06:16:56 +0800 CST2019-04-01 06:16:56 +0800 CST 2019-04-01 06:16:56 +0800 CST

Altere o nome da ramificação padrão do git init

  • 772

Estou tentando descobrir como git initusar um nome de ramificação padrão diferente masterdo primeiro commit, mas não consigo encontrar uma configuração git para ele ou qualquer coisa que me permita fazer isso (por exemplo, aliases funcionam apenas para comandos, não nomes de branch).

Existe alguma maneira de alterar o nome padrão da primeira ramificação que git initconfigura?

git
  • 7 7 respostas
  • 77356 Views

7 respostas

  • Voted
  1. T. Kiley
    2020-07-28T13:36:15+08:002020-07-28T13:36:15+08:00

    A partir do Git 2.28 (lançado em 27 de julho de 2020), agora você pode configurar o nome da ramificação criada ao iniciar um novo repositório :

    $ git config --global init.defaultBranch main
    

    Depois de definir esta variável, a execução git initproduzirá um repositório cuja ramificação inicial é main:

    $ git init
    Initialised empty Git repository in /home/thomas/test-git-repo/.git/
    $ git status
    On branch main
    
    No commits yet
    
    nothing to commit (create/copy files and use "git add" to track)
    

    Notas de lançamento: https://lore.kernel.org/git/[email protected]/

    • 284
  2. Ikke
    2019-04-01T09:28:09+08:002019-04-01T09:28:09+08:00

    Nas versões do Git anteriores a 2.28, HEADé codificado para apontar para refs/heads/master.

    if (create_symref("HEAD", "refs/heads/master", NULL) < 0)
    

    Portanto, não há nenhuma configuração ou opção que você possa passar git initpara alterá-la para outra coisa.

    O que é possível, porém, é alterar o que HEADaponta para logo depois git initcom a ajuda de git symbolic-ref:

    $ git init
    $ git symbolic-ref HEAD refs/heads/test
    

    Isso mudará HEADpara apontar para uma ramificação (ainda não existente) chamada test. Então, quando você criar seu primeiro commit, o branch será chamado testem vez de master.

    • 26
  3. Best Answer
    SoniEx2
    2020-06-11T07:51:23+08:002020-06-11T07:51:23+08:00

    Uma maneira simples de alterar o HEAD padrão é criar um HEAD no diretório do modelo git. Primeiro, configure seu diretório de modelo para ~/Templates/git.git(ou o que você preferir):

    $ git config --global init.templateDir '~/Templates/git.git'
    $ cp -r /usr/share/git-core/templates ~/Templates/git.git
    

    Em seguida, crie o arquivo HEADno diretório do modelo:

    $ echo 'ref: refs/heads/default' > ~/Templates/git.git/HEAD
    

    E você está pronto para ir! Sempre que você executar git init, receberá a mensagem:

    $ git init
    Reinitialized existing Git repository in [...]
    

    Por algum motivo, o git decide se deve usar esta mensagem com base na presença do HEADarquivo em .git, em vez de depender se deve ou não .gitser criado. No entanto, realmente não importa qual mensagem ele mostra. Na página de manual do git-init:

    A execução git initem um repositório existente é segura. Ele não substituirá as coisas que já estão lá. A principal razão para a reexecução git inité pegar modelos recém-adicionados (ou mover o repositório para outro local, se --separate-git-dirfor fornecido).

    Ou seja, git inité garantido que não sobrescreverá o HEADque você colocou no modelo e também não usará o modelo HEADpara sobrescrever um existente HEAD. Como isso está explicitamente documentado, você pode confiar nele.

    Além disso, também diz:

    Arquivos e diretórios no diretório de modelo cujo nome não começa com um ponto serão copiados para o diretório $GIT_DIRapós sua criação.

    O que significa que você também pode confiar que o modelo será copiado imediatamente após a criação de .git, e não posteriormente.

    (Claro, esta é minha interpretação pessoal do manual. É totalmente possível que os desenvolvedores do git discordem.)

    • 17
  4. wsams
    2021-05-04T09:59:54+08:002021-05-04T09:59:54+08:00

    Uma maneira de definir sua ramificação padrão é editar seu ~/.gitconfigarquivo. Adicione as seguintes linhas:

    [init]
      defaultBranch = main
    

    Agora, quando você executar git init, mainserá sua ramificação padrão. Isso é semelhante à corrida git config --global init.defaultBranch mainmencionada por @t-kiley.

    • 10
  5. Davey
    2019-04-12T06:31:57+08:002019-04-12T06:31:57+08:00

    Como mencionado, o HEAD é codificado para apontar para o mestre. No entanto, você pode criar um alias de shell, para fazer git inito que quiser. Se você estiver usando bash como seu shell, coloque algo assim em seu .bashrc:

    function git_init_fnc () {
      default_branch="main"
      if [[ $1 == "init" ]] && [[ $# -eq 1 ]];then
          git init
          if [[ ! -z $(git branch -a | grep $default_branch) ]]; then
              git checkout "$default_branch"
          else
              git checkout -b "$default_branch"
          fi
      else
          /usr/bin/git "$@"
      fi
    }
    
    alias "git"=git_init_fnc
    

    Isso substituirá o comando gitpor uma função. Essa função fará com que o comando seja gitexecutado exatamente da mesma forma, a menos que você esteja chamando git initsem nenhum outro argumento. Quando você chamá git init-lo, ele iniciará o repositório. Em seguida, ele verificará se o ramo "daddy" já existe. Em caso afirmativo, ele verificará esse branch, caso contrário, ele criará o branch e moverá você para ele.

    • 3
  6. Thomas Praxl
    2021-12-24T11:36:44+08:002021-12-24T11:36:44+08:00

    A maioria das respostas para este tópico funciona para algumas versões do git, mas nenhuma resposta funcionou para todas as versões com as quais estou trabalhando (versões git 2.7e ) 2.25.2.30

    Mas, graças a todas as suas respostas, consegui misturar suas ideias compartilhadas e finalmente encontrei uma maneira de oferecer suporte a todas as versões com uma configuração:

    [ Editar: Acontece que minha observação estava errada. Não funcionou, por causa da minha configuração especial.
    Se você tiver problemas com as soluções acima, aqui está outra abordagem (testada para versões git e 2.7) .]2.252.30

    init.defaultBranchcombinado com uma função wrapper (apenas para versões git, que não suportam init.defaultBranch, que é consultado uma vez, no início da sessão).

    A função empacotada emite um git checkout para o branch padrão configurado, diretamente após um init.

    .gitconfig

    …
       [init]
        # Usually only works for git >= 2.28.
        # Thus, these dotfiles provide a git wrapper that performs extra
        # action after git init. The git wrapper takes this setting
        # into account, so that it even works for git < 2.28.
        defaultBranch = "main"
    …
    

    pseudônimos de bash

    #!/usr/bin/env bash
    
    main() {
      wrap_git_if_necessary
    }
    
    # if the current git version does not support a custom
    # default branch (init.defaultBranch, e.g. main),
    # then we wrap it in a function that performs
    # extra action on git init.
    wrap_git_if_necessary() {
      if ! supports_default_branch &>/dev/null; then
        alias git=git_wrapper
      fi
    }
    
    supports_default_branch() {
      command git help --config | grep "init.defaultBranch"
    }
    
    # wrap git to make main the default branch on init.
    # Is required for git versions < 2.28, which do
    # not support init.defaultBranch natively.
    git_wrapper() {
      local defaultBranch
      if command git "$@"; then
        if [[ "$1" == "init" ]]; then
          defaultBranch=$(command git config init.defaultBranch || echo "main")
          command git checkout -b "${defaultBranch}"
        fi
      fi
    }
    
    main "$@"
    
    
    • 1
  7. guyr
    2022-02-14T02:16:58+08:002022-02-14T02:16:58+08:00

    Eu encontrei esta pergunta através da pesquisa. Percebo que estou respondendo a uma pergunta antiga, mas para outras pessoas que podem chegar aqui, o GitHub tem uma página sobre como configurar o nome do branch primário para qualquer repositório criado lá, bem como instruções para alterar o nome do branch primário:

    Renomeando a ramificação padrão de mestre

    • 0

relate perguntas

  • adicionar git. comando não funciona

  • Recuperar arquivo excluído do git após o commit

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    Serviço do Windows 10 chamado AarSvc_70f961. O que é e como posso desativá-lo?

    • 2 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Marko Smith

    ssl.SSLCertVerificationError: falha na verificação do certificado [SSL: CERTIFICATE_VERIFY_FAILED]: não foi possível obter o certificado do emissor local (_ssl.c:1056)

    • 4 respostas
  • Marko Smith

    Como posso saber em qual unidade o Windows está instalado?

    • 6 respostas
  • Martin Hope
    Albin Como faço para ativar o WindowsXP agora que o suporte acabou? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 O "HTTPS Everywhere" ainda é relevante? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch O Windows 10 exclui muitos arquivos minúsculos muito lentamente. Algo pode ser feito para agilizar? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Como Ctrl+C e Ctrl+V funcionam? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve