다른 사람의 프로젝트에서 분기 한 프로젝트의 로컬 분기 ( “configUpdate”)가 있으며 많은 변경 작업을 수행 한 후 변경 사항을 로컬 분기에 병합하려고합니다.
난 노력 했어
git pull --rebase origin configUpdate
그러나 최신 변경 사항을 파악하지 못했습니다. 두 가지를 어떻게 병합 할 수 있습니까? (또한 보너스 포인트의 경우 pull --rebase
명령으로 무엇을 했습니까?)
답변
기능 분기 (예 :)에서 다음을configUpdate
실행하십시오.
git fetch
git rebase origin/master
또는 더 짧은 형태 :
git pull --rebase
이것이 작동하는 이유 :
-
git merge branchname
분기에서 새 커밋을 가져 와서branchname
현재 분기에 추가합니다. 필요한 경우 자동으로 “병합”커밋을 맨 위에 추가합니다. -
git rebase branchname
분기에서 새 커밋을 가져 와서branchname
변경 사항 아래에 삽입합니다. 보다 정확하게는 현재 브랜치의 히스토리를 수정하여의branchname
변경 사항과 함께 팁을 기반으로합니다 . -
git pull
기본적으로와 동일합니다git fetch; git merge origin/master
. -
git pull --rebase
기본적으로와 동일합니다git fetch; git rebase origin/master
.
그렇다면 왜 git pull --rebase
보다 사용하고 싶 git pull
습니까? 다음은 간단한 예입니다.
-
새로운 기능에 대한 작업을 시작합니다.
-
변경 사항을 푸시 할 준비가 될 때까지 다른 개발자가 여러 커밋을 푸시했습니다.
-
당신이 경우
git pull
(병합을 사용하는), 변경 사항이 새로운 커밋에 의해 매장 될 것이며, 자동으로 생성 된 병합에 추가하여 커밋합니다. -
당신이 경우
git pull --rebase
대신, 자식은 빨리 감기 마스터가의 업스트림 것, 그 다음 상단에 변경 내용을 적용합니다.
답변
나는 그것을 발견했다 :
$ git fetch upstream
$ git merge upstream/master
답변
현지 지점으로 전환
> git checkout configUpdate
원격 마스터를 지점에 병합
> git rebase master configUpdate
충돌이있는 경우이를 수정하고 충돌 한 각 파일에 대해 명령을 수행하십시오.
> git add [path_to_file / conflicted_file] (예 : git add app / assets / javascripts / test.js)
리베이스 계속
> git rebase-계속
답변
git rebase가 나를 위해 작동하지 않는 것 같습니다. git rebase 후, 로컬 브랜치에 변경 사항을 푸시하려고 할 때 오류가 계속 발생합니다 ( “힌트 : 현재 브랜치의 끝이 원격 상대방 뒤에 있기 때문에 업데이트가 거부되었습니다. 원격 변경 사항을 통합하십시오 (예 : ‘git pull). .. ‘)) 다시 당기기 전에. “) git pull 후에도. 마침내 나를 위해 일한 것은 git merge였습니다.
git checkout <local_branch>
git merge <master>
나와 같은 초보자라면 git merge vs git rebase에 대한 좋은 기사가 있습니다.
https://www.atlassian.com/git/tutorials/merging-vs-rebasing