裸のリポジトリでチェックアウトを実行しようとするのは非常に非論理的です -checkout
作業コピー/ツリーを更新するためのコマンドです:
git-checkout - 作業ツリーへのブランチまたはパスをチェックアウトします
ベア リポジトリには作業ツリーがありません。
通常の方法で git リポジトリを設定する
ゼロから始めて、自宅/オフィスのコンピューターを使用していると仮定しましょう。
ベアレポを作成する
プロジェクトのベア リポジトリを作成するか、既存のリポジトリを適切な場所に移動します。
ssh root@mysite.net
cd repos
mkdir repo.git ##give it a better name
cd repo.git
git init --bare
サイトのクローンを作成する
ssh root@mysite.net
cd /home/mysite/public_html
git clone ~/repos/repo.git .
ローカル クローンを作成する
cd mylocalsite/public_html
git clone root@mysite.net:repos/repo.git .
git push/pull etc.
サイトを自動的に更新する
目標は自動的に更新することなので、リポジトリにプッシュするたびに git-hooks を使用して、ライブ サイトである作業コピーを更新できます。
簡単な例を次に示します。
#!/bin/sh
cd /home/mysite/public_html
git --git-dir /home/mysite/public_html/.git pull > /dev/null
として保存し/home/root/repos/.git/hooks/post-receive
、実行可能にします。プッシュするたびに、プルを発行してライブサイトを更新しようとします
また
ベア リポジトリの使用をやめて、ライブ サイトのチェックアウトをメイン/唯一のリポジトリとして使用できます。これはお勧めできませんが、そうする場合は次のようにします。
git remote add live root@mysite.net:/home/mysite/public_html/.git
git push live master
現在チェックアウトされているブランチの更新に関するエラーが表示されます。警告を読み、その意味を理解してください。それでもこれをやりたいと決めた場合は、次の操作を許可できます。
ssh root@mysite.net
cd /home/mysite/public_html
git config receive.denyCurrentBranch ignore
繰り返しますが、お勧めしません。ベア リポジトリを用意し、ライブ サイトを通常のチェックアウトとして維持する方がはるかに優れています。