2013-01-17 4 views
51

github에있는 저장소의 복제본 인 로컬 git 저장소가 있습니다. 누군가 저장소를 포크하고 새 저장소의 새 분기에서 변경했습니다. 이 저장소를 저장소 (저장소와 병합하기 전에 먼저 로컬로 작업)로 옮기고 싶습니다. 다른 저장소에서 브랜치를 가져 오는 git?

나는 새로운 지점을 만든 다음 갈래 저장소에서 당겨하지만 새로운 지점 마스터 지점뿐만 아니라 로컬 파일 변경의 복사본이기 때문에 불평했는데, 그래서

error: Your local changes to the following files would be overwritten by merge을 말한다.

다른 저장소의 분기를 로컬 저장소의 새 분기로 가져 오려면 어떻게해야합니까?

나는 그것이 의미가 있기를 바랍니다. 그렇지 않으면,이 내 저장소입니다 : https://github.com/austonst/cbitcoin/tree/linuxBuild

내가 MatthewLM/cbitcoin 내 로컬 저장소에 해당 분기를 원하는 : https://github.com/MatthewLM/cbitcoin

당신이 볼 수 있듯이, 누군가가 지점 "linuxBuild"와 새 저장소를 만들었습니다.

어떻게하면됩니까?

답변

102

git status은 로컬 저장소에 unstaged 변경 사항이 없음을 보여줘야합니다.
먼저 로컬 변경 사항을 숨기고 해당 분기를 가져 오는 것보다이 작업을 수행 할 수 있습니다. 이후에 은닉을 신청할 수 있습니다.


로컬 저장소에 포크의 분기 구조를 다시 만들려면, 당신은 할 수있는 다음 :이 같은 역사 등으로 지역 지점 fork_branch을 만듭니다

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

포크에서 <branch>, 즉 은 master에서 분기 할 것이며 <branch>은 포크에서 수행됩니다. 또한 로컬 브랜치는 포크에서 해당 분기를 추적하므로 포크에서 커밋 된 새 변경 사항을 쉽게 가져올 수 있습니다.

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

+0

감사합니다. 로컬 변경이 필요하고 분기에서 분기에서 찾을 수없는 커밋을 원하면이 방법이 유용 할 것입니다. 하지만 새로운 분기를 포크 저장소에있는 것처럼 정확하게 만들려면 어떻게해야합니까? 여기에는이 새로운 브랜치에서 포크가 발생한 후에 내 저장소에서 커밋을 제거하는 작업이 포함됩니다. 그렇게하면 지점이 분기 된 저장소가 아닌 자체 저장소에 만들어진 것처럼 보입니다. –

+0

당신의 대답은 제가해야 할 일에 대한 받아 들일 수있는 해결책입니다. 그러나 새로운 지사를 저장소에 가져올 수 있다면 좀 더 솔직하게 찾을 수있을 것입니다. 나는 다른 사람들이 말하는 것을보기 위해 잠시 기다릴 것이다. –

+0

@MatthewMitchell : 업데이트를 확인하십시오. 그게 니가 찾고 있던거야? –

3

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

git checkout --orphan fork_branch 
git reset --hard 
git pull <url of fork> <branch> 
관련 문제