Gitflow: git flow init falha no repositório clonado.

Criado em 26 abr. 2011  ·  29Comentários  ·  Fonte: nvie/gitflow

Posso estar fazendo isso errado, mas se tento clonar um repo que tem apenas um branch develop e, em seguida, tento iniciar um recurso usando git flow feature start foo então ele me diz para reinicializar o fluxo git . A execução de git flow init falha porque o ramo master não existe. Tenho que criá-lo manualmente para que funcione.

Isso me parece errado. Nos bastidores, certamente, o fluxo do git deve criar os branches necessários ou apenas lidar com o fato de eles não estarem lá. Isso soa como um bug?

Aqui está um exemplo de sessão:

oj<strong i="12">@mint</strong> ~/tmp $ git init test
Initialized empty Git repository in /home/oj/tmp/test/.git/
oj<strong i="13">@mint</strong> ~/tmp $ cd test
oj<strong i="14">@mint</strong> ~/tmp/test $ git flow init
No branches exist yet. Base branches must be created now.
Branch name for production releases: [master] 
Branch name for "next release" development: [develop] 

How to name your supporting branch prefixes?
Feature branches? [feature/] 
Release branches? [release/] 
Hotfix branches? [hotfix/] 
Support branches? [support/] 
Version tag prefix? [] 
oj<strong i="15">@mint</strong> ~/tmp/test $ echo "foo" > test.txt
oj<strong i="16">@mint</strong> ~/tmp/test develop * $ git add test.txt
oj<strong i="17">@mint</strong> ~/tmp/test develop * $ git commit -m "testing"
[develop 9ebdd64] testing
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 test.txt
oj<strong i="18">@mint</strong> ~/tmp/test develop $ cd ..
oj<strong i="19">@mint</strong> ~/tmp $ git clone ./test test2
Cloning into test2...
done.
oj<strong i="20">@mint</strong> ~/tmp $ cd test2
oj<strong i="21">@mint</strong> ~/tmp/test2 develop $ git flow feature start foo
fatal: Not a gitflow-enabled repo yet. Please run "git flow init" first.
oj<strong i="22">@mint</strong> ~/tmp/test2 develop $ git flow init

Which branch should be used for bringing forth production releases?
   - develop
Branch name for production releases: [] master
Local branch 'master' does not exist.
oj<strong i="23">@mint</strong> ~/tmp/test2 develop $ git branch master
oj<strong i="24">@mint</strong> ~/tmp/test2 develop $ git flow init

Which branch should be used for bringing forth production releases?
   - develop
   - master
Branch name for production releases: [master] 

Which branch should be used for integration of the "next release"?
   - develop
Branch name for "next release" development: [develop] 

How to name your supporting branch prefixes?
Feature branches? [feature/] 
Release branches? [release/] 
Hotfix branches? [hotfix/] 
Support branches? [support/] 
Version tag prefix? [] 
oj<strong i="25">@mint</strong> ~/tmp/test2 develop $ git flow feature start foo
Switched to a new branch 'feature/foo'

Summary of actions:
- A new branch 'feature/foo' was created, based on 'develop'
- You are now on branch 'feature/foo'

Now, start committing on your feature. When done, use:

     git flow feature finish foo

oj<strong i="26">@mint</strong> ~/tmp/test2 feature/foo $ 

Obrigado!
OJ

Comentários muito úteis

@kasterma obrigado!

$ git flow init

Which branch should be used for bringing forth production releases?
   - develop
Branch name for production releases: [] 
Local branch '' does not exist.

$ git branch -a
* develop
  remotes/origin/HEAD -> origin/develop
  remotes/origin/develop
  remotes/origin/master

Para obter a filial local:

$ git checkout master
$ git checkout develop
$ git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/develop
  remotes/origin/develop
  remotes/origin/master

Agora execute git flow init normalmente.

$ git flow init

Todos 29 comentários

Estou tendo exatamente o mesmo problema. Ainda não criei um branch master localmente (já que isso também parece errado), mas ainda não encontrei uma solução diferente. Postarei novamente se eu puder encontrar algo, no entanto.

Até agora, a única solução que encontrei é criar o branch master, mesmo que não esteja sendo usado. Não é agradável, mas funciona. Esperançosamente, haverá uma solução para isso em breve!

Não seria mais sensato rastrear o branch master inicial, por exemplo
git checkout -t origin / master

Claro ... Se houver! Ao criar novos projetos, eu não empurro um
ramo mestre vazio, e depois de empurrar o desenvolvimento, não há mestre em
github também.

Portanto, ainda é um problema.

Enviado do meu Windows Phone (sim, você leu corretamente) De: shuane
Enviado: sábado, 2 de julho de 2011 6:33
Para: [email protected]
Assunto: Re: [gitflow] git flow init falha no repo clonado. (# 121)
Não seria mais sensato rastrear o branch master inicial, por exemplo
git checkout -t origin / master

Responda a este e-mail diretamente ou visualize-o no GitHub:
https://github.com/nvie/gitflow/issues/121#issuecomment -1486906

+1 mesmo problema ...

+1 mesmo problema

Qual é a razão filosófica por trás de não querer empurrar o branch master inicial vazio (que é criado por padrão) quando o repositório é criado pela primeira vez?

Se você não enviar o branch master (como parece que os comentadores aqui não fizeram intencionalmente), você não poderá puxá-lo para um clone. O Git-flow está correto em não tentar criar um novo, caso você tenha esquecido de verificar um branch master preexistente e teria um conflito se ele criasse um novo branch.

Não há nada filosófico nisso. Tem a ver com fluxo de trabalho. Posso enviar um branch master, mas isso pode não impedir as pessoas de usarem apenas o branch de desenvolvimento.

O Git-flow pode estar correto em não tentar criar um novo. Mas em vez de falhar, por que não me pergunta? "Você quer que eu crie um novo branch ou devo rastrear o master remoto para você?"

Pensamentos?

No caso de algumas pessoas aqui, não há mestre remoto porque elas acham que seria errado empurrar um branch vazio. Seria útil para eles realizarem

git push --all origin 

para empurrar os branches de desenvolvimento e mestre inicialmente para corrigir essa parte do problema.

Se houvesse um mestre remoto, seria útil fazer essa pergunta naquele ponto e não deve ser muito difícil para alguém implementar. É um fallback simples e não afetará o fluxo de trabalho de ninguém se eles próprios criarem o branch master.

Veja como encontramos o problema. A maior parte do nosso desenvolvimento agora em nosso repositório git está em ramificações de recursos fora do desenvolvimento.

Eu tinha definido "desenvolver" como o branch padrão do repositório no github. Eu queria trabalhar em um branch de recursos de uma nova máquina. Eu clonei o repo, fiz "git flow init" e falhou.

@lorin Isso mostra que há várias maneiras de sermos mordidos por isso. Faz muito sentido para mim ter git-flow lidar com este caso, mesmo que requeira um prompt chato, ainda é melhor do que não trabalhar e confiar que as pessoas descobrem por si mesmas.

Parte desse problema pode ser que o git pode buscar apenas um único branch quando você executa git clone, e se você definir o branch padrão do GitHub como algo diferente de master, como eu também faço, o master não estará lá como uma referência remota até que você execute git fetch origin (eu acho). Se esse for o caso para muitas pessoas, o commit que adicionou a mudança para git-flow-init para suportar a verificação de remotes / origin / master [1] pode precisar ser estendido para adicionar uma chamada "git fetch origin" antes de verificar se o mestre existe.

[1] https://github.com/nvie/gitflow/commit/baf163e07d579bec3dd0e21d00297832e8848b8b

então o master não estará lá como uma referência remota até que você execute git fetch origin (eu acho).

A operação git clone literalmente clona o repositório conforme observado na progit , você pode desconectar o cabo de rede e fazer:

git checkout -b master origin/master

O git criará para você o branch local chamado master como uma cópia de origem / master.

Observação:

git checkout master

é suficiente como se o ramo não fosse encontrado, mas houvesse um ramo de rastreamento usado.

@kasterma obrigado!

$ git flow init

Which branch should be used for bringing forth production releases?
   - develop
Branch name for production releases: [] 
Local branch '' does not exist.

$ git branch -a
* develop
  remotes/origin/HEAD -> origin/develop
  remotes/origin/develop
  remotes/origin/master

Para obter a filial local:

$ git checkout master
$ git checkout develop
$ git branch -a
* develop
  master
  remotes/origin/HEAD -> origin/develop
  remotes/origin/develop
  remotes/origin/master

Agora execute git flow init normalmente.

$ git flow init

git config gitflow.branch.master master para definir seu branch master corretamente quando você não pode "cancelar" um init de fluxo git.

Mesmo aqui, eu tenho o mesmo problema.

+1 mesmo problema

+1

Apenas corri para isso. Garrrgh! +1

Certifique-se de verificar o master pelo menos uma vez em seu repositório local.

Eu vou agradecer

Em 18 de novembro de 2016, 18:41, "Rob Moore" [email protected] escreveu:

Certifique-se de verificar o master pelo menos uma vez em seu repositório local.

-
Você está recebendo isto porque está inscrito neste tópico.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/nvie/gitflow/issues/121#issuecomment -261593726 ou mudo
o segmento
https://github.com/notifications/unsubscribe-auth/AVuyNjaPvHr8jyO9Zmy1bzynI0mhm0F_ks5q_eNRgaJpZM4AD0E_
.

+1 aconteceu comigo também.

seguiu as etapas para corrigir o problema no repositório clonado

 git checkout -b master
 git checkout develop
 git flow init

Meu processo de CI do TeamCity pode envolver uma compilação em um _git flow release_ por meio de scripts _ant_, mas aprendi ao longo do caminho que era necessário verificar master e develop e, em seguida, executar a inicialização padrão antes da construção:

git flow init -d

Não seria mais sensato rastrear o branch master inicial, por exemplo
git checkout -t origin / master

funciona para mim! obrigada

A solução é:
-git ckeckout master
-git checkout desenvolver
-git flow init

@ andres310597 Essa pode ser a resposta para você. Não ajudou no meu repo.

➜  mobile_provider git:(develop) git checkout master   
Updating files: 100% (17199/17199), done.
Switched to branch 'master'
Your branch is up to date with 'origin/master'. 
➜  mobile_provider git:(master) ✗ git checkout develop
Updating files: 100% (17199/17199), done.
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.                                                            /3.1s
➜  mobile_provider git:(develop) git flow init       

Which branch should be used for integration of the "next release"?
   - bug/mstelly/prov/2449-leave-job-crash
   - master
   - poc/realmdb
Branch name for "next release" development: [develop]

E meu arquivo .gitconfig não contém nenhuma referência a qualquer configuração de fluxo. Portanto, não sei onde os valores estão sendo armazenados.

O fato de esse problema ter permanecido aberto por 9 anos diz muito sobre nossas chances de que seja resolvido em breve. No entanto, aceitei os padrões e recebi esta mensagem:
To force reinitialization, use: git flow init -f
Então, não está quebrado. Acho que não está bem documentado. Alguém provavelmente deveria fechar este problema.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

alanhogan picture alanhogan  ·  6Comentários

sbellware picture sbellware  ·  12Comentários

harshadyeola picture harshadyeola  ·  4Comentários

alexjeffburke picture alexjeffburke  ·  24Comentários

keithamus picture keithamus  ·  32Comentários