code

힘내 풀과 힘내 리베이스

codestyles 2020. 9. 25. 07:54
반응형

힘내 풀과 힘내 리베이스


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


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

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

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

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

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


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그것에서 최신 변경 사항을 얻고 분기 커밋을 맨 위에 올려 놓기 위해 리베이스 할 수 있습니다 .

git rebase master

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


간단히 말해서 :

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

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

참고 URL : https://stackoverflow.com/questions/36148602/git-pull-vs-git-rebase

반응형