다른 사용자의 저장소에서 원격 분기를 가져오는 방법
저는 GitHub에서 호스팅되는 프로젝트가 있는데, 누군가가 이 프로젝트에 참여했습니다.그들의 포크에 새로운 지점 "foo"를 만들고 몇 가지 변경을 가했습니다.레포에서 "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
의견에 대한 응답:
멋지네요 :) 그리고 그 지점을 직접 변경하려면 "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://path/to/coworkers/repo.git theirbranch:ournameforbranch
이렇게 하면 다음 이름의 로컬 분기가 생성됩니다.ournameforbranch
그것은 정확히 무엇과 같습니다.theirbranch
그들을 위한 것이었습니다.질문 예제의 경우, 마지막 인수는 다음과 같습니다.foo:foo
.
그git://path/to/coworkers/repo.git
부품은 GitHub 저장소 페이지의 URL로 대체해야 합니다.SSH URL은 다음과 같습니다.git@github.com:theirusername/reponame.git
그리고 HTTPS 같은 것.https://github.com/theirusername/reponame.git
.
메모:ournameforbranch
자신의 지사 중 하나와 충돌하지 않는 이름을 생각하는 것이 번거로운 경우에는 부분을 더 생략할 수 있습니다.이 경우, 다음과 같은 참조가 있습니다.FETCH_HEAD
사용할 수 있습니다.넌 할 수 있다.git log FETCH_HEAD
그들의 약속을 보고 다음과 같은 일을 합니다.cherry-picked
그들의 커밋을 신중하게 고르는 것.
그들에게 다시 밀어붙이기:
종종, 여러분은 그들의 무언가를 고치고 그것을 바로 뒤로 밀기를 원합니다.그것도 가능합니다.
git fetch git://path/to/coworkers/repo.git theirbranch
git checkout FETCH_HEAD
# fix fix fix
git push git://path/to/coworkers/repo.git HEAD:theirbranch
분리된 상태에서 작업하는 것이 걱정된다면 반드시 다음을 사용하여 지점을 생성합니다.:ournameforbranch
를 대체합니다.FETCH_HEAD
그리고.HEAD
에 이닌아로ournameforbranch
.
다음은 다른 사용자의 포크에서 홍보 지점을 체크아웃하기 위해 GitHub과 함께 작동하는 좋은 편법 솔루션입니다.꺼내기 요청 ID(GitHub이 PR 제목과 함께 표시하는 ID)를 알아야 합니다.
예:
꺼내기 요청 #8
앨리스는 하나의 커밋을 병합하려고 합니다.your_repo:master
her_repo:branch
git checkout -b <branch>
git pull origin pull/8/head
<branch>
로의her_repo:branch
- 리모컨 이름을 다른 이름으로 부른 경우 대체
origin
. 8
올바른 당김 요청 ID를 사용합니다.
만약 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>
업데이트: 이것은 더 이상 작동하지 않는 것 같습니다. Github이 UI를 변경함에 따라, 그들이 그것을 복구하기를 바랍니다.
GitHub에는 이전 답변과 관련된 새로운 옵션이 있습니다. PR에서 명령줄을 복사/붙여넣기만 하면 됩니다.
- 할 수 있습니다.
Merge
또는Squash and merge
단추를 채우다 - 하세요: 오른쪽에링클릭합니다크를는있▁on다▁click니▁the▁link합릭클.
view command line instructions
- 1단계 오른쪽에 있는 복사 아이콘을 누릅니다.
- 터미널에 명령을 붙여넣습니다.
분기된 레포를 직접 밀어넣을 수 없도록 보호하고 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의 로컬 복사본이 있고 관련 업스트림은 없습니다.변경사항을 커밋한 후(또는 그렇지 않은 경우) 자신의 원격 저장소로 이동할 수 있습니다.
git push --set-upstream origin foo
이제 foo는 GitHub의 평판에 있고 당신의 지역 foo는 그것을 추적하고 있습니다.만약 그들이 foo를 계속 변경한다면, 당신은 그들의 foo를 가져와서 당신의 foo에 병합할 수 있습니다.
git checkout foo
git fetch protected_repo
git merge protected_repo/foo
git fetch upstream pull/<pr_number>/head:<your_local_hostname>
언급URL : https://stackoverflow.com/questions/5884784/how-to-pull-remote-branch-from-somebody-elses-repo
'programing' 카테고리의 다른 글
엔티티 프레임워크를 사용하여 기본 키 값 업데이트 (0) | 2023.05.27 |
---|---|
postgresql 삽입 쿼리에 현재 날짜 시간을 삽입하는 방법 (0) | 2023.05.27 |
MongoDB 2.4의 Meteor 앱에서 전체 텍스트 검색 구현 (0) | 2023.05.27 |
디렉터리 nodejs 내의 모든 디렉터리 가져오기 (0) | 2023.05.27 |
MongoDB: 컬렉션에 있는 수십억 개의 문서 (0) | 2023.05.27 |