web-dev-qa-db-ja.com

zipからgitリポジトリをクローンする方法

Githubでリモートリポジトリをクローンしようとしていますが、サイズが大きく、接続が十分に安定していないようであるため、クローンを正常に作成できません。

しかし、私はリポジトリの.Zipを正常にダウンロードしました。

Git cloneで作成されたこのZipを使用する方法はありますか?プッシュ、プルなどができますか?

37
Lesto

関連する投稿 here.gitディレクトリを取得し、 mläute が提供する答えを簡素化するために必要な情報を提供します。

  • ベアリポジトリを複製して.gitディレクトリを取得します

    $ mkdir repo
    $ git clone --bare http://github/user/repo repo
    
  • .gitディレクトリを作成し、クローンファイルを移動します

    $ mkdir repo/.git
    $ mv repo/* repo/.git
    
  • リポジトリを解凍します

    $ unzip repo.Zip
    
  • リポジトリを再初期化する

    $ cd repo
    $ git init
    
  • 同期されていることを確認してください

    $ git pull
    
  • HEADをリセットして、ステータスをクリーンアップします

    $ git reset HEAD
    
  • ここにリポジトリのログがあります...リポジトリの場所- http://github.com/udacity/fullstack-nanodegree-vm

    $ git log
    commit ebcbda650bc81d7f4856f5314a0689cea5b43086
    Merge: 574774b b5b787e
    Author: Karl Krueger <[email protected]>
    Date:   Tue Apr 7 11:39:54 2015 -0700`
    
            Merge pull request #3 from pmallory/sharedDirAlert
    
            Add a login alert to explain how to access Vagrant's shared directory
    
    commit b5b787efdb1ecec0c3c9c7f9c0fd4732f984fcb3
    Author: Philip Mallory <[email protected]>
    Date:   Mon Apr 6 15:40:32 2015 -0700`
    
           move the alert into the motd
    
    commit b8012f33c86b0d19fc4c2b972af092e88d00978f
    Author: Philip Mallory <[email protected]>
    Date:   Mon Apr 6 14:32:01 2015 -0700`
    
           Add a login alert to explain how to access Vagrant's shared directory
    
    commit 574774ba29ccd661154431d5600240f090440c37
    Author: Lorenzo Brown <[email protected]>
    Date:   Wed Mar 11 14:08:02 2015 -0700`
    
           Update pg_config.sh
    
           Added installs for Auth&Auth
    
    commit 88fc5537b1a0017a1d76af4587a22412473809a4
    Author: Lorenzo Brown <[email protected]>
    Date:   Wed Mar 4 13:00:25 2015 -0800`
    
           Update and rename vagrant to vagrant/catalog/README.txt
    
    commit f978cdc14c62b7295d8da1a95452faaa1bd108b8
    Author: Lorenzo Brown <[email protected]>
    Date:   Wed Feb 4 11:06:03 2015 -0800`
    
           Update Vagrantfile
    
           switched to port forwarding on 8080
    
    commit d6a3a26578ef3c6d01d28abca76d817938892c7f
    Author: Lorenzo Brown <[email protected]>
    Date:   Tue Feb 3 14:52:34 2015 -0800`
    
           Update Vagrantfile
    
           Added:
    
           config.vm.network "forwarded_port", guest: 80, Host: 8080
           config.vm.network "forwarded_port", guest: 5000, Host: 5000
    
           FSF uses these two ports for lessons 2 & 3 respectively.
    
    commit 752a79e408c7328ef7f1766d1b97bb468ffed90a
    Author: Mike Wales <[email protected]>
    Date:   Mon Feb 2 11:21:29 2015 -0800`
    
           Removed .vagrant directory
    
    commit 5af9d19adf9ab19b1d886f6cc78e556f864b42dd
    Author: Mike Wales <[email protected]>
    Date:   Mon Feb 2 11:16:45 2015 -0800`
    
           Initial commit.
    
24
fracjackmac

リポジトリをダウンロードした場合(.git dir)、非常に簡単です。

  • リポジトリを解凍します

    $ unzip repo.Zip
    
  • クローンURIを指すリポジトリでremoteを構成します

    $ cd repo
    $ git init
    $ git remote add Origin https://github.com/user/repo.git
    
  • リポジトリを再同期します

    $ git pull
    

実際には、githubからの「Zip」ダウンロードしないには.gitディレクトリなので、これは役に立ちません:-(

おそらくあなたが持っている最善の策は、安定したアクセスを持つマシンでクローンを作成し、次に.gitディレクトリをZipして、なんとかしてそれを取得することです。

12
umläute

受け入れられた答えはトリックを行いますが、これはもう少し簡単です。

unzip <repo>.Zip
cd <repo>
git init
git add .
git remote add Origin https://github.com/<user>/<repo>.git
git remote update
git checkout master

<user><repo>をgithubユーザー名とリポジトリ名に置き換えてください;)

7
arctelix

唯一のZip-likeの代替手段は "bundles" を交換することですが、githubは作成/提供を恐れていますバンドルのダウンロード。

Githubからダウンロード可能なZipアーカイブは、リポジトリ履歴の特定のコミット(通常はブランチの先端)のスナップショットであり、履歴は含まれていません。この機能は、コードベースのユーザーに自動的に提供することを目的としています(プロジェクトのソースコードのスナップショットを便利にダウンロードする方法があります。オペレーティングシステム用にソフトウェアをパッケージ化する単なるユーザーや下流のメンテナーは、通常、履歴全体を複製するのではなく、tarballで作業することに注意してください。

言い換えれば、Zipアーカイブのダウンロードは、リモート側でgit archiveを実行して、結果のファイルを渡すようなものです。

また、github(および他のGitホスティングプロバイダー)でホストされるリポジトリは「ベア」であることに注意してください。つまり、「。git」サブディレクトリが含まれていません。

いずれにせよ、これを解決する唯一の方法は、高速で信頼性の高いリンクを見つけて、それを使用して最初のダウンロードを行うことだと思われます。

ただし、完全な履歴がなくても問題ない場合は、ものが変わることに注意してください。その後、「-depth」コマンドラインパラメータをgit cloneに渡すことで、いわゆる「シャロークローニング」を使用できます。

1
kostix

ユースケースによっては、初期化が進むべき方法ではない場合があります。非常に大きなリポジトリがある場合は特に退屈です(私の場合は16GBで、これを行うにはIneededでした)。実際、ローカルrefs+objectsは吹き飛ばされます。長く存在します。

次の2つの手順でリポジトリをコピーする必要があります。

  1. 「データファイル」(HEADリビジョンはステージングされていない可能性があります)
  2. インデックスとオブジェクトhistory + refs + objects:ベースライン、デルタ、ブランチポインター、タグを記録します。

目的は、リモートから複製する必要があるオブジェクトの数を減らすか、存在しないリモートから再作成できないオブジェクトを減らすです。さらに、最初にリポジトリを作成した人のローカル設定ファイルと競合しない設定

objects and refsのリポジトリレイアウトを保持したい場合、リモートにもう存在しないか、コピーしたくない(たとえば、大きな画像アセットです)。このため、特にリモートがもうない場合は、初期化してプルする必要はありません。

代わりに、リポジトリはすでに参照とオブジェクトがそのままの許容可能な状態になっています。唯一の問題は、リモートが正しくセットアップされておらず、設定が不適切に設定されている場合です。

git config --local -lを実行して、コミットIDがリポジトリ内でローカルに設定されていないことを確認し、グローバル設定を無効にするキーを変更します。

これでリポジトリが自分のものであるかのように設定されたので(gitがそうであるため)、gitは分散して動作するように設計されています。残っているのは、リモートが正しくセットアップされていることを確認する必要があることだけです。

リモートがなくても作成したい場合は、git init --bareを使用してリモートサーバー上に作成し、通常どおりリモートを追加して、すべての参照をプッシュしますgit Push --all。リポジトリをむき出しにすることは、歴史の相違について文句を言うことなく最初のプッシュを受け入れることを意味します。

既存のリモートリポジトリがある場合は、リモートリポジトリとして追加してプルします。アーカイブブランチは、アーカイブが作成された期間に応じて間違ったURLを指している場合があります。その場合は、git remoteを使用して新しい場所に割り当てるか、無効なURLを削除します。

リモートがセットアップされたら、フェッチしてプルして最新の状態にします。切り離されたHEADがある場合は、目的のブランチをチェックアウトします。アーカイブされたリポジトリの履歴がリモートから分岐している場合、gitはマージ競合を生成し、必要に応じて通常どおり変更を隠します。

0
awiebe