다른 사람의 저장소에서 원격 지점을 가져 오는 방법
누군가가 포크 한 GitHub에 호스팅 된 프로젝트가 있습니다. 포크에 새 분기 "foo"를 만들고 몇 가지 사항을 변경했습니다. 내 "Repo"에서 "foo"라는 새 분기로 "foo"를 어떻게 가져 옵니까?
본인이 풀 요청을 제출할 수 있음을 이해했지만이 절차를 직접 시작하고 싶습니다.
다음을 가정하십시오.
- 그들이 내 프로젝트를 포크했기 때문에 우리의 두 저장소는 모두 같은 '역사'를 공유합니다.
- GitHub가 그들의 프로젝트가 광산에서 분기되었다고 표시하지만, 내 로컬 저장소에는이 사람의 프로젝트에 대한 언급이 없습니다. 리모컨으로 리모컨을 추가해야합니까?
- 아직 "foo"라는 브랜치가 없습니다. 먼저 수동으로 만들어야하는지 모르겠습니다.
- 나는 이것이 내 주인이 아닌 별도의 지점으로 끌어 들이고 싶습니다.
git remote add coworker git://path/to/coworkers/repo.git
git fetch coworker
git checkout --track coworker/foo
이것은 로컬 지점을 설정 foo
하고 원격 지점을 추적합니다 coworker/foo
. 따라서 동료가 변경 한 내용을 쉽게 가져올 수 있습니다.
git checkout foo
git pull
의견에 대한 답변 :
Cool :) 그리고 해당 분기를 직접 변경하려면 "foo"에서 두 번째 로컬 분기 "bar"를 작성하고 "foo"에서 직접 대신 작업해야합니까?
내가 추천하더라도 새 브랜치를 만들 필요는 없습니다. 또한 foo
동료 에게 직접 커밋 하고 동료가 지점을 가져 오도록 할 수도 있습니다. 그러나 해당 지점이 이미 존재하고 foo
지점을 업스트림 지점으로 설정해야합니다.
git branch --set-upstream foo colin/foo
colin
다음과 같은 방식으로 정의 된 리포지토리 (동료 리포지토리에 원격)가 있다고 가정 합니다.
git remote add colin git://path/to/colins/repo.git
아니요, 리모컨으로 추가하지 않아도됩니다. 그것은 번거롭고 매번 할 고통입니다.
커밋 잡기 :
git fetch git@github.com:theirusername/reponame.git theirbranch:ournameforbranch
이렇게하면 로컬 분기가 만들어졌으며 원래 분기 ournameforbranch
와 정확히 동일 theirbranch
합니다. 질문 예제의 경우 마지막 인수는입니다 foo:foo
.
참고 :ournameforbranch
자신의 지점 중 하나와 충돌하지 않는 이름을 생각하는 것은 귀찮은 인 경우 부분은 더 중단 할 수 있습니다. 이 경우 호출 된 참조 FETCH_HEAD
를 사용할 수 있습니다. 당신 git log FETCH_HEAD
은 그들의 커밋을보고 cherry-picked
체리를 커밋하는 것과 같은 일을 할 수 있습니다 .
다시 그들에게 밀기 :
종종, 당신 은 그들의 무언가 를 고치고 그것을 바로 뒤로 밀고 싶어합니다 . 그것도 가능합니다 :
git fetch git@github.com:theirusername/reponame.git theirbranch
git checkout FETCH_HEAD
# fix fix fix
git push git@github.com:theirusername/reponame.git HEAD:theirbranch
에서 작업하는 경우 분리 된 상태 것이 당신을 걱정, 반드시 지점을 사용하여 생성 :ournameforbranch
및 교체 FETCH_HEAD
와 HEAD
와 위 ournameforbranch
.
antak의 답변 인 경우 :
git fetch git@github.com:<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH>
당신에게 제공합니다 :
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
그런 다음 (Przemek D의 조언에 따름) 사용
git fetch https://github.com/<THEIR USERNAME>/<REPO>.git <THEIR BRANCH>:<OUR NAME FOR BRANCH>
갈래 리포가 보호되어 있으므로 직접 푸시 할 수 없으며 목표는 foo를 변경하는 것입니다. 그러면 분기 foo를 다음과 같이 리포로 가져와야합니다.
git remote add protected_repo https://github.com/theirusername/their_repo.git
git fetch protected_repo
git checkout --no-track protected_repo/foo
이제 업스트림이없는 로컬 foo 복사본이 있습니다. 변경 사항을 커밋하거나하지 않고 foo를 자신의 원격 저장소에 푸시 할 수 있습니다.
git push --set-upstream origin foo
이제 foo가 GitHub의 리포지토리에 있고 로컬 foo가 추적하고 있습니다. 그들이 계속 foo를 변경하면 그것들을 가져 와서 foo에 병합 할 수 있습니다.
git checkout foo
git fetch protected_repo
git merge protected_repo/foo
다음은 다른 사용자의 포크에서 PR 브랜치를 체크 아웃하기 위해 GitHub와 함께 작동하는 편리한 솔루션입니다. 풀 요청 ID (GitHub가 PR 제목과 함께 표시 함)를 알아야합니다.
예:
당신의 안전하지 않은 코드를 수정 # 8
앨리스는 1로 커밋 병합 싶어 your_repo:master
에서her_repo:branch
git checkout -b <branch>
git pull origin pull/8/head
와 다른 경우 리모컨을 대체하십시오 origin
. 올바른 풀 요청 ID로
대체 8
하십시오.
GitHub는 이전 답변과 관련하여 새로운 옵션을 제공합니다. PR에서 명령 행을 복사 / 붙여 넣기 만하면됩니다.
- PR 하단으로 스크롤하여
Merge
또는Squash and merge
버튼 을 확인 합니다 - 오른쪽의 링크를 클릭하십시오 :
view command line instructions
- 1 단계 오른쪽에있는 복사 아이콘을 누릅니다.
- 터미널에 명령을 붙여 넣기
참고 URL : https://stackoverflow.com/questions/5884784/how-to-pull-remote-branch-from-somebody-elses-repo
'IT story' 카테고리의 다른 글
스칼라 : 반복 가능한 문자열에 합류 (0) | 2020.04.11 |
---|---|
파이썬은 사용자로부터 단일 문자를 읽습니다 (0) | 2020.04.11 |
이 실행 파일에 대한 유효한 프로비저닝 프로파일이 디버그 모드에 없습니다. (0) | 2020.04.11 |
계산을 계속할 수 있도록 matplotlib 플롯을 분리하는 방법이 있습니까? (0) | 2020.04.11 |
ASP.NET MVC 4에서 사용자 지정 오류 페이지를 작동시키는 방법 (0) | 2020.04.11 |