Git이 다른 저장소에서 분기를 가져 오나요?


90

github에 저장소의 복제 본인 로컬 git 저장소가 있습니다. 누군가가 저장소를 분기하고 새 저장소의 새 브랜치를 변경했습니다. 이 새 브랜치를 내 저장소로 옮기고 싶습니다 (마스터와 병합하기 전에 먼저 작업하기 위해 로컬에서).

새 분기를 만든 다음 분기 된 저장소에서 가져 오려고 시도했지만 새 분기가 마스터 분기의 복사본이고 로컬 파일 변경 사항이기 때문에 불평합니다.

error: Your local changes to the following files would be overwritten by merge.

그렇다면 다른 저장소의 분기를 내 로컬 저장소의 새 분기로 어떻게 가져올 수 있습니까?

그게 말이 되길 바랍니다. 그렇지 않은 경우 내 저장소입니다 : https://github.com/MatthewLM/cbitcoin

보시다시피 누군가 "linuxBuild"브랜치로 새 저장소를 만들었습니다 : https://github.com/austonst/cbitcoin/tree/linuxBuild

MatthewLM / cbitcoin의 로컬 저장소에 해당 분기를 원합니다.

어떻게 할 수 있습니까?

답변:


161

git status로컬 리포지토리에 단계되지 않은 변경 사항이 없음 을 보여주는 지 확인해야 합니다.
먼저 로컬 변경 사항을 숨기고 해당 분기를 가져 오는 것보다이를 수행 할 수 있습니다. 나중에 당신은 당신의 숨김을 적용 할 수 있습니다.


로컬 저장소에서 포크의 분기 구조를 다시 생성하려면 다음을 수행 할 수 있습니다.

git remote add fork <url of fork>
git fetch fork
git checkout -b fork_branch fork/<branch>

이렇게하면 포크에서 fork_branch와 같은 기록을 가진 로컬 브랜치가 생성됩니다 <branch>. 즉 , 포크에서하는 위치에서 fork_branch분기됩니다 . 또한 로컬 브랜치가 이제 포크에서 해당 브랜치를 추적하므로 포크에서 커밋 된 새로운 변경 사항을 쉽게 가져올 수 있습니다.master<branch>

작업 복사본에 변경 사항이 포함되지 않았는지 미리 확인해야한다고 생각합니다.


알았어 고마워. 내 로컬 변경 사항과 포크의 브랜치에서 찾을 수없는 커밋을 원한다면 이것은 좋을 것입니다. 하지만 새 브랜치가 포크 저장소에있는 것과 똑같이되도록하려면 어떻게해야합니까? 여기에는이 새 브랜치에 대해 포크가 발생한 후 내 저장소에서 커밋을 제거하는 것이 포함됩니다. 그렇게하면 분기가 분기 된 저장소가 아닌 내 저장소에서 만들어진 것처럼됩니다.
— Matthew Mitchell

귀하의 대답은 내가해야 할 일에 대한 수용 가능한 솔루션이지만 새 분기를 저장소로 가져올 수 있다면 더 간단합니다. 다른 사람들의 말을보기 위해 잠시 기다릴 것입니다.
— Matthew Mitchell

@MatthewMitchell : 업데이트를 확인하십시오. 그게 당신이 찾고 있던 것입니까?
— Daniel Hilgarth

결국 다른 브랜치와 병합하는 방법을 사용했지만 (방금 마스터와 병합했습니다), 다른 저장소의 브랜치를 정확히 원하는 경우에는 가져 오기를 시도하고 설명하신 결제 방법입니다. 감사.
— Matthew Mitchell

다른 저장소에서 다른 분기 "gh-pages"를 마이그레이션하는 데 사용됩니다!
— Marcello de Sales

39

리모컨을 추가하지 않는 방법.

git checkout --orphan fork_branch
git reset --hard
git pull <url of fork> <branch>

2
감사합니다. 북마크에 추가했고 계속 다시 방문해주세요!
— Shane Smiskol

2
2020 년 베스트 답변
— Diamond
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.