새 서버에 Git 푸시 / 복제


127

나는 단지 Git을 배우고 있으며 해결할 수없는 것이 있습니다. Mac에서 로컬로 git 리포지토리를 만들고 사용한 후에 다른 서버로 사본을 다른 곳으로 푸시 할 수 있습니까? 나는 방화벽 뒤에있어 불행히도 git clone다른 컴퓨터에서 실행할 수 없습니다 .

답변:


137
  1. git remote add 이름 URL
  2. git push 이름 지점

예:

git remote add origin git@github.com:foo/bar.git
git push origin master

의 문서를 참조하십시오 git push- 원격 주어진 지점에 대한 기본값으로 원격을 설정할 수 있습니다; 그렇지 않으면 이름 origin이 특별합니다. 그냥 git push단독으로 동일한 작업을 수행합니다 git push origin thisbranch (어떤 지점 당신이있어 용).


7
A와 같은 가까운 효과 "푸시 복제" 오히려보다는 다만 _branch_을 pushinh : git push -u --all우리는 생략 할 수 origin는 기본 밀고에 대한 이름을 가정이고로 -u도 원격 지점을 추적합니다.
cregox

13
서버를 사용하여 빈 베어 저장소를 git init --bare /foo/bar.git만든 다음 로컬 응답을 밀어 넣으면 충분합니다 (이 답변과 같이). 압축 / 타킹 된 것을 서버로 전송할 필요는 없습니다.
OderWat

1
두번째 주문. 예를 들어, 원격 (예 : git@github.com)에 로그인 한 상태에서 'git init --bare foo / bar.git'을 수행하면 '원격 출발지'에 목적지가 있습니다. github 예제의 경우 github의 Repository / Add 웹 인터페이스를 사용하고 "명령 줄에서 기존 리포지토리 푸시"조언을 따를 수 있다고 생각합니다. Github은 '-u'에게 추적 참조를 유발하도록 권고합니다.
Dave X

이 방법은 정식 일 수 있지만, 애매 모호하고 git의 유용성을 떨어 뜨립니다. 나는 어떤 자식을 사랑하지만 좋은 하늘에는 UI 문제가 있습니다 ..
Ross Rogers

원래 질문에 추가 된 "편집"단락을 제거 할 자유를 가졌으므로이 절차가 문제가 된 것처럼 보입니다. 나는 그것이 생각하지 않으며 어쨌든 질문 편집 대신 주석이었을 것입니다.
August Lilleaas 2016 년

75

로컬 컴퓨터에서 먼저 저장소를 복제하십시오.

git clone --bare /path/to/repo /path/to/bare/repo.git  # don't forget the .git!

이제 tar / gzip 또는 원하는 아카이브 도구를 사용하여 새 repo.git 디렉토리를 아카이브 한 다음 아카이브를 서버에 복사하십시오.

서버에서 저장소를 아카이브 해제하십시오. 그런 다음 로컬 저장소에 원격을 설정해야합니다.

git remote add repo-name user@host:/path/to/repo.git #this assumes you're using SSH

그러면 다음을 사용하여 원격 리포지토리로 밀고 당길 수 있습니다.

git push repo-name branch-name
git pull repo-name branch-name

4
".git을 잊지 마세요!"라는 주석을 설명해 주시겠습니까? 폴더 끝에 .git을 추가하는 요점은 어디에 있습니까? 언제해야합니까? 컨벤션 만?
lumbric

5
".git"은 단순한 git repo를 식별하기위한 비공식 표준입니다.
Grant Limberg

3
나는이 아이디어를 따르지 않고 ... git 서버를 설정하고 실제로 그것을 압축 하고 다른 방법을 사용하는 대신 "전송 / 복사 / 동기화 / 백업 상태로 유지" 하기 위해 그것을 사용 하는 전체 목적을 어 기지 않습니까?
cregox

1
원래 리포지토리가 푸시하려는 서버가 존재했던 네트워크에 액세스 할 수없는 네트워크에 있었기 때문에 이것이 정확히 필요한 것입니다. 이를 통해 레포를 액세스 할 수있는 상자에 넣을 수있었습니다.
michaeltwofish

3
@Cawas는 리포지토리를 한 번만 수동으로 압축 / 복사 / 추출하면됩니다. 그 후 필요한 것은 git push and pull입니다.
스페어 바이트

9

리포지토리를 옮기는 방법에는 여러 가지가 있으며 git bundle네트워크 가용성이 충분하지 않은 경우 좋은 방법입니다. Git 리포지토리는 실제로 파일로 가득 찬 디렉토리이기 때문에 .git가장 적합한 방법으로 디렉토리 의 복사본을 만들어 리포지토리를 "복제" 할 수 있습니다.

가장 효율적인 방법은 외부 저장소를 사용하는 것입니다 ( GitHub 사용 또는 Gitosis 설정 ) git push.


7
remote server> cd /home/ec2-user
remote server> git init --bare --shared  test
add ssh pub key to remote server
local> git remote add aws ssh://ec2-user@<hostorip>:/home/ec2-user/dev/test
local> git push aws master

나는 당신의 대답의 단순함을 좋아하지만 그것이 내가 필요한 것인지 확실하지 않습니다. GitHub에 기존 GIT 리포지토리가 있으며 이제 Ubuntu 서버 (GIT가 설치되어 있음)의 라이브 파일을 푸시하려고합니다. 프로세스를보다 명확하게하기 위해 주석을 추가 할 수 있습니까?
Dave Everitt

1

github 같은 원격 서버로 분기를 푸시 할 수 있습니다 . 먼저 초기 프로젝트 설정을 수행 한 다음 프로젝트를 복제하고 다음을 수행하십시오.

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