programing

Git의 빠른 전달이란 무엇입니까?

powerit 2023. 5. 8. 22:29
반응형

Git의 빠른 전달이란 무엇입니까?

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

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

추가 정보: 3.2 Git 분기 - 기본 분기병합

다른 방법으로,

마스터가 분기되지 않은 경우 새 커밋을 만드는 대신 Git는 마스터를 피쳐 분기의 최신 커밋으로 가리킵니다.이것은 "빠른 전진"입니다.

빠른 전달 병합에는 "합병 커밋"이 없습니다.

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

새 제품의 경우 빠른 전달이 불가능합니다.HEAD통합하려는 스트림에 상대적으로 분산된 상태입니다.예를 들어, 당신은master그리고 지역적인 약속이 있고,git fetch에 새로운 업스트림 커밋을 가져왔습니다.origin/master이제 분기가 업스트림에서 분기되어 빠르게 전달할 수 없습니다.master HEAD커밋은 의 조상이 아닙니다.origin/master HEAD간단히 재설정하려면master의 가치가 있는origin/master로컬 커밋을 삭제할 수 있습니다.이 상황에서는 기본 재배치 또는 병합이 필요합니다.

해당 지역의 경우master변경 사항이 없으면 빠르게 업데이트할 수 있습니다. 최신과 동일한 커밋을 가리키도록 업데이트하기만 하면 됩니다.origin/master일반적으로 빠른 전달을 수행하는 데 특별한 단계가 필요하지 않습니다.merge또는rebase로컬 커밋이 없는 상황에서.

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

아니요. 를 리베이스라고 합니다. 재생할 커밋이 없는 경우(그리고 대상 분기에 새 커밋이 있고 대상 분기의 기록이 다시 작성되지 않아 대상 분기의 모든 커밋이 현재 커밋을 상위 항목으로 가집니다).

나뭇가지가 있다고 상상해 보세요.

Master : A---> B --->

A와 B의 두 가지 커밋이 있습니다. 다른 기능 분기가 있습니다. B의 커밋 내역은 다음과 같습니다.

Feature : C--->D---->E

그래서 현재는 이렇게 보입니다.

`A--->B`
     `C--->D--->E `

따라서 병합을 원할 때 헤드를 B에서 E로 이동하고 주요 분기에 피쳐 분기를 통합하여 빠른 순방향 병합을 수행할 수 있으며 다음과 같습니다.

A--->B--->C--->D--->E헤더가 E인 상태에서.

Atlassian의 이 예는 매우 좋습니다.

아틀라스의 예

그러나 예제에서 언급한 것처럼 분기가 분기되지 않은 경우에만 가능하며, 이 경우 기존의 병합 또는 --no-off가 작동합니다.

또 다른 좋은 예

gitrebase'를 사용했는데 효과가 있었습니다.

언급URL : https://stackoverflow.com/questions/29673869/what-is-git-fast-forwarding

반응형