致命的:有効なオブジェクト名ではありません: 'マスター'


182

プライベートサーバーでgit 1.7を実行しています

git init 

マスターブランチを作成しないフォルダー。私がするときの原因:

git branch 

何もリストされていません。私がする時:

git --bare init

ファイルを作成します。入力すると

git branch master 

それは言う:

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

新しいブランチを生成しようとしている同じ結果:git branch newbranch
ソレン

回答:


281

git initがフォルダであるとき、それはマスターブランチを作成しません

これは真実であり、予想される動作です。master何かをコミットするまで、Gitはブランチを作成しません。

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

非ベアでgit init.git、プロジェクトのルートにある隠しディレクトリに同じファイルが作成されます。

入力git branch masterすると、「致命的:有効なオブジェクト名ではありません:「マスター」」と表示されます。

これも正しい振る舞いです。コミットするまで、マスターブランチはありません

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


3
では、「マスター」というブランチポインターがまったく必要ない場合はどうでしょうか。「メイン」と呼ばれるようにしたい場合はどうなりますか?最初のブランチポインターに別の名前を付ける方法はありませんか?「git init」パラメータはありませんか?.git / HEADにリストされている名前を変更してもよいですか?変更する必要がある他のファイルもいくつかありますか?
Jemenake 2013年

1
@Jemenake次に、リポジトリを初期化し、コミットして、ブランチの名前を変更します。「マスター」ブランチが作成されることを本当に避けたい場合は、を編集して.git/HEADに変更refs/heads/masterしますが、これを行う理由はまったくrefs/heads/mainありません。最初のコミット後にブランチの名前を変更するだけです。
貧弱

13
git checkout -b <branchname>HEADの変更に使用できます。ファイルを編集する必要はありません。
Superfly Jon

1
最後の部分はゴールデンでした、TFS GITには完全に初期化されていないgitリポジトリが付属しています。したがって、SourceTreeを使用して最初にクローンを作成した後は、何も機能せず、「次にgit commitを実行して最初のコミットとマスターブランチを作成する」までそれを理解できませんでした。最初のコミット/プッシュなしでマスターローカル/リモートにする方法は本当にありませんか?
Pawel Cioch、2015年

最後の説明は、コミットがないとブランチが存在しないことを理解するのに役立ちます。
Mayur Patil

23

最初のコミットが完了すると、Gitはマスターブランチを作成します。リポジトリにコードがない場合、ブランチを用意する必要はありません。


1
しかし、マスターにプッシュするには新しいブランチが必要です。
ソレン

1
「最初のコミットが完了すると、Gitはマスターブランチを作成する」に関する質問です。では、なぜこれらすべての前に「git status」に「On Branch Master」と表示されるのですか?
Tick20

16

まず、「裸のリポジトリ」を作成すると、それを使用して作業を行うことはありません(作業コピーが含まれていないため、git branchコマンドは役に立ちません)。

ここで、a masterを実行した後でもブランチがないのは、git initコミットがないためです。最初のコミットを作成すると、masterブランチが作成されます。


1
わかりました。しかし、私がそれをコミットするとき、それは言う:致命的:空のアイデンティティ
ロイ・ファン・ザンテン

修正しました。しかし、他のコンピューターからこのリポジトリをプル/フェッチしたい場合。そこにgit initを実行する必要がありますか?
ロイファンザンテン

@RoyvanZantenを使用git clonegit initて、受信側での作業を省くことができます。
Borealid

私はなんとかそれをすべて機能させることができました。エラーはありません。しかし、私がそれをプッシュしようとすると、次のようになります。オブジェクトを書き込む<bla> bla> Total <3/3> To SERVER 59fa0tweirdcod04 master> masterしかし、サーバー上のファイルを確認しても何もありません。
ロイファンザンテン

@RoyvanZantenサーバーリポジトリまたはサーバーの作業用コピーを見ていますか?git checkoutWCに.gitディレクトリ(プッシュした場所)の内容を反映させる場合は、aを実行する必要があります。
Borealid

12

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.