Pergunta

Eu tenho um script que precisa referenciar a inicial comprometer em um repositório. git tem a HEAD referência especial, mas não tem a TAIL correspondente. Eu não consigo encontrar nada na git help rev-parse que parece me ajudar.

Aqui está o que eu gostaria de fazer:

git show TAIL

Aqui está uma opção que tenho:

git show `git log --reverse | if read a commit ; then echo $commit ; fi`

Isso é muito hacky e depende da saída do git log não mudar.

Agora eu só marcar o commit inicial e usar isso como meu refspec. No entanto, eu gostaria de lançar uma ferramenta geral, de modo que não é uma ótima opção.

Foi útil?

Solução

Não use git-log para execução de scripts: utilização a git-rev-list, ou git-log com formato personalizado especificado ( "--format = " opção)

Não há problema adicional com a sua pergunta: pode existir mais de um como raiz CAUDA commit (parentless comprometer) em um repositório (mesmo se descontarmos ramos desconexas, como 'html', ' homem' e 'todo' em git.git repositório). Isso geralmente é resultado da junção projetos separados em um, ou usando mala subárvore do subprojeto desenvolvidos separadamente.

Para repositório exemplo git tem commits 6 raiz: git-gui, gitk (sub-fundida), gitweb (incorporada em, não mais desenvolvidos separadamente), ferramentas de correio git (fundiu muito cedo na história do projeto), e P4-rápido -export (talvez acidental). Isso não está contando raízes do 'html e 'homem' ramos, ramos de 'conveniência', que contém a documentação pré-gerado, e 'todo' ramo com lista de tarefas e scripts.


Se você tem git 1.7.4.2 ou mais recente, você pode usar a opção --max-parents:

$ git rev-list --max-parents=0 HEAD

Caso contrário, você pode obter a lista de todos parentless (root) comete acessível a partir de ramificação atual usando:

$ git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"

Outras dicas

git rev-list HEAD | tail -n 1 é uma opção mais estável.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top