Gitリポジトリを特定のフォルダにクローンするには?

git clone git@github.com:whatever` というコマンドを実行すると、カレントフォルダ内に whatever という名前のディレクトリが作成され、Git リポジトリの内容がそのフォルダにドロップされます。

/httpdocs/whatever/public

問題は、Git リポジトリの内容をカレントディレクトリにクローンして、ウェブサーバーの適切な場所に表示させたいということです。

/httpdocs/public

リポジトリをクローンした後にファイルを移動する方法は知っていますが、これはGitを壊してしまうようで、git pullを呼び出すだけで更新できるようにしたいのです。どうすればいいのでしょうか?

ソリューション

**オプションA:***。

git clone git@github.com:whatever folder-name

Ergo, for right here use:

git clone git@github.com:whatever .

オプションB:

.gitフォルダも移動します。グラフィカルなファイルエクスプローラーでは.git` フォルダーは隠されているので、隠しファイルを表示するようにしてください。

mv /where/it/is/right/now/* /where/I/want/it/
mv /where/it/is/right/now/.* /where/I/want/it/

1行目では通常のファイルをすべて取得し、2行目ではドットファイルを取得します。dotglob を有効にすることで一行で済ませることもできますが (例: shopt -s dotglob)、この答えを求めているのであれば、それは悪い解決策でしょう。

もっと良い方法があります:

作業コピーをどこか別の場所に置いて、シンボリックリンクを作ってください。以下のように。

ln -s /where/it/is/right/now /the/path/I/want/to/use

あなたの場合は次のようになります。

ln -sfn /opt/projectA/prod/public /httpdocs/public

必要であれば、簡単にテストに変更することができます。

ln -sfn /opt/projectA/test/public /httpdocs/public

のように、ファイルを移動せずにテストすることができます。誰かがこれらの行をコピーしている場合に備えて、-fn を追加しました (-f は強制で、-n は既に存在するリンクや存在しないリンクとの不必要な相互作用を避けるためです)。

単に動作させたい場合はオプションAを、他の人が自分のやったことを見る場合はオプションCを使ってください。

解説 (18)

この質問をしている多くの人が求めているのは、このような例ではないでしょうか。git リポジトリの内容をダンプさせたいディレクトリに *いる場合は、次のように実行します。

git clone git@github.com:whatever .

最後の "." は、現在のフォルダをチェックアウト用のフォルダとして指定しています。

解説 (7)

ファイルを移動させるときに、.git ディレクトリも移動させていませんか?お使いのOSや設定によっては、このディレクトリが隠れていることがあります。

.gitディレクトリには、レポとそれをサポートするファイルが含まれています。一方、/public` ディレクトリにあるプロジェクトファイルは、現在チェックアウトされているコミット(デフォルトでは master ブランチ)のバージョンのみが含まれています。

解説 (0)