2011-08-11 4 views
1

백업을 위해 내 노트북에서 푸시하는 홈 서버에 맨 저장소가 있습니다. 새 라우터로 인해 내 홈 LAN 내의 에서 홈 URL로 ("NAT 루프백"과 함께 할 ) 무언가를 집어 넣을 수는 없지만 로컬 LAN 주소를 사용해야합니다.두 개의 서로 다른 URL을 사용하여 동일한 git 리모컨으로 푸시

그래서
[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 

질문 :이 괜찮 그래서 내 .git/config에 지금 같은 베어 저장소에 대한 두 개의 리모컨이 포함되어? 잠재적 인 위험 요소/함정이 있습니까? 그리고 이것을 할 수있는 더 좋은 방법이 있습니까, 그래서 나는 집에 있든 없든간에 다른 명령을 사용할 필요가 없을 것입니다.

+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

괜찮습니다. 그들은 결국 같은 레포입니다.

유일한 차이점은 현재 위치에 따라 하나의 리모컨이나 다른 리모컨에서/기타를 밀고 당겨야한다는 것입니다.

자식은 모든 브랜치, 태그, 원격 추적 브랜치 등에 대한 참조를 유지합니다. 실제로 모든 커밋에 대한 참조이며, 파일 표현은 .git/refs/...입니다.

이 참조를 비교하면 git는 각 분기, 태그 등의 상태를 알 수 있습니다. 예를 들어, refs/heads/masterrefs/remotes/origin/master과 비교하고 분기가 동기화되지 않으면 이러한 참조가 달라집니다. 어느 것이 오래된 것인지 확인하기 위해서, git은 원격 커밋이 로컬 브랜치에 존재 하는지를 확인할 수 있으며, 존재한다면 원격 브랜치는 구식이다. 또한 git은 로컬 브랜치가 원격 브랜치보다 얼마나 많은 커밋을 앞두고 있는지를 알려주며 그 반대의 경우도 마찬가지입니다.

here에 대한 자세한 설명이 나와 있습니다.

+0

감사합니다. 아마도 로컬 git 저장소는 원격 상태에 대한 정보와 이전에 보낸 내용을 저장하지 않습니다. 로컬 리포지토리는 원격지에서 무슨 일이 벌어지고 있는지 알 수 없습니다. – Mauro

+0

@ 마우로 : 명확하게 대답을 업데이트했습니다. – jweyrich

0

home1에서 최신 소식을 가져 와서 일부 변경하고 다시 푸시한다고 가정 해 봅시다. 그런 다음 다른 위치에서 일을하고 home2으로 이동합니다. Git은 home1home2이 같은 저장소라는 것을 알지 못하지만 상관 없습니다. Git은 home2이 "어떻게 든"이미 이전에 home1으로 푸시 한 변경 사항을 확인하고 새로운 변경 사항을 푸시합니다.

관련 문제