ローカルリポジトリをgit-pullで使用できるようにするにはどうすればよいですか?


89

私は問題なく作業してきた作業コピーリポジトリを持っています。このリポジトリの起源はGitHubにあります。

自分の作業コピーリポジトリをビルドマシン(別の物理ホスト上のVM)のオリジンとして使用できるようにしたい最初にGitHub。私はすでにGitHubリポジトリ用のビルドを持っていますが、これを「ゴールデン」リポジトリ/ビルドにしたいと思います。つまり、何かが発生した場合、GitHubに対するビルドがパスすることが保証されます。

私はGit URLのドキュメントを見て、フォームでURLを使用するオプションがあることをgit://host.xz[:port]/path/to/repo.git/確認しました(たとえば、git-cloneのドキュメントを参照)参照)。最小限の構成で、可能な限り簡単な方法でこれを実行したいと思います。これをビルドマシンに公開するためだけにSSHデーモンまたはWebサーバーをセットアップする必要はありません。

Windows 7 x64 RCを実行しています。MSysGitとTortoiseGitをインストールし、ファイアウォールでGitのデフォルトポート(9814)を開きました。作業コピーのリポジトリはD:\Visual Studio Projects\MyGitRepoにあり、ホスト名はであると想定してくださいdevbox。ビルドマシンはWindows Server 2008 x64です。ビルドマシンで、関連する出力を使用して次のコマンドを試しました。

D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)

何か不足していますか?


ローカルで共有をセットアップして、ビルドマシンから「git clone \\ workmachine \ share」を実行できませんか?最善の/最も効果的な方法ではありませんが、最も簡単な方法です。
Joakim Elofsson、

回答:


133

プル元のリポジトリを設定するには、5つの方法があります。

  • ローカルファイルシステムgit clone /path/to/repoまたはgit clone file://path/to/repo。ネットワーク化されたファイルシステムがある場合は最低限の作業ですが、ネットワークをあまり効率的に使用できません。(これはJoakim Elofssonによって提案されたほぼ正確な解決策です)
  • HTTPプロトコルgit clone http://example.com/repo。あなたは必要とするすべての Webサーバーを、あなたも(フックから、おそらく自動的に)実行する必要があるのgit-更新サーバ情報を「ダム」プロトコルを介し引っ張っ/フェッチに必要な情報を生成します。
  • SSHgit clone ssh://example.com/srv/git/repoまたはgit clone example.com:/srv/git/repo。SSHサーバー(SSHデーモン)をセットアップし、SSHをクライアント(MS WindowsのPuTTYなど)にインストールする必要があります。
  • gitプロトコルgit clone git://example.com/repo。サーバーでgit-daemonを実行する必要があります。詳細については、ドキュメントを参照してください(フェッチする場合のみ、スタンドアロンプ​​ロセスとして実行できます。サービスとして実行する必要はありません)。git-daemonはgitの一部です。
  • bundlegit-bundleコマンドを使用してサーバー上にバンドルを生成し、それを何らかの方法で(USB経由でも)クライアントマシンに転送し、使用してクローンを作成しますgit clone file.bndl(クローンが機能しない場合は、「git init」、「git remote add "および" git fetch ")。

例で見当たらないのは、おそらくサーバーでgit-daemonを実行していることです。それ、またはgit-daemonの設定ミス。

残念ながら、MS Windowsでサービスとしてgit-daemonを実行することはできません。ただし、前のバージョンのmsysGitのアナウンスには、git-daemonが機能しないことについては何もありません。


はい、何かをインストールする必要があります毎回手動で、バンドルにコピーあります(おそらくそれを介してスクリプトを作成します。最初の3つのオプションにもgit-daemonが必要ですか?
alastairs

1
サーバーでgit-daemonを実行する必要があるのは「gitプロトコル」オプションのみです。「SSH」および「HTTP」オプションのみに、sshd(sshサーバー)またはWebサーバーのいずれかの追加ツールが必要です。バンドルソリューションは手動ソリューションです。
JakubNarębski、2009年

質問は「プル」に関するものでしたが、クローン元のリポジトリがベアではないため、後でポスターに「git push」を実行しないよう警告する必要があります。
yhager 2009年

@yhager、これについて詳しく説明してもらえますか?
alastairs 2009年

1
ローカルファイルシステムオプションを試す他の人への注意:UNCパスの先頭のバックスラッシュをエスケープすることを忘れないでください!:-)
alastairs 2009年

17

JakubNarębskiの回答に加えて、元の質問に沿った別の方法があります。通常のようにgithubからクローンを作成し、ローカルリポジトリから1回限りのプルを実行する場合は、次のようにします。

git pull /path/to/repo master

(マスターの代わりに、任意のブランチ名を付けることができます。)


小さなヒント(または私がこの質問にたどり着いた方法):..<path / to / repo>では機能していないようです。代わりにフルパスを使用してください。
Dmitry Timofeev


1

私は最近、gitプロジェクトの1つを変更して、実際のファイルのアップロードを行うためにsitecopyを使用して自身をHTTPサーバーに複製するようにしました。

とても簡単です。 git update-server-info、.gitディレクトリをサーバー上のhttpアクセス可能なディレクトリにミラーリングします。かなり一般的な 'project.git'を使用しました。

http:// site / project-gitからのGitプルはチャンプのように機能し、FTPアクセス以外はサーバーに何も置く必要はありませんが、sitecopyはwebdavもサポートしています。

ただし、複数のマシンを適切に同期させることができないため、サイトコピーの使用はお勧めしません。私のプロジェクトでは、HTTPリポジトリは読み取り専用であり、ゴールドアップデートは1台のマシンからのものなので、十分に機能します。


1

次のようなパスがある場合

C:\Project\

あなたはgit initすでにやったので、あなたにもフォルダがあります

C:\Project\.git\

新しいフォルダを作成します

C:\.git\

そのフォルダーに移動して実行しgit clone --bare ..\Projectが重要です)、フォルダー
に戻ってC:\Project\を実行しgit remote add-url local ..\.git\Projectます。
今、あなたはただやりますgit add -Agit commit -m "HelloWorld"そしてgit push local master

Projectフォルダを共有し、接続してZ:実行git clone Z:\Projectすることができます。今すぐ使用してgit pull origin mastergit push origin masterあるコンピュータから別のコンピュータに変更をプッシュ/プルすることができます。


0

リモートホストが同じWindowsネットワークにある場合、つまり\ remotehostとしてアクセスできる場合は、エクスプローラーでネットワークドライブをマッピングできます。たとえば、z:-> \ remotehost \ repodirとすると、 'git clone /プロジェクトのクローンを作成するz / myproject

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