web-dev-qa-db-ja.com

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

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

作業コピーリポジトリをビルドマシンのOriginとして利用できるようにしたい(VM別の物理ホスト上))、作業コピーに行ったコミットをビルドしてテストできる最初にGitHub経由でビルドする必要はありません。GitHubリポジトリのビルドは既に行っていますが、これを「ゴールデン」リポジトリ/ビルドにしたいと考えています。 GitHubはパスすることが保証されている必要があります。

Git URLのドキュメントを見て、git://Host.xz[:port]/path/to/repo.git/という形式のURLを使用するオプションがあることを確認しました(たとえば、 git-clone documentation を参照)。最小限の構成で、これを可能な限り簡単な方法で実行したいのです。これをビルドマシンに公開するために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)

何か不足していますか?

86
alastairs

次からプルするためのリポジトリを設定するには、5つの可能性があります。

  • local filesystemgit clone /path/to/repoまたはgit clone file://path/to/repo。ネットワーク化されたファイルシステムを使用しているが、ネットワークを非常に効率的に使用していない場合は、作業が最も少なくなります。 (これは Joakim Elofssonによって提案されたほぼ正確なソリューションです
  • HTTPプロトコルgit clone http://example.com/repoanyWebサーバーが必要です。また、(おそらくフックから自動的に) git-update-server-info を実行して、必要な情報を生成する必要があります。 「ダム」プロトコルによるフェッチ/プル用。
  • [〜#〜] ssh [〜#〜]git clone ssh://example.com/srv/git/repoまたはgit clone example.com:/srv/git/repo。 SSHサーバー(SSHデーモン)をセットアップし、クライアントにSSHをインストールする必要があります(MS WindowsのPuTTYなど)。
  • git protocolgit 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をサービスとして実行することはできません。ただし、git-daemonが機能しないことについては、msysGitの最新バージョンの発表には何もありません。

122
Jakub Narębski

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

git pull /path/to/repo master

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

16
Pod

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

git update-server-infoを使用してから、.gitディレクトリをサーバー上のhttpアクセス可能なディレクトリにミラーリングするだけです。 「project.git」を使用しましたが、これはかなり一般的です。

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

ただし、複数のマシンの同期がうまく取れないため、sitecopyの使用はお勧めしません。私のプロジェクトでは、HTTPリポジトリは読み取り専用であり、ゴールドアップデートは1台のマシンからのみ提供されるため、十分に機能します。

1
davenpcj

Sshルートはうまく機能しますが、リモートsshサーバーが必要です。 Windowsプラットフォームを使用している場合、CygwinはGitで動作するsshサーバーを提供しますが、Cygwin Gitを使用している場合はGitを手動でアップグレードします( http://alecthegeek.wordpress.com/2009/01/21/top-tip-upgrade-git-on-cygwin / )。

1
Alec the Geek

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

C:\Project\

すでにgit initを実行したので、フォルダもあります

C:\Project\.git\

これで新しいフォルダが作成されます

C:\.git\

そのフォルダーに移動し、git clone --bare ..\Projectを実行します(bareが重要です)、
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を使用して、コンピューター間で変更をプッシュ/プルできます。

1
metadings

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

0
jnr