Gitflow: クローンリポジトリでgitflowinitが失敗します。

作成日 2011年04月26日  ·  29コメント  ·  ソース: nvie/gitflow

私はこれを間違っているかもしれませんが、 developブランチしかないリポジトリのクローンを作成してから、 git flow feature start fooを使用して機能を開始しようとすると、gitフローを再初期化するように指示されます。 masterブランチが存在しないため、 git flow init失敗します。 動作させるには手動で作成する必要があります。

これは私には間違っているようです。 確かに、舞台裏では、git flowは必要なブランチを作成するか、そこにないブランチを処理する必要があります。 これはバグのように聞こえますか?

サンプルセッションは次のとおりです。

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 $ 

ありがとう!
OJ

最も参考になるコメント

@kastermaありがとうございます!

$ 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

ローカルブランチを取得するには:

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

次に、通常どおりgit flowinitを実行します。

$ git flow init

全てのコメント29件

私はまったく同じ問題を抱えています。 私はまだマスターブランチをローカルで作成していません(それは私にも間違っているように思われるので)が、私はまだ別の解決策を見つけていません。 ただし、何か見つけたらまた投稿します。

これまでのところ、私が見つけた唯一の解決策は、使用されていない場合でも、マスターブランチを作成することです。 快適ではありませんが、機能します。 うまくいけば、すぐに修正されるでしょう!

最初のマスターブランチを追跡するのが最も賢明ではないでしょうか。
git checkout -t origin / master

確かに...もしあれば! 新しいプロジェクトを作成するとき、私はプッシュしません
マスターブランチが空で、開発をプッシュした後、マスターがありません
githubのどちらか。

だからそれはまだ問題です。

私のWindowsPhoneから送信されました(はい、正しく読んでいます)送信者:shuane
送信:2011年7月2日土曜日6:33
宛先: [email protected]
件名:Re:[gitflow]クローンリポジトリでgit flowinitが失敗します。 (#121)
最初のマスターブランチを追跡するのが最も賢明ではないでしょうか。
git checkout -t origin / master

このメールに直接返信するか、GitHubで表示してください。
https://github.com/nvie/gitflow/issues/121#issuecomment -1486906

+1同じ問題...

+1同じ問題

リポジトリが最初に作成されたときに、空の初期マスターブランチ(デフォルトで作成されます)をプッシュしたくないという哲学的な理由は何ですか?

マスターブランチをプッシュしないと(ここのコメント投稿者は意図的に行っていないようです)、クローンにプルすることはできません。 Git-flowは、既存のマスターブランチをチェックアウトするのを忘れて、新しいブランチを作成すると競合が発生する場合に備えて、新しいブランチを作成しようとしないという点で正しいです。

これについて哲学的なことは何もありません。 それはワークフローと関係があります。 マスターブランチをプッシュすることはできますが、開発ブランチだけを取得する人を止めることはできないかもしれません。

Gitフローは、新しいGitフローを作成しようとしない場合は正しい可能性があります。 しかし、失敗する代わりに、私に聞いてみませんか? 「新しいブランチを作成しますか、それともリモートマスターを追跡しますか?」

考え?

ここにいる何人かの人々の場合、彼らは空のブランチをプッシュするのは間違っていると思うので、リモートマスターはありません。 彼らが実行することは有用でしょう

git push --all origin 

問題のその部分を修正するために、最初に開発ブランチとマスターブランチの両方をプッシュします。

リモートマスターがあった場合、その時点でその質問をすることは有用であり、誰かが実装するのはそれほど難しくないはずです。 これは単純なフォールバックであり、マスターブランチを自分で作成しても、他の人のワークフローには影響しません。

これが私たちがこの問題に遭遇した方法です。 現在のgitリポジトリでの開発のほとんどは、開発から離れた機能ブランチにあります。

githubのリポジトリのデフォルトブランチとして「develop」を設定しました。 新しいマシンの機能ブランチで作業したかったのです。 リポジトリのクローンを作成し、「git flow init」を実行しましたが、失敗しました。

@lorinこれは、これに噛まれる可能性のある方法が

この問題の一部は、git cloneを実行したときにgitが単一のブランチのみをフェッチする可能性があることである可能性があります。GitHubのデフォルトブランチをマスター以外に設定すると、私もそうですが、マスターはそこにありません。 git fetch originを実行するまでのリモートリファレンス(私は思います)。 多くの人がそうであれば、remotes / origin / master [1]のチェックをサポートするためにgit-flow-initの変更を追加したコミットを拡張して、「gitfetchorigin」呼び出しを追加してからチェックする必要があるかもしれません。マスターが存在します。

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

その場合、マスターはgit fetch originを実行するまでリモート参照として存在しません(私は思います)。

git clone操作は、 progit bootに記載されているように、文字通りリポジトリのクローンを作成します。ネットワークワイヤを切断して、次の操作を実行できます。

git checkout -b master origin/master

gitは、origin / masterのコピーとしてmasterというローカルブランチを作成します。

ノート:

git checkout master

ブランチが見つからないかのように十分ですが、使用されるトラッキングブランチがあります。

@kastermaありがとうございます!

$ 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

ローカルブランチを取得するには:

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

次に、通常どおりgit flowinitを実行します。

$ git flow init

git config gitflow.branch.master masterは、git flow initを「キャンセル」できない場合に、マスターブランチを適切に設定します。

ここでも同じですが、同じ問題があります。

+1同じ問題

+1

ちょうどこれに遭遇しました。 ギャル! +1

ローカルリポジトリでマスターを少なくとも1回チェックアウトしてください。

感謝します

2016年11月18日18:41、「RobMoore」 [email protected]は次のように書いています。

ローカルリポジトリでマスターを少なくとも1回チェックアウトしてください。


このスレッドにサブスクライブしているため、これを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/nvie/gitflow/issues/121#issuecomment -261593726、またはミュート
スレッド
https://github.com/notifications/unsubscribe-auth/AVuyNjaPvHr8jyO9Zmy1bzynI0mhm0F_ks5q_eNRgaJpZM4AD0E_

+1私にも起こりました。

クローンリポジトリの問題を修正するために次の手順を実行しました

 git checkout -b master
 git checkout develop
 git flow init

私のTeamCityCIプロセスは、_ant_スクリプトを介して_gitフローリリース_内でビルドをラップできますが、途中でmasterdevelop両方をチェックアウトしてから、デフォルトの初期化を実行する必要があることを学びました。ビルド前:

git flow init -d

最初のマスターブランチを追跡するのが最も賢明ではないでしょうか。
git checkout -t origin / master

私のために働く! ありがとうございました

解決策は次のとおりです。
-gitckeckoutマスター
-gitチェックアウト開発
-git flow init

@ andres310597それがあなたの答えかもしれません。 それは私のレポには役立ちませんでした。

➜  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]

そして、私の.gitconfigファイルには、フロー設定への参照が含まれていません。 そのため、値がどこに保存されているのかわかりません。

この問題が9年間開いたままであるという事実は、すぐに解決される可能性について多くのことを物語っています。 ただし、デフォルトを受け入れて、次のメッセージを受け取りました。
To force reinitialization, use: git flow init -f
だから、それは壊れていません。 私はそれが十分に文書化されていないと思います。 誰かがおそらくこの問題を閉じる必要があります。

このページは役に立ちましたか?
0 / 5 - 0 評価