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
'programing' 카테고리의 다른 글
문자열을 날짜/시간으로 변환 (0) | 2023.05.08 |
---|---|
Postgre에서 'user'라는 이름의 데이터베이스 테이블을 만들 수 없습니다.SQL (0) | 2023.05.08 |
Xcode에서 NSZombie를 활성화하는 방법은 무엇입니까? (0) | 2023.05.08 |
git mv 및 디렉토리의 대소문자만 변경 (0) | 2023.05.08 |
어떻게 하면 항상 특정 지점에서 끌어낼 수 있을까요? (0) | 2023.05.08 |