.gitディレクトリのないGitクローン


144

gitクローンを作成するときに渡すフラグはあり.gitますか?たとえば、ディレクトリをクローンしないでください?そうでない場合.git、クローン後にディレクトリを削除するフラグはどうですか?


41
この質問はありませんのデュープ(「SVNのエクスポート」のような)「gitのエクスポート」を行う方法。この質問では、ディレクトリなしで(リモート)リポジトリを複製する方法を尋ねます。疑わしい複製は、すでにディレクトリがある既存のリポジトリをエクスポートする方法を尋ねます。.git.git
mknaf 2013年

3
同意します。git archive「可能性のある複製」ソリューションが言うように、リポジトリをリモートすることはできません。
Vladislav Rastrusny 2014

回答:


214

使用する

git clone --depth=1 --branch=master git://someserver/somerepo dirformynewrepo
rm -rf ./dirformynewrepo/.git
  • 深度オプションは、そのリポジトリを取得するために、可能な限り最小限の履歴をコピーすることを確認します。
  • 分岐オプションはオプションであり、指定しない場合はマスターになります。
  • 2行目で、ディレクトリdirformynewrepoがGitリポジトリではなくなります。
  • 再帰的なサブモジュールのクローン作成を行っている場合、深さとブランチのパラメーターはサブモジュールに適用されません。

19
どういう!$/.git意味ですか?
ユルゲンポール

15
興味のある人にとっては、これは単語指定子の1つであり、Bashおよびzshの履歴拡張機能の一部です。
Rufflewind 2015年

リポジトリ内のすべてのブランチのdepth = 1を取得する方法はありますか?マスターブランチまたは特定のブランチだけではありません
Gayan Pathirage 2016年

2
--no-single-branchオプションを使用してこれを実行します。--depthは--single-branchを意味するため、-no-single-branchを使用して暗黙的にそれを解除できます。(git clone manページから取得)
Robert Stoddard

8
を使用!$しても、この例では技術的には正しいですが、構文を認識していない人が実際の質問に対する答えを理解するのに役立つことはありません。また、最初のコマンドの直後にあり、同じシェル内の2番目のコマンドに依存しています。誰かがこれらの暗黙の要件を省略した場合、それらは最終的に何か他のものを完全に削除する可能性があります。したがってdirformynewrepormコマンドの引数として名前を明示的に指定すると、両方のコマンド間の接続がより明確になるため、回答を改善できると思います。
davidA

29

ファイルが必要なだけなので、それをgitリポジトリとして扱う必要はありません。

rsync -rlp --exclude '.git' user@host:path/to/git/repo/ .

これはローカルパスとリモートssh / rsyncパスでのみ機能します。リモートサーバーがgit://またはhttps://アクセスのみを提供する場合は機能しない可能性があります。


それは.gitignoreを考慮に入れませんか?
JJローマン

itubは正しい、これは単に作業ツリーをコピーしています。git checkoutはこれを適切に実行するために使用されていましたが、現在は実行されなくなりました。
Sylvain

では、サーバーがgit://アクセスのみを提供している場合はどうしますか?
Rainb

4

または、Node.jsがインストールされている場合は、次のコマンドを使用できます。

npx degit GIT_REPO

npxにはNodeが付属しており、最初にインストールせずにバイナリノードベースのパッケージを実行できます(または、最初degitにを使用してグローバルにインストールできますnpm i -g degit)。

Degitは、Svelte and Rollupの作成者であるRich Harrisが作成したツールで、gitフォルダーを保持せずにリポジトリーを複製して新しいプロジェクトをすばやく作成するために使用します。しかし、一度レポを複製するためにも使用できます...


-1

いつでもできる

git clone git://repo.org/fossproject.git && rm -rf fossproject/.git

44
すべてをダウンロードして、後でディレクトリを削除しますか?たとえば、emacsは.gitに1GBの95%を持っています。したがって、-depth = 1はここでの解決策です。
RParadox 2013年

1
depth = 1を実行しても.gitフォルダーが表示されます
Aryeh Armon

@AryehArmonもちろんあなたはそれを見ます。--depthを使用しても、.gitの作成が妨げられることはありません。浅いコピーになるため、.gitのサイズははるかに小さくなります。ただし、それがまったく必要ない場合は、後で削除する必要があります。
zeycus
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.