GitHub 리포지토리를 분기했습니다. 그런 다음 포크에 몇 가지 변경 사항을 적용했습니다. 그런 다음 원래 리포지토리가 내 변경 내용과 일부를 병합했습니다. 이제 누락 된 변경 사항을 병합하고 싶습니다. 간단한 pull과 push를 시도했지만 커밋이 중복되었습니다. 가장 좋은 방법은 무엇입니까?
GitHub 리포지토리를 분기했습니다. 그런 다음 포크에 몇 가지 변경 사항을 적용했습니다. 그런 다음 원래 리포지토리가 내 변경 내용과 일부를 병합했습니다. 이제 누락 된 변경 사항을 병합하고 싶습니다. 간단한 pull과 push를 시도했지만 커밋이 중복되었습니다. 가장 좋은 방법은 무엇입니까?
답변:
각 저장소마다 "원격"이있을 수 있습니다. 하나의 리모콘에서 다른 쪽을 밀어야합니다.
원래 포크에서 복제 한 경우 해당 리모콘을 "원본"이라고합니다. 아직 추가하지 않은 경우 첫 번째 사람의 저장소를 다른 리모트로 추가해야합니다.
git remote add firstrepo git://github.com/first/repo.git
모든 설정이 완료되면 실제로
git pull firstrepo master
git push origin
기억, git pull
수행하는 매크로에 불과하다 git fetch
및 git merge
그 순서. 첫 번째 사람의 저장소에서 커밋 목록을 가져온 다음 분기를 트리에 병합하면됩니다. 합병은 두 지점에서 커밋으로 올바른 일을해야합니다.
GitHub는 모든면에서 굉장히 뛰어나며 바로 가기를 제공합니다. 저장소의 포크에는 "빨리 감기"버튼이있어 다른쪽에 완전히 합쳐져 있으면 포크를 잡을 수 있습니다.
따라서 위의 대답은 완벽하게 작동하지 않았습니다. 즉, 작동했을 때 원래 github 작성자와의 연결이 끊어지고 그 후에는 더 이상 작동하지 않는 것 같습니다. 문제는 원격 이름과 지점 사이에 /가 생략되어 있다고 생각합니다. 따라서 원격에서 master라는 분기를 가져 오지만 아무것도 할 수 없습니다. 왜 그런지 잘 모르겠습니다.
github이 사이트에서 권장 하는 방식은 다음과 같습니다 .
갈래 리포지토리를 복제 한 후에는 이전 답변과 같이 원본을 가리키는 원격을 추가해야합니다. 그들은 그것을 상류라고 부르고 싶지만 중요하지 않습니다.
git remote add upstream git://github.com/octocat/Spoon-Knife.git
그런 다음 가져옵니다
git fetch upstream
병합 할 수있는 버전이 표시됩니다
From git://github.com/octocat/Spoon-Knife.git
* [new branch] gh-pages -> upstream/gh-pages
* [new branch] master -> upstream/master
그런 다음 병합하려는 지점을 선택하기 만하면됩니다. 로컬 지점이 아니라 리모컨 아래에 저장됩니다. 그러나 업스트림 / 마스터라고하는 로컬 지점이없는 경우 (허용되는) 아래 줄과 잘 병합해야합니다.
git merge upstream/master
또는이 줄을 사용하여 페치 / 병합 (최초 페치 후)을 단축 할 수 있습니다.
git pull upstream/master
git rebase
훨씬 더 잘 작동하고 빈 병합 커밋은