Ingit에서 fetch는 pull과 어떻게 다르고 merge는 rebase와 어떻게 다른가요?
도저히 이해할 수가 없네요.저는 인터넷과 책을 많이 읽었는데 머릿속에 무언가가 남아있지 않습니다.누가 나에게 다음의 더미 버전을 줄 수 있습니까?
- git 페치 대 당기기
- git 병합 대 기본 재배치
가져오기 대 당기기
fetch
는 원격* 지점에서 변경 사항을 다운로드하여 저장소 데이터를 업데이트하지만 로컬* 지점은 변경되지 않습니다.
pull
를 할 입니다.fetch
dmerge
지역 지점의 변경 사항을 확인할 수 있습니다.
뭐가 달라요? 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
'programing' 카테고리의 다른 글
파이썬: 팬더 시리즈 - 왜 loc을 사용합니까? (0) | 2023.09.23 |
---|---|
개체를 XML 문자열로 변환 (0) | 2023.09.23 |
헤로쿠는 왜 Postgresql을 사용합니까? (0) | 2023.09.23 |
부모에서 자식 노드를 모두 제거하시겠습니까? (0) | 2023.09.23 |
카르마 / 자스민으로 모달 인스턴스 컨트롤러를 테스트하는 장치 (0) | 2023.09.23 |