Nice programing

git fast-forwarding이란 무엇입니까?

nicepro 2020. 10. 10. 10:58
반응형

git fast-forwarding이란 무엇입니까?


이 질문에 이미 답변이 있습니다.

이것은 멍청한 질문처럼 들릴지 모르지만 그것에 대한 간단한 대답을 찾을 수 없습니다.

빨리 감기는 모든 커밋이 대상 브랜치에서 재생되고 해당 브랜치 HEAD의 마지막 커밋으로 설정 된다는 것을 의미한다고 가정해도 괜찮 습니까?


첫 번째 커밋의 히스토리를 따라 도달 할 수있는 커밋과 하나의 커밋을 병합하려고 할 때 Git은 함께 병합 할 다른 작업이 없기 때문에 포인터를 앞으로 이동하여 작업을 단순화합니다.이를 "빨리 감기"라고합니다.

추가 정보 : http://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging

다른 방식으로는,

Master가 분기되지 않은 경우 새 커밋을 생성하는 대신 git은 master가 기능 브랜치의 최신 커밋을 가리 킵니다. 이것은 "빨리 감기"입니다. 빨리 감기 병합에는 "병합 커밋"이 없습니다.


Git에서 "빨리 감기" HEAD는 새 값이 이전 값의 직계 후손이되도록 포인터 를 업데이트하는 것을 의미 합니다. 즉, 이전 값은 부모, 조부모 또는 조부모입니다.

새 항목 HEAD이 통합하려는 스트림과 관련하여 분기 된 상태 인 경우 빠른 전달이 불가능합니다 . 예를 들어, 당신은 켜져 master있고 로컬 커밋이 있고 git fetch새로운 업스트림 커밋을 origin/master. 이제 분기가 업스트림에서 분기되어 빨리 감기 master HEAD가 불가능 합니다. 커밋은의 조상이 아닙니다 origin/master HEAD. master값으로 재설정 하면 origin/master로컬 커밋이 삭제됩니다. 상황에 따라 리베이스 또는 병합이 필요합니다.

로컬 master에 변경 사항이 없으면 빨리 감을 수 있습니다. 간단히 최신 .NET과 동일한 커밋을 가리 키도록 업데이트 할 수 있습니다 origin/master. 일반적으로 빨리 감기를 수행하는 데 특별한 단계는 필요하지 않습니다. 로컬 커밋이없는 경우 merge또는 rebase상황에서 수행됩니다 .

빨리 감기는 모든 커밋이 대상 브랜치에서 재생되고 HEAD가 해당 브랜치의 마지막 커밋으로 설정된다는 것을 의미한다고 가정해도 괜찮습니까?

아니요,이를 rebasing 이라고합니다.이 중 빨리 감기는 재생할 커밋이없는 특수한 경우입니다 (대상 분기에 새 커밋이 있고 대상 분기의 기록이 다시 작성되지 않았으므로 모든 커밋이 수행됨). 대상 분기에는 현재 분기가 조상으로 있습니다.)

참고 URL : https://stackoverflow.com/questions/29673869/what-is-git-fast-forwarding

반응형