프로젝트가 여러 출처를 가질 수 있습니까?


188

프로젝트가 Git에 두 개 이상의 "원점"을 가질 수 있습니까?

하나의 프로젝트를 githubHeroku 서버 에 푸시하고 싶습니다 .

특히 github 저장소를 추가 할 때이 오류가 나타납니다.

$ git remote add origin https://github.com/Company_Name/repository_name.git
fatal: remote origin already exists.

8
원하는만큼 원격 리포지토리를 가질 수 있지만 다른 이름을 지정해야합니다.
Felix Kling

이 경우 리포지토리 이름이 다릅니다. "원산지"라는 단어는 변경할 수있는 이름입니까?
Chris Dutrow

4
네, git remote rename <old> <new>: linux.die.net/man/1/git-remote . 그러나 Github 저장소의 이름을 다르게 지정할 수도 있습니다.
Felix Kling


그리고 리모컨 중 하나를 기본값으로 설정하여 밀어 넣을 때마다 해당 리모컨의 이름을 명시 적으로 작성하라는 메시지가 표시되지 않습니까?
40Detectives

답변:


275

원하는만큼 리모컨 을 사용할 수 있지만 "origin"이라는 리모컨은 하나만 가질 수 있습니다. "origin"이라는 원격은 기존 저장소를 복제 할 때 Git에 의해 작성된 기본 원격이라는 점을 제외하고는 특별한 방식이 아닙니다. 두 번째 리모컨을 구성하고 해당 리모컨에서 푸시 / 풀하고 원점 대신 해당 리모컨에서 분기를 추적하도록 일부 분기를 설정할 수 있습니다.

대신 "github"라는 원격 장치를 추가하십시오.

$ git remote add github https://github.com/Company_Name/repository_name.git

# push master to github
$ git push github master

# Push my-branch to github and set it to track github/my-branch
$ git push -u github my-branch

# Make some existing branch track github instead of origin
$ git branch --set-upstream other-branch github/other-branch

4
이 질문에 대해 가장 높은 표를 얻은 답변에서 알 수 있듯이이 항목은 복제 할 수 있습니다. 원격은 여러 저장소를 참조 할 수 있습니다. 따라서 하나의 리모컨으로 푸시하고 두 개 이상의 리포지토리를 업데이트 할 있지만 OP의 목표인지 확실하지 않습니다.
AD7six

그래도 왜 그렇게하고 싶은 실용적인 예가 있습니까? 하나의 디렉토리가 여러 저장소를 가리키는 이유는 무엇입니까? 각 저장소는 보통 자신의 전용 디렉토리가
dspacejs

4
@mightyspaj Heroku에 배포하는 거의 모든 사람에게는 리모콘 origin과 리모콘이 heroku있습니다.
meagar

@mightyspaj, 또는 팀에서 포크를 사용하고 때로는 액세스하려는 경우. 우리는 팀에서 다른 UTC로 팀과 협력하여 PR을 승인 할 때 포크를 사용하여 대신 리베이스 / 푸시 할 수 있으며 내일이 아닌 코드를 병합 할 수 있습니다).
Benoit Drapeau

모든 지역 지점을 한 번에 새로운 리모컨으로 푸시하는 방법이 있습니까?
Tanasis

89

나중에이 질문에 걸림돌이되는 사람을위한 참고로 한 번에 둘 이상의 git 리포지토리 서버로 원점을 푸시 할 수 있습니다.

다음 명령을 사용하여 다른 URL을 오리진 리모트에 추가하여이를 달성 할 수 있습니다.

git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git

8
이에 대한 자세한 내용은 이 quesion을 참조하십시오 .
moi

3
자, 이러한 원점 중 하나를 모두 삭제하지 않고 어떻게 삭제합니까?
Michael

@Michael ./git/config파일을 편집하고 [remote "origin"] 섹션에서 url 파일을 제거 할 수 있습니다
Pini Cheyni

8
@Michaelgit remote set-url --delete origin ssh://git@bitbucket.org/user/myproject.git
Afrig Aminuddin

모든 리모컨에 동일한 커밋 기록이 있어야합니까? 특정 커밋을 다른 리모컨이 아닌 다른 리모컨으로 푸시하려면
Qasim

44

다음은 GitHub & GitLab에 여러 리모컨이 포함 된 샘플 프로젝트입니다.

  1. GitHub에 대한 원격 저장소 추가

    $ git remote add github https://github.com/Company_Name/repository_name.git
    
  2. GitLab에 대한 원격 저장소 추가

    $ git remote add gitlab https://gitlab.com/Company_Name/repository_name.git
    
  3. 이제 프로젝트에 여러 리모컨이 있습니다. 로 다시 확인git remote -v

    $ git remote -v
    github https://github.com/Company_Name/repository_name.git (fetch)
    github https://github.com/Company_Name/repository_name.git (push)
    gitlab https://gitlab.com/Company_Name/repository_name.git (fetch)
    gitlab https://gitlab.com/Company_Name/repository_name.git (push)
    
  4. 여러 저장소로 어떻게 푸시합니까?

    $ git push github && git push gitlab
    

2
다만하지 않습니다 $ git push모든 리모트에 밀어?
워터 쿨러 v2

github을 누른 다음 gitlab으로 자동 푸시하려고하면 문제가 있습니다. 좀 도와 주실 래요? 원점을 하나씩 밀어 내고 싶습니다.
Mitul Marsoniya

gitlab에 두 개의 프로젝트, 두 개의 리포지토리가있는 경우이 작업을 어떻게 수행합니까? 한 프로젝트에서 코드를 가져온 다음 다른 프로젝트로 푸시합니까?
muzi jack

2

원본 대신 다른 이름을 지정하여 저장소에 다른 원격 계정을 추가 할 수 있습니다. origin2와 같은 이름을 사용할 수 있습니다. 따라서 git 명령을 다음과 같이 수정할 수 있습니다

git remote add origin2 https://github.com/Company_Name/repository_name.git

1
git remote add origin2 https://github.com/Company_Name/repository_name.git

푸시 용 :

git push -u origin2 master

1
git remote set-url --add --push origin git@github.com:user/my-project.git
git remote set-url --add --push origin git@bitbucket.org:user/my-project.git

이제 2 개의 원점이 있습니다.


1
이 답변은 --push옵션 덕분에 다른 사람들보다 더 도움이되고 개선되었습니다 .
Dmitri Zaitsev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.