2012-02-06 15 views
113

私はときに私致命的な:ない有効なオブジェクト名:「マスター」

git init 

それがmasterブランチを作成していないフォルダにgit 1.7 を実行しているプラ​​イベートサーバーを持っています。 原因:

git branch 

何も表示されません。 私が行うとき:

git --bare init 

ファイルを作成します。私は

git branch master 

を入力すると は、それは言う:

fatal: Not a valid object name: 'master'. 

答えて

170

私はフォルダをgit initするとき、それはmasterブランチを作成しません

これは真実である、と行動を期待しました。あなたが何かをコミットするまで、Gitはmasterブランチを作成しません。

私がgit --bare initを実行すると、ファイルが作成されます。

非裸git initまた、プロジェクトのルートに隠し.gitディレクトリに、同じファイルを作成します。私はgit branch masterを入力すると

は、それが「致命的な:ない有効なオブジェクト名: 『マスター』」言う

再び正しい動作です。あなたがコミットするまで、はマスターではないブランチです。

質問はしていませんが、質問すると思われる質問にお答えします。ディレクトリに1つ以上のファイルを追加し、コミットを準備するにはgit addファイルを追加します。その後、git commitを使用して最初のコミットを作成し、masterブランチを作成します。

+1

"master"と呼ばれるブランチポインタが決して必要ない場合はどうすればよいですか?もしそれを「メイン」と呼んでいたらどうですか?最初のブランチ・ポインタの別の名前で開始する方法はありませんか? "git init"パラメータはありませんか?.git/HEADに記載されている名前を変更することができますか?変更する必要がある他のファイルもありますか? – Jemenake

+1

@ Jemenake次に、リポジトリを初期化し、コミットしてブランチの名前を変更します。実際に作成された "master"ブランチを避けたい場合は '.git/HEAD'を編集し、' refs/heads/master'を 'refs/heads/main'に変更します。これを行う。最初のコミット後にブランチの名前を変更するだけです。 – meagar

+7

'git checkout -b 'を使ってHEADを変更することができます。ファイルを編集する必要はありません。 –

14

最初に、「ベアリポジトリ」を作成するときに作業をしていない(作業コピーが含まれていないので、git branchコマンドは役に立ちません)。

さて、あなたもgit initをやった後master支店を持っていない理由は何もコミットがないことである:あなたが最初のコミットを作成するとき、あなたはその後、master分岐を有しています。

+1

それは分かりました。しかし私がコミットするとき、それは言う:致命的:空のident –

+0

私はそれを修正しました。しかし、私がこのレポを他のコンピュータからプル/フェッチしたいとき。そこにgit initをするべきですか? –

+0

@RoyvanZanten 'git clone'を使うと、受信側で' git init'を実行する必要がなくなります。 – Borealid

14

最初のコミットを済ませたら、Gitはマスターブランチを作成します。リポジトリにコードがない場合、ブランチを持つことは何もありません。

4

新しいブランチを作成する前に、マスターで少なくとも1回コミットする必要があります。