2011-08-11 12 views
1

ホームサーバーに私の ラップトップからバックアップ用にプッシュした裸のリポジトリがあります。新しいルータのために私はもはや私の家のLAN内の からグローバルURL(何か "NATループバック"とする)を使用してホームサーバに押し込むことはできませんが、ローカルLANアドレスを使用する必要があります。だから私の .git/configには現在、同じ裸のリポジトリのための2つのリモコンが含まれています2つの異なるURLを使用して同じgit remoteにプッシュ

だから、
[remote "home1"] 
     url = ssh://[email protected]/home/username/git_bare_repos/repo.git 
     mirror = true 
[remote "home2"] 
     url = ssh://[email protected]/home/username/git_bare_repos/repo.git 
     mirror = true 

、質問:これはOKですか?潜在的なハザード/落とし穴はありますか?そして、これを行う良い方法があるので、私は自宅にいるかどうかに応じて異なるコマンドを使用する必要はありませんか?

+0

これは私にとって妥当な解決策のようです。私はなぜあなたが 'NATのループバック'エラーを得るのか分からない。私はそれが本当の問題だと思う。 –

+0

@Stefan:多くのルータは、まだNATループバック接続を許可/サポートしていません。これは、AがBのパブリックIPアドレス(またはそれ自体さえ)に接続しようとしたときに発生しますが、Bは同じルータの背後にあるAの同じネットワークにあります。 – jweyrich

+0

@Stefan:そう、ルータを交換した後、SSHはLAN内からの作業を中止しました。 [こちら](http://www.broadbandreports.com/forum/r25031385-BC-Telus-Optik-V1000H-Actiontec-modem-router-Port-forwarding)に記載されているのと同様です。 – Mauro

答えて

2

大丈夫です。彼らは結局同じレポです。

唯一の違いは、現在の場所によっては、1つのリモコンまたは他のリモコンから/ etcをプッシュ/プルする必要があることです。

Gitは、すべてのブランチ、タグ、リモート追跡ブランチなどの参照を保持します。実際には、それらはすべてコミットへの参照であり、ファイルの表現は.git/refs/...です。

これらの参照を比較することによって、gitは各ブランチ、タグなどのステータスを知ることができます。たとえば、refs/heads/masterrefs/remotes/origin/masterと比較し、ブランチがsync'dでない場合、これらの参照は異なります。どちらが古くなっているのかを調べるために、gitはリモートコミットがローカルブランチに存在するかどうかを確認し、そうであればリモートブランチは古くなっています。これによりgitはローカルブランチがリモートブランチの前に何回コミットされているかを知ることができます。

さらに詳しい説明はhereです。

+0

ありがとうございます。おそらく、ローカルのgitリポジトリは、リモートの状態や以前に送信した情報は保存しません。ローカルのリポジトリは、おそらくリモコンで何が起こっているのか知ることはできません。 – Mauro

+0

@マウロ:明確にするために私の答えを更新しました。 – jweyrich

0

home1から最新のものを取り出して変更を加え、元に戻したとします。次に、他の場所から仕事をして、home2にプッシュします。 Gitはhome1home2が同じリポジトリであることは分かっていませんが、問題はありません。 Gitはhome2が "何らかの形で"すでにhome1にプッシュした変更を取得したことを確認し、新しい変更をプッシュします。

関連する問題