내 로컬 저장소를 git-pull에 사용하려면 어떻게해야합니까?


89

문제없이 작업해온 작업 복사본 저장소가 있습니다. 이 저장소의 출처는 GitHub에 있습니다.

내 작업 복사본 저장소를 내 빌드 시스템 (다른 물리적 호스트의 VM)의 원본으로 사용할 수 있도록 만들고 싶습니다. 그래야 작업 복사본에 대한 커밋이 다음을 거치지 않고 빌드 시스템에서 빌드되고 테스트 될 수 있습니다. 먼저 GitHub. 나는 이미 GitHub 저장소에 대한 빌드를 가지고 있지만 이것이 "골든"저장소 / 빌드가되기를 바랍니다. 즉, 무언가가 들어가면 GitHub에 대한 빌드가 통과되도록 보장해야합니다.

Git URL에 대한 문서를 살펴본 결과 URL을 형식으로 사용하는 옵션이 있음을 확인했습니다 git://host.xz[:port]/path/to/repo.git/(예 : git-clone 문서 참조 ). 최소한의 구성으로 가능한 가장 간단한 방법으로이 작업을 수행하고 싶습니다. 빌드 머신에이를 게시하기 위해 SSH 데몬이나 웹 서버를 설정할 필요가 없습니다.

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

답변:


134

가져 오기를위한 저장소를 설정할 수있는 다섯 가지 가능성이 있습니다.

  • 로컬 파일 시스템 : git clone /path/to/repo또는 git clone file://path/to/repo. 네트워크에 연결된 파일 시스템이있는 경우 작업이 가장 적지 만 네트워크를 효율적으로 사용하지 않습니다. (이것은 Joakim Elofsson이 제안한 거의 정확한 솔루션입니다 )
  • HTTP 프로토콜 : git clone http://example.com/repo. 당신이 필요한 모든 웹 서버를, 당신은 또한 (후크, 아마도 자동) 실행해야 자식 업데이트 - 서버 정보를 "바보"프로토콜을 통해 당겨 / 가져 오는 데 필요한 정보를 생성 할 수 있습니다.
  • SSH : git 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의 일부입니다.
  • bundle : git-bundle 명령을 사용하여 서버에서 번들을 생성하고 , 어떤 방식 으로든 (USB를 통해서도) 클라이언트 컴퓨터로 전송하고, 다음을 사용하여 복제합니다 git clone file.bndl(복제가 작동하지 않으면 "git init", "git remote add "및"git fetch ").

귀하의 예제에서 누락 된 것은 아마도 서버에서 git-daemon을 실행 중일 것입니다. 또는 git-daemon을 잘못 구성합니다.

불행히도 MS Windows에서 git-daemon을 서비스로 실행하는 데 도움을 드릴 수 없습니다. 그래도 git-daemon이 작동하지 않는다는 msysGit의 마지막 버전에 대한 발표는 없습니다.


내가 설치해야하므로 좋아, 뭔가를 하거나 수동으로 번들마다 (이상 복사 가능 같아요 통해 스크립팅 처음 세 가지 옵션이 아니라 자식 - 데몬이 필요하십니까.?
alastairs

1
"git protocol"옵션 만 서버에서 git-daemon을 실행해야합니다. "SSH"및 "HTTP"옵션에만 sshd (ssh 서버) 또는 웹 서버와 같은 추가 도구가 필요합니다. 번들 솔루션은 수동 솔루션입니다.
Jakub Narębski

질문은 '풀 (pull)'에 관한 것이었지만, 포스터는 그가 복제하는 저장소가 베어가 아니기 때문에 나중에 'git push'를 실행하지 않도록 경고해야합니다.
yhager

이것에 대해 자세히 설명해 주시겠습니까, @yhager?
alastairs 2009-06-11

1
로컬 파일 시스템 옵션을 시도하는 다른 사람에게 유의하십시오. UNC 경로에서 선행 백 슬래시를 이스케이프해야합니다! :-)
alastairs 2009-06-11

17

Jakub Narębski의 답변 외에도 원래 질문과 더 일치하는 다른 방법이 있습니다. 평소처럼 github에서 복제 할 수 있습니다. 그런 다음 로컬 리포지토리에서 일회성 풀을 수행하려면 다음과 같이하십시오.

git pull /path/to/repo master

(마스터 대신 브랜치 이름을 입력 할 수 있습니다.)


작은 팁 (또는이 질문에 대한 방법) : ..<path / to / repo>에서 작동하지 않는 것 같습니다. 대신 전체 경로를 사용하십시오.
Dmitry Timofeev


1

최근에 실제 파일 업로드를 수행하기 위해 사이트 복사를 사용하여 HTTP 서버에 복제하도록 git 프로젝트 중 하나를 변경했습니다.

매우 쉽습니다 git update-server-info. .git 디렉토리를 서버의 http 액세스 가능한 디렉토리로 미러링하십시오. 나는 상당히 일반적인 'project.git'을 사용했습니다.

http : // site / project-git 에서 Git 풀은 챔피언처럼 작동하며 사이트 카피가 webdav도 지원하지만 FTP 액세스를 제외하고는 서버에 아무것도 가질 필요가 없습니다.

그러나 여러 컴퓨터를 동기화 상태로 유지하지 못하므로 사이트 복사를 사용하지 않는 것이 좋습니다. 내 프로젝트의 경우 HTTP 저장소는 읽기 전용이며 골드 업데이트는 하나의 컴퓨터에서만 제공되므로 충분히 잘 작동합니다.


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 master하고 git push origin master한 컴퓨터에서 다른 컴퓨터로 푸시 / 풀 변화에.


0

원격 호스트가 동일한 Windows 네트워크에있는 경우, 즉 \ remotehost로 액세스 할 수있는 경우 탐색기에서 네트워크 드라이브를 매핑 할 수 있습니다 (예 : z :-> \ remotehost \ repodir). 그런 다음 'git clone / 프로젝트 복제를위한 z / myproject '

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.