Gitリポジトリを特定のフォルダーに複製するにはどうすればよいですか?


2244

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

/httpdocs/whatever/public

私の問題は、Gitリポジトリのコンテンツを現在のディレクトリに複製して、Webサーバーの適切な場所に表示されるようにする必要があることです。

/httpdocs/public

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


3
Windowsでは、リポジトリを複製するフォルダー(存在する場合)からファイルを移動できるため、git cloneを実行すると空になります。クローン作成後、ファイルを元に戻します[ctrl-z]とwhoala!現在のフォルダーが空の場合は、次のコマンドを使用します。git clone giturl

44
出来上がりはスペルです
Matthias

81
@MatthiasDailey ほらはある実際の綴り
silkfire

6
etvoilàetvoilàのフランス語です
Fattie

回答:


3221

オプションA:

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

エルゴ、right here使用:

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)を有効にすることで1行で実行することもできますが、この回答が回答する質問をする場合、おそらくそれは悪い解決策です。

さらに良い:

作業コピーを別の場所に保管し、シンボリックリンクを作成します。このような:

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を使用します。


8
私はあなたの 'Better yet'オプションを考えていませんでした。理由はわかりませんが、私はそれが好きです。これの利点は何ですか?
David Smith、

6
現時点ではおそらく何のメリットもありませんが、何かを移動することに決めた場合、多くの問題を解決する可能性があります。
Can BerkGüder、2009年

12
さらに、「Better yet」オプションを使用すると、リリースをすばやく切り替えることができます。これは特に便利で、サーバーに使用されます。
HalilÖzgür11年

4
@MEM私は彼が.git ieへのシンボリックリンクを作成することを意味すると思いますln -s path/to/.git path/to/working/directory
アレクサンダー

27
誰もがこれの利点を説明できますか?今日は少し濃密です。symlinkを使用するとどのようにサーバーにメリットがありますか?
トリプル

586

この質問をする多くの人が後に思う例はこれです。あなたがいる場合には、ディレクトリはgitリポジトリの内容は、実行するダンプたい:

git clone git@github.com:whatever .

「。」最後に、現在のフォルダをチェックアウトフォルダとして指定します。


28
trueなので、クローンする前にこのフォルダーで「git init」を実行する必要はありません。ただし、そうした場合は、クローンを作成する前に.gitフォルダーを削除するとうまくいきます。
マグネ2011

3
私の答えの空のディレクトリを修正
csomakk

1
これをnitrous.ioで機能させることができませんでしたか?空にした後でも、ディレクトリは空ではないと表示されます
Tejas Manohar 14

@TejasManohar隠しファイルも削除したことを確認してください。
Britic

ls -a隠しファイルを含むすべてのファイルを表示します。
Michael Dorst

215

フォルダに移動します。フォルダが空の場合は、次のようになります。

git clone git@github.com:whatever .

そうしないと

git init
git remote add origin PATH/TO/REPO
git fetch
git checkout -t origin/master

9
実際、これは私がすでに作成したプロジェクトを新しく作成したリポジトリにプッシュする必要があるとき、私にとって最も有用な答えでした。賞賛!
14年

13
空でないフォルダにチェックアウトする方法を指定する回答のみ、ありがとうございます。
Preston Badeer 2015年

2
git checkoutのswitch -tドキュメントにonが明確に示されていないため、これは本当に役立ちます。
Chetabahana 2016年

4
-tスイッチは何をしますか?チェックアウトによって上書きされる追跡されていないファイルのリストを含む中止メッセージが表示されますか?この状況で何をすべきか?これらのファイルを上書きしたくないですか?
Momin Zahid 2017

2
gitからの-tドキュメント:-t、--track新しいブランチを作成するときに、「上流」構成をセットアップします。詳細については、git-branch(1)の「--track」を参照してください。
csomakk

87

基本的なGitリポジトリのクローニング

リポジトリを複製するには

git clone [url]

たとえば、open_frameworkというStanford University Drupal Open Framework Gitライブラリのクローンを作成する場合は、次のようにできます。

$ git clone git://github.com/SU-SWS/open_framework.git

これにより、open_frameworkという名前のディレクトリが(現在のローカルファイルシステムの場所に)作成され、その中の.gitディレクトリが初期化され、そのリポジトリのすべてのデータがプルダウンされ、最新バージョンの作業コピーがチェックアウトされます。新しく作成したopen_frameworkディレクトリに移動すると、そこにプロジェクトファイルが表示され、作業または使用する準備ができています。

リポジトリを特定のローカルフォルダに複製する

open_framework以外の名前のディレクトリにリポジトリのクローンを作成する場合は、それを次のコマンドラインオプションとして指定できます。

$ git clone git:github.com/SU-SWS/open_framework.git mynewtheme

このコマンドは前のコマンドと同じことを行いますが、ターゲットディレクトリはmynewthemeと呼ばれます。

Gitには、使用できるさまざまな転送プロトコルがいくつかあります。前の例ではgit://プロトコルを使用していますが、SSH転送プロトコルを使用するhttp(s)://またはuser @ server:/path.gitも表示される場合があります。


これにより、現在のフォルダーにフォルダーが自動的に作成され、そこにファイルが配置されます。したがって、他のフォルダを上書きすることを心配する必要はありません。
arn-arn 2017年

24

gitリポジトリを特定のフォルダに複製するには、次のような-C <path>パラメータを使用できます。

git -C /httpdocs clone git@github.com:whatever

それでもその上にwhateverフォルダーが作成されるため、リポジトリのコンテンツを現在のディレクトリに複製するには、次の構文を使用します。

cd /httpdocs
git clone git@github.com:whatever .

既存のディレクトリへのクローン作成は、ディレクトリが空の場合にのみ許可されることに注意してください

パブリックアクセスが可能なフォルダーにクローンを作成しているため、Webサーバー構成(ファイルなど)のフォルダーを使用--separate-git-dir=<git dir>または除外して、Gitリポジトリを作業ツリーから分離することを検討.gitしてください.htaccess


17

現在の作業ディレクトリに複製するには:

git clone https://github.com/link.git

別のディレクトリに複製するには:

git clone https://github.com/link.git ./Folder1/Folder2

それが役に立てば幸い :)


これもうまくいきました。./フォルダへのパスの先頭ではありません
Alon Gouldman

13

ファイルを必要な場所に移動すると、.gitディレクトリも移動しますか?OSと構成によっては、このディレクトリが非表示になっている場合があります。

これには、リポジトリとサポートファイルが含まれていますが、/publicディレクトリにあるプロジェクトファイルは、現在チェックアウトしているコミット(デフォルトではマスターブランチ)のバージョンのみです。


13

クローン:

git clone git@jittre.unfuddle.com:jittre/name.git

「特定のブランチ」のクローンを作成します。

git clone -b [branch-name] git@jittre.unfuddle.com:jittre/name.git

13

現在のフォルダーに複製したい場合は、これを試してください:

git clone https://github.com/example/example.git ./

8
致命的:宛先パス '。' はすでに存在し、空のディレクトリではありません。
Cleiton

11

使用法

git clone <repository>

<repository>にあるリポジトリのクローンをローカルマシンに作成します。元のリポジトリは、ローカルファイルシステムまたはHTTPまたはSSH経由でアクセス可能なリモートマシンに配置できます。

git clone <repo> <directory>

<repository>にあるリポジトリのクローンをローカルマシンの<directory>というフォルダーに作成します。

ソース:リポジトリの設定


9

現在のディレクトリにチェックアウトする場合は、必ず.gitリポジトリを削除してください。

rm -rf .git その後 git clone https://github.com/symfony/symfony-sandbox.git


3

これが私のやり方ですが、私のためにエイリアスを作成しました。

$ cd ~Downloads/git; git clone https:git.foo/poo.git

これを行うにはもっとエレガントな方法があると思いますが、私はこれが自分にとって最も簡単であることがわかりました。

これは、処理を高速化するために作成したエイリアスです。私はzsh用に作成しましたが、bashや魚、xyzsh、fizshなどの他のシェルでも問題なく機能するはずです。

編集~/.zshrc/.bashrcお気に入りのエディタで、など(私はLeafpadあるので、私は書くでしょう$ leafpad ~/.zshrc)。

ただし、私の個人的な好みは、すべてのエイリアスを追跡するzshプラグインを作成することです。次のコマンドを実行して、oh-my-zshの個人用プラグインを作成できます。

$ cd ~/.oh-my-zsh/
$ cd plugins/
$ mkdir your-aliases-folder-name; cd your-aliases-folder-name
     # In my case '~/.oh-my-zsh/plugins/ev-aliases/ev-aliases'
$ leafpad your-zsh-aliases.plugin.zsh
     # Again, in my case 'ev-aliases.plugin.zsh'

その後、新しく作成した空のalises.pluginファイルに次の行を追加します。

# Git aliases
alias gc="cd ~/Downloads/git; git clone "

(ここから、あなたの名前を私のものに置き換えてください。)

次に、エイリアスを機能させるには、それらを(zshとともに)ソースインする必要があります(またはそれが何と呼ばれていても)。これを行うには、カスタムプラグインドキュメント内に次を追加します。

## Ev's Aliases

#### Remember to re-source zsh after making any changes with these commands:

#### These commands should also work, assuming ev-aliases have already been sourced before:

allsource="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh; clear"
sourceall="source $ZSH/oh-my-zsh.sh ; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh"
#### 

####################################

# git aliases

alias gc="cd ~/Downloads/git; git clone "
# alias gc="git clone "
# alias gc="cd /your/git/folder/or/whatever; git clone "

####################################

oh-my-zshプラグインを保存して、を実行しallsourceます。うまくいかない場合は、単にを実行してくださいsource $ZSH/oh-my-zsh.sh; source /home/ev/.oh-my-zsh/plugins/ev-aliases/ev-aliases.plugin.zsh。これにより、今後使用できるプラグインソースが読み込まallsourceれます。


現在、すべてのエイリアスを使用してGitリポジトリを作成しています。Evのdot-filesをご覧ください。遠慮なくフォークして、ニーズに合わせて改善してください。


2

sshfor git cloningを使用している場合は、次のコマンドを使用できます。

git -C path clone git@github.com:path_to_repo.git

例: git -C /home/ubuntu/ clone git@github.com:kennethreitz/requests.gitgitレポジトリをパスにプルrequestsします/home/ubuntu/


2

何らかの理由で、この構文は目立たない:

git clone repo-url [folder]

ここで、フォルダーはローカルフォルダー(ローカルリポジトリになります)へのオプションのパスです。

Git cloneはまたpull、リモートリポジトリからローカルリポジトリにコード化します。実際、それは真実です:

git clone repo-url  =  git init + git remote add origin repo-url + git pull

0

上記のすべての回答は良好ですが、承認された回答で提案されたBESTとして、パブリックhtmlディレクトリでシンボリックリンクメソッドを使用する代わりに、新しい方法を提案したいと思います。サーバーの仮想ホスト構成にアクセスできる必要があります。

これは、リポジトリー・ディレクトリーを直接指すWebサーバーの仮想ホストを構成することです。Apacheでは次のようにできます。

DocumentRoot / var / www / html / website / your-git-repo

仮想ホストファイルの例を次に示します。

<VirtualHost *:443>
    ServerName example.com

    DocumentRoot /path/to/your-git-repo
    ...
    ...
    ...
    ...
</VirtualHost>

0

次のgitコマンドを使用して、カスタムディレクトリ名でクローンを作成できます

git clone <git_repo_url> <your_custom_directory_name>

注:カスタムディレクトリは自動的に作成されるため、作成する必要はありません。


-1
For Windows user 

1> Open command prompt.
2> Change the directory to destination folder (Where you want to store your project in local machine.)
3> Now go to project setting online(From where you want to clone)
4> Click on clone, and copy the clone command.
5> Now enter the same on cmd .

It will start cloning saving on the selected folder you given .

-5

元の投稿のこの行について:

「レポのクローンを作成した後でファイルを移動する方法は知っていますが、これによりgitが壊れるようです」

私はそれを行うことができ、追加、コミット、プッシュ、プル操作でこれまでのところ問題はありません。

このアプローチは上記で説明されていますが、ステップに分解されていません。これは私のために働くステップです:

  1. リポジトリを新しい一時フォルダーに複製します
  2. ローカルにクローンしたルートフォルダにcdします
  3. /.gitディレクトリを含むフォルダの内容全体を、任意の既存のフォルダにコピーします。(あなたがあなたのリポジトリとマージしたいEclipseプロジェクトを言ってください)

ファイルをにコピーした既存のフォルダーは、gitと対話する準備ができています。

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