programing

Ingit에서 fetch는 pull과 어떻게 다르고 merge는 rebase와 어떻게 다른가요?

goodsources 2023. 9. 23. 22:32
반응형

Ingit에서 fetch는 pull과 어떻게 다르고 merge는 rebase와 어떻게 다른가요?

도저히 이해할 수가 없네요.저는 인터넷과 책을 많이 읽었는데 머릿속에 무언가가 남아있지 않습니다.누가 나에게 다음의 더미 버전을 줄 수 있습니까?

  • git 페치 대 당기기
  • git 병합 대 기본 재배치

가져오기 대 당기기

fetch는 원격* 지점에서 변경 사항을 다운로드하여 저장소 데이터를 업데이트하지만 로컬* 지점은 변경되지 않습니다.

pull를 할 입니다.fetchdmerge지역 지점의 변경 사항을 확인할 수 있습니다.

뭐가 달라요? pull로컬 분기를 풀브랜치에서 변경된 내용으로 업데이트합니다. Afetch로컬 지점을 전진시키지 않습니다.

병합 대 기본 재배치

다음과 같은 기록이 주어졌을 때:

C---D---Elocal/A---B---F---G 리모트

merge두 개발 이력을 함께 결합합니다.로컬 분기가 원격 분기의 맨 위에서 분기된 후 로컬 분기에서 발생한 변경 사항을 재생하여 결과를 새 커밋에 기록합니다.이 작업은 각 커밋의 조상을 보존합니다.

merge다음과 같습니다.

C---D---Elocal/         \A---B---F---G---H 리모트

rebase로컬 지점에 존재하는 커밋을 가져다가 원격 지점의 맨 위에 다시 apply합니다.이 작업은 로컬 커밋의 조상을 다시 씁니다.

rebase다음과 같습니다.

C'--D'--E' 로컬/A---B---F---G 리모트

가 달라요? A.merge범죄자의 혈통을 바꾸지 않습니다. A.rebase지역 범죄자의 혈통을 다시 쓰는 겁니다

*이 다를 가정합니다.fetch,pull,merge, 아니면rebase원격 지점입니다.이것은 보통의 경우입니다.pull, 예를 들어, 는 지정된 분기에서 변경사항을 다운로드하고, 저장소를 업데이트하고,merge현재 지점의 변경 사항

가져오기 대 당기기

깃 페치는 레포 데이터만 업데이트하지만 깃 풀은 기본적으로 페치를 수행한 다음 분기 풀을 병합합니다.

'깃끌기'와 '깃끌기'의 차이점은 무엇입니까?


병합 대 기본 재배치

Atlassian SourceTree 블로그, 병합 또는 기본 설정 변경:

합병은 각 커밋 역사의 조상을 보존하면서 두 개의 발전선을 함께 가져옵니다.

반면, 재배치는 소스 분기에서 변경 사항을 다시 작성하여 해당 변경 사항이 대상 분기의 하위 항목으로 나타나도록 함으로써 개발 라인을 통합합니다. 이는 해당 커밋이 계속 대상 분기의 맨 위에 작성된 것처럼 가장하는 것입니다.

또한 HackerNews(게시 링크)에 올라온 지 얼마 안 된 멋진 게임인 Learn Git Branching을 확인해보세요. 그리고 많은 분기 및 병합 트릭을 알려줍니다.저는 그것이 이 문제에 많은 도움이 될 것이라고 믿습니다.

당기기가져오기:

로는, 는입니다.git pull a일 뿐입니다.git fetch를 이어dgit merge 사항을 즉, 원격 분기에서 변경사항을 가져온 다음 현재 분기에 병합합니다.


병합기본 재배치:

명령에 따라 병합이 수행됩니다. 현재 분기와 지정된 분기 간의 차이를 현재 분기로 병합합니다.즉, 사령부git merge another_branch?another_branch현재의 지점으로

리베이스는 조금 다르게 작동하고 약간 멋집니다.당신이 명령을 수행한다고 가정해 보겠습니다.git rebase another_branch과 .Git 입니다 입니다.another_branch, 전의 즉, 가지가 갈라지기 전의 점. 이 e 쪽으로 옮길 another_branch. 마지막으로, 원래 분기점 이후 현재 분기의 모든 커밋이 새 분기점에서 재생됩니다.이렇게 하면 분기 및 병합 수가 적어 매우 깨끗한 이력이 생성됩니다.

하지만, 함정이 없는 것은 아닙니다!버전 기록이 "다시 작성"되므로 커밋이 로컬 깃 레포에만 존재하는 경우에만 이 작업을 수행해야 합니다.즉, 원격 레포에 커밋을 푸시한 경우에는 절대로 이 작업을 수행하지 마십시오.

온라인 책에 나와 있는 리베이스에 대한 설명은 이해하기 쉬운 삽화와 함께 꽤 좋습니다.


병합 대신 재베이스로 당기기

실제로 리베이스를 꽤 많이 사용하고 있지만, 대개는 당김과 함께 사용합니다.

git pull --rebase

원격 변경사항을 가져온 다음 병합 대신 기본을 다시 설정합니다.마지막으로 풀을 수행했을 때의 모든 로컬 커밋을 재생합니다.합병으로 추가 커밋을 만들 수 있는 일반적인 방법보다 훨씬 깨끗하다고 생각합니다.

병합 - 헤드 지점은 새로운 커밋을 생성하여 각 커밋 이력의 조상을 보존합니다.같은 지점에서 병렬로 작업하는 여러 사람에 의해 병합 커밋이 이루어지면 역사가 오염될 수 있습니다.

재배치 - 새로운 커밋을 만들지 않고 분기별 변경사항을 다른 분기에 다시 씁니다.코드 기록은 단순화되고 선형적이며 읽을 수 있지만 끌어오기 요청에서는 작동하지 않습니다. 누군가가 어떤 사소한 변경을 했는지 볼 수 없기 때문입니다.

사용할 것입니다.git merge기능 기반 워크플로우를 처리할 때 또는 리베이스에 익숙하지 않은 경우.좀,면,git rebase더 적합합니다.자세한 내용은 이 병합 또는 기본 재배치 기사를 확인하시기 바랍니다.

언급URL : https://stackoverflow.com/questions/14894768/in-git-how-is-fetch-different-than-pull-and-how-is-merge-different-than-rebase

반응형