1

可能であれば、裸のリポジトリを使用するのではなく、それらの間でプッシュおよびプルするように 2 つのリポジトリをセットアップしたいと考えています。

私はそれに取り組んでいるデザイナーがいるサーバーを持っています。git ツールは非常に複雑なので紹介しないので、サーバーの場所で作業させます。次に、誰かがフォルダーを削除したり、仕事をしていないときに変更を加えたりする場合に備えて、PC にもリポジトリを保持したいと思います.. (サーバーはネットワーク内の共有ディスクのようなものです..)

4

3 に答える 3

1

PC をバックアップとして使用している場合、最も簡単な解決策は次のとおりです。

  1. サーバーでcronなどを使用して、変更を自動コミットします
  2. その同じジョブで、PCの裸のリポジトリにプッシュします

これは、ベア リポジトリを保持しているファイル システムをサーバーにマウントして、サーバーが書き込み (git push) できるようにすることを前提としています。これを行わない場合は、git サーバーをセットアップする必要があります。これは Unix (gitd) では単純ですが、Windows (cygwin + gitd + sshd) ではより複雑です。

あるいは...

  1. サーバーでcronなどを使用して、変更を自動コミットします(上記のように)
  2. PCでcronなどを使用して、サーバーからPCへの変更を「git pull」します(サーバーの「git commit」をスケジュールして、PCの「git pull」が開始される前に完了するようにします)

これは、サーバー ファイルシステムを PC にマウントすることを前提としています (読み取りアクセスのみが必要です)。

裸ではないリモートリポジトリにアクセスしないことをお勧めしgit pushます...そうしないと、インデックスが作業コピーと一致せず、混乱を招く可能性があります。

于 2013-02-11T14:57:41.780 に答える
0

リポジトリをホストするには、 githubまたはbitbucketを使用することをお勧めします。それ以外の場合は、いずれかのマシンで git サーバーを実行する必要があります。
ところで、git はそれほど複雑ではないので、デザイナーがサーバーにもたらす可能性のある混乱を一掃するよりも、デザイナーに Git の使い方を教えるのに苦労することはありません。

編集

サーバーへのファイルシステム アクセス権がある場合はgit clone、パスを使用してリポジトリを作成できます。

git clone /path/to/repo local-repo
cd local-repo
git fetch /path/to/repo

編集 2

これを機能させるには、受信リポジトリで無視するようreceive.denyCurrentBranchに設定する必要があります。

git config receive.denyCurrentBranch "ignore"
于 2013-02-11T10:01:53.053 に答える
0

一般に、git 開発者は、ベアでないリポジトリにプッシュすることを望んでいません。アイデアは、プッシュ.gitは作業ディレクトリへの変更ではなく、フォルダーへの変更のみを送信するということです。裸でないレポにプッシュする場合、作業ツリーは実際には HEAD の背後にあります。

現在は可能ですが、さらに多くの手順が必要です。非ベアリポジトリへのプッシュに関する情報を次に示します: http://sitaramc.github.com/concepts/bare.html

しかし、最善の解決策は、私見ですが、裸のレポを保持し、他の2つのレポとの間でプッシュ/プル/フェッチすることだと思います。

于 2013-02-13T16:50:03.043 に答える