여러 원격 위치에서 풀 / 푸시 아닌)에서 푸시하고 가져 오는 방법이 있습니까? 길다 :

짧은 : git repo가 ​​원격 저장소 목록 (단일 “원본”이 아닌)에서 푸시하고 가져 오는 방법이 있습니까?

길다 : 연결이 다른 여러 컴퓨터에서 앱을 개발할 때 종종 상황이 발생합니다. 전송중인 노트북, 특정 위치에있을 때는 컴퓨터 “A”, 다른 컴퓨터는 “B” 다른 동안. 또한 랩톱은 “A”또는 “B”중 하나만 연결하고 때로는 둘 다와 연결할 수 있습니다.

내가 원하는 것은 git이 현재 연결할 수있는 모든 컴퓨터에서 항상 “풀”하고 “푸시”하는 것이므로 한 컴퓨터에서 다른 컴퓨터로 쉽게 건너 뛰고 원활하게 작업을 계속할 수 있습니다.



답변

다음 git remote명령을 사용하여 여러 원격 저장소를 구성 할 수 있습니다 .

git remote add alt alt-machine:/path/to/repo

구성된 모든 원격에서 가져오고 추적 분기를 업데이트하지만에 병합하지 않으려면 다음 HEAD을 수행하십시오.

git remote update

현재 리모컨 중 하나에 연결되어 있지 않으면 시간이 초과되거나 오류가 발생하고 다음으로 넘어갑니다. 가져온 리포지토리에서 또는를 cherry-pick수집 변경 사항 구성 방법에 따라 수동으로 병합해야합니다 .

alt에서 마스터 브랜치를 가져와 현재 헤드로 가져 오려면 다음을 수행하십시오.

git pull alt master

실제로 실제로 git pull는 줄임말입니다 git pull origin HEAD(실제로 구성 파일에서이를 확인하지만 아이디어를 얻습니다).

업데이트를 푸시하려면 각 리포지토리에 수동으로 업데이트해야합니다.
제 생각에 중앙 리포지토리 워크 플로를 염두에두고 설계되었습니다.


답변

최신 버전에서는 이 작업을 더 이상 수동으로 수행 할 필요가 없습니다git ! 아래의 Malvineous 솔루션을 참조하십시오 .

여기에서 재현 :

git remote set-url origin --push --add <a remote>
git remote set-url origin --push --add <another remote>

원래 답변 :

이것은 내가 나쁜 결과없이 꽤 오랫동안 사용하고 git 메일 링리스트 에서 Linus Torvalds가 제안한 것 입니다.

araqnid 의 솔루션은 코드 저장소 가져 오는 데 적합한 솔루션입니다 .하지만 나와 같은 권한을 가진 여러 개의 업스트림을 보유한 경우 (중요한 프로젝트 중 일부는 개인 업스트림, GitHub 및 Codaset에 복제됩니다) 매일 변경 사항을 푸시해야하는 고통이 될 수 있습니다.

간단히 말해서, git remote add모든 리모컨을 개별적으로 … 그리고 git config -e병합 된 원격을 추가하십시오. 이 저장소가 있다고 가정합니다 config.

[remote "GitHub"]
    url = git@github.com:elliottcable/Paws.o.git
    fetch = +refs/heads/*:refs/remotes/GitHub/*
[branch "Master"]
    remote = GitHub
    merge = refs/heads/Master
[remote "Codaset"]
    url = git@codaset.com:elliottcable/paws-o.git
    fetch = +refs/heads/*:refs/remotes/Codaset/*
[remote "Paws"]
    url = git@github.com:Paws/Paws.o.git
    fetch = +refs/heads/*:refs/remotes/Paws/*

"Paws""Codaset"에 대한 병합 된 원격을 생성하기 위해 모든 다음에 다음을 추가 할 수 있습니다.

[remote "Origin"]
    url = git@github.com:Paws/Paws.o.git
    url = git@codaset.com:elliottcable/paws-o.git

나는이 때이를 수행하면 git push Origin Master, 그것은 모두 밀어 버린다 Paws/MasterCodaset/Master좀 더 쉽게 생활을 순차적으로.


답변

git 1.8 (2012 년 10 월)부터는 명령 행에서이를 수행 할 수 있습니다.

git remote set-url origin --push --add user1@repo1
git remote set-url origin --push --add user2@repo2
git remote -v

그런 다음 git pushuser1 @ repo1로 푸시 한 다음 user2 @ repo2로 푸시합니다.


답변

~ / .bashrc에 다음 별칭을 추가했습니다.

alias pushall='for i in `git remote`; do git push $i; done;'
alias pullall='for i in `git remote`; do git pull $i; done;'


답변

다음을 사용하여 리모컨을 추가 할 수 있습니다.

git remote add a urla
git remote add b urlb

그런 다음 모든 저장소를 업데이트하려면 다음을 수행하십시오.

git remote update


답변

다음은 .gitconfig별칭 섹션 안에 bash 스크립트가있는 예입니다.

[alias]
        pushall = "!f(){ for i in `git remote`; do git push $i; done; };f"


답변

.git congfig 파일의 원격 “origin”에 두 개의 별도 pushurl을 추가했습니다. 내가 실행하면 git push origin "branchName"다음 URL이 통과하고 각 URL로 푸시됩니다. 더 쉬운 방법이 있는지 확실하지 않지만 Github 소스 코드로 푸시하고 My.visualStudio 소스 코드로 동시에 푸시하는 것이 좋습니다.

[remote "origin"]
  url = "Main Repo URL"
  fetch = +refs/heads/*:refs/remotes/origin/*
  pushurl = "repo1 URL"
  pushurl = "reop2 URl"