힘내 풀과 힘내 리베이스


124

나는 망할 놈의 멍청한 놈이야,하고의 차이 배우려고 노력 git pull대를 git rebase. 둘 다 동일한 목적에 기여한다고 생각하기 때문에 누군가 어떤 옵션을 사용할 때 예를 들어 줄 수 있습니까?


그래, 내가 했어. pull과 rebase의 차이점은 pull이 병합을 수행한다는 것입니다. 따라서 귀하의 질문에 대한 답변은 내가 붙여 넣은 링크에 있습니다.
Thibault D.

1
@ user4943236 1) 누가 당신의 질문에 반대표를 던졌는지도 모르고, 아무 이유없이 사람들을 비난하지 마세요. 문서화
Tim


이것이 귀하의 질문에 대답합니까? git pull VS git fetch Vs git rebase
Shiwangini

답변:


130

git pullgit rebase호환되지 않습니다,하지만 그들은 밀접하게 연결되어있다.

git pull원격에서 현재 분기의 최신 변경 사항을 가져와 해당 변경 사항을 분기의 로컬 복사본에 적용합니다. 일반적으로 이것은 병합에 의해 수행됩니다. 즉, 로컬 변경 사항이 원격 변경 사항에 병합됩니다. 그래서 git pull유사하다 git fetch & git merge.

리베이스는 병합의 대안입니다. 두 분기를 결합하는 새 커밋을 만드는 대신 분기 중 하나의 커밋을 다른 분기 위로 이동합니다.

병합 ( git pull --rebase) 대신 rebase를 사용하여 가져올 수 있습니다 . 로컬 변경 사항은 원격 변경 사항과 병합되는 대신 원격 변경 사항을 기반으로합니다.

Atlassian에는 병합과 리베이스에 대한 훌륭한 문서가 있습니다.


51

git-pull-다른 저장소 또는 로컬 브랜치 GIT PULL 에서 가져 와서 통합

기본적으로 원격 분기를 로컬로 가져옵니다. 예 :

git pull origin master

마스터 브랜치를 로컬 저장소로 가져옵니다.

git- rebase- 업데이트 된 업스트림 헤드 GIT REBASE에 대한 포워드 포트 로컬 커밋

이것은 다른 사용자가 원격으로 수행 한 변경 사항에 로컬 변경 사항을 적용하는 것입니다. 예를 들면 :

  • 예를 들어 로컬 브랜치에서 일부 변경 사항을 커밋했습니다. SOME-FEATURE
  • 그 동안 친구가 다른 기능을 작업하고 있었는데 그는 브랜치를 마스터로 병합했습니다.

이제 로컬 브랜치에서 그의 변경 사항과 변경 사항을보고 싶습니다. 그런 다음 master지점을 확인합니다.

git checkout master

그러면 다음을 가져올 수 있습니다.

git pull origin master

그런 다음 지점으로 이동합니다.

git checkout SOME-FEATURE

그리고 당신은 master그것에서 최신 변경 사항을 얻고 분기 커밋을 맨 위에 올려 놓기 위해 rebase 를 할 수 있습니다 .

git rebase master

이제 좀 더 명확 해 졌으면합니다.


15
체크 아웃 마스터가 필요하지 않습니다. 지점에 머물면서 git fetch다음을 수행하십시오 git rebase origin/master.
Antoine Martin

1
로컬 마스터를 확인한 다음 원본 마스터를 가져 오면 로컬 마스터도 업데이트됩니다. 이것이 사용되어야하는 모범 사례 중 하나입니다
Ashwani

21

간단히 말해서 :

-> Git Merge : 단순히 당신과 원격 변경 사항을 병합하고 다른 커밋 기록 레코드를 생성합니다.

-> Git Rebase : 모든 새로운 원격 변경 사항보다 변경 사항을 적용하고 커밋 기록을 다시 작성하므로 커밋 기록이 git merge보다 훨씬 깨끗합니다. Rebase는 파괴적인 작업입니다. 즉, 올바르게 적용하지 않으면 커밋 된 작업을 잃거나 다른 개발자 저장소의 일관성이 깨질 수 있습니다.

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