Githubでリモートリポジトリをクローンしようとしていますが、サイズが大きく、接続が十分に安定していないようであるため、クローンを正常に作成できません。
しかし、私はリポジトリの.Zipを正常にダウンロードしました。
Git cloneで作成されたこのZipを使用する方法はありますか?プッシュ、プルなどができますか?
関連する投稿 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.
リポジトリをダウンロードした場合(.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して、なんとかしてそれを取得することです。
受け入れられた答えはトリックを行いますが、これはもう少し簡単です。
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ユーザー名とリポジトリ名に置き換えてください;)
唯一のZip-likeの代替手段は "bundles" を交換することですが、githubは作成/提供を恐れていますバンドルのダウンロード。
Githubからダウンロード可能なZipアーカイブは、リポジトリ履歴の特定のコミット(通常はブランチの先端)のスナップショットであり、履歴は含まれていません。この機能は、コードベースのユーザーに自動的に提供することを目的としています(プロジェクトのソースコードのスナップショットを便利にダウンロードする方法があります。オペレーティングシステム用にソフトウェアをパッケージ化する単なるユーザーや下流のメンテナーは、通常、履歴全体を複製するのではなく、tarballで作業することに注意してください。
言い換えれば、Zipアーカイブのダウンロードは、リモート側でgit archive
を実行して、結果のファイルを渡すようなものです。
また、github(および他のGitホスティングプロバイダー)でホストされるリポジトリは「ベア」であることに注意してください。つまり、「。git」サブディレクトリが含まれていません。
いずれにせよ、これを解決する唯一の方法は、高速で信頼性の高いリンクを見つけて、それを使用して最初のダウンロードを行うことだと思われます。
ただし、完全な履歴がなくても問題ない場合は、ものが変わることに注意してください。その後、「-depth」コマンドラインパラメータをgit clone
に渡すことで、いわゆる「シャロークローニング」を使用できます。
ユースケースによっては、初期化が進むべき方法ではない場合があります。非常に大きなリポジトリがある場合は特に退屈です(私の場合は16GBで、これを行うにはIneededでした)。実際、ローカルrefs+objects
は吹き飛ばされます。長く存在します。
次の2つの手順でリポジトリをコピーする必要があります。
目的は、リモートから複製する必要があるオブジェクトの数を減らすか、存在しないリモートから再作成できないオブジェクトを減らすです。さらに、最初にリポジトリを作成した人のローカル設定ファイルと競合しない設定
objects and refsのリポジトリレイアウトを保持したい場合、リモートにもう存在しないか、コピーしたくない(たとえば、大きな画像アセットです)。このため、特にリモートがもうない場合は、初期化してプルする必要はありません。
代わりに、リポジトリはすでに参照とオブジェクトがそのままの許容可能な状態になっています。唯一の問題は、リモートが正しくセットアップされておらず、設定が不適切に設定されている場合です。
git config --local -l
を実行して、コミットIDがリポジトリ内でローカルに設定されていないことを確認し、グローバル設定を無効にするキーを変更します。
これでリポジトリが自分のものであるかのように設定されたので(gitがそうであるため)、gitは分散して動作するように設計されています。残っているのは、リモートが正しくセットアップされていることを確認する必要があることだけです。
リモートがなくても作成したい場合は、git init --bare
を使用してリモートサーバー上に作成し、通常どおりリモートを追加して、すべての参照をプッシュしますgit Push --all
。リポジトリをむき出しにすることは、歴史の相違について文句を言うことなく最初のプッシュを受け入れることを意味します。
既存のリモートリポジトリがある場合は、リモートリポジトリとして追加してプルします。アーカイブブランチは、アーカイブが作成された期間に応じて間違ったURLを指している場合があります。その場合は、git remote
を使用して新しい場所に割り当てるか、無効なURLを削除します。
リモートがセットアップされたら、フェッチしてプルして最新の状態にします。切り離されたHEADがある場合は、目的のブランチをチェックアウトします。アーカイブされたリポジトリの履歴がリモートから分岐している場合、gitはマージ競合を生成し、必要に応じて通常どおり変更を隠します。