(Windows 8のposhgitですべて行われます):
git init --bare test-repo.git
cd test-repo.git
(フォルダーは、git-ishのファイルとフォルダーを使用して作成されます)
git status
致命的:この操作は作業ツリーで実行する必要があります(わかりました。したがって、裸のレポではgit statusを使用できません。理にかなっています)
git branch
(何もありませんが、裸のリポジトリにはブランチが含まれていないようです。クローンリポジトリからブランチを追加する必要がありますか?)
cd ..
mkdir test-clone
cd test-clone
git clone ../test-repo.git
(空のリポジトリのクローン作成に関する警告が表示されます)
cd test-repo
(プロンプトは、私がマスターブランチにいることを示すために変わります)
git branch
(結果が表示されない-え?)
git branch master
致命的:有効なオブジェクト名ではありません: 'master'
あのそれでは、ベアリポジトリにmasterブランチを作成するにはどうすればよいですか?
むき出しのリポジトリは、プッシュしてフェッチするだけのものです。直接「イン」することはできません。スタッフをチェックアウトしたり、参照(ブランチ、タグ)を作成したり、git status
などを実行したりすることはできません。
ベアGitリポジトリに新しいブランチを作成する場合、クローンからベアリポジトリにブランチをプッシュできます。
# initialize your bare repo
$ git init --bare test-repo.git
# clone it and cd to the clone's root directory
$ git clone test-repo.git/ test-clone
Cloning into 'test-clone'...
warning: You appear to have cloned an empty repository.
done.
$ cd test-clone
# make an initial commit in the clone
$ touch README.md
$ git add .
$ git commit -m "add README"
[master (root-commit) 65aab0e] add README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.md
# Push to Origin (i.e. your bare repo)
$ git Push Origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 219 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /Users/jubobs/test-repo.git/
* [new branch] master -> master
ブランチは、コミットへの単なる参照です。リポジトリに何かをコミットするまで、ブランチはありません。これは、非ベアリポジトリでも確認できます。
$ mkdir repo
$ cd repo
$ git init
Initialized empty Git repository in /home/me/repo/.git/
$ git branch
$ touch foo
$ git add foo
$ git commit -m "new file"
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 foo
$ git branch
* master
2番目のリポジトリは必要ありません。 --work-tree
オプションとcheckout
やcommit
などのコマンドを使用してダミーのディレクトリを提供し、ベアリポジトリでも動作します。ダミーディレクトリを準備します。
$ rm -rf /tmp/empty_directory
$ mkdir /tmp/empty_directory
そしてそこに行きます:
$ cd test-repo.git # your fresh bare repository
$ git --work-tree=/tmp/empty_directory checkout --Orphan master
Switched to a new branch 'master' <--- abort if "master" already exists
$ git --work-tree=/tmp/empty_directory commit --allow-empty -m "empty repo"
$ git branch
* master
$ rmdir /tmp/empty_directory
Vanilla git 1.9.1でテスト済み。 posh-gitが--allow-empty
をサポートしてファイルを変更せずにコミットする(メッセージのみのコミット)かどうかを確認しませんでした。
デフォルトでは、ブランチはリストされず、ファイルが配置された後にのみポップアップします。心配する必要はありません。フォルダー構造の作成、ファイルの追加/削除、ファイルのコミット、サーバーへのプッシュ、ブランチの作成など、すべてのコマンドを実行するだけです。問題なくシームレスに動作します。