GIT가 SCM 방법론의 구현보다 SCM 프레임 워크의 구현보다 더 많기 때문에 실제로 세 번째 가능성이 있습니다. 이 세 번째 가능성은을 기반으로 rebase
합니다.
rebase
GIT 부속 명령은 (일반적으로 토픽 브랜치의 팁 당신의 분기 지점에서 커밋의 일련의 소요 topic
)와 (일반적으로 통합 지점의 끝, 예에 다른 곳에서 그들을 재생을 master
). 이 rebase
부속 명령은 새로운 커밋을 생성하여 검토하기 쉬운 형태로 커밋을 재 배열 할 수있는 기회를 제공합니다. 이것은 이전 topic
에 통합 분기의 최상위에 뿌리를 둔 것처럼 보이는 새로운 일련의 커밋을 생성합니다 . 이 새 브랜치는 여전히 topic
GIT에 의해 호출 되므로 이전 참조는 삭제됩니다. 비공식적으로 topic-0
지점의 원래 상태 topic-1
등 다양한 리팩토링에 레이블을 지정 합니다 .
topic
지사에 대한 제안은 다음과 같습니다 .
(선택 단계) 당신은 대화 형 주제 지점을 리베이스 topic
의 분기 지점에 (참조 --fixup
에 대한 옵션 commit
과 -i
와 --autosquash
의 옵션을 rebase
당신에게 검토 쉬운 방법으로 커밋을 다시 할 수있는 기회를 제공하는). 결과적으로 분기가 발생 topic-1
합니다.
통합 브랜치 상단에있는 토픽 브랜치를 리베이스하면 병합을 수행하는 것과 비슷하지만 소프트웨어 엔지니어링 아티팩트 인 병합으로 히스토리를 "오염시키지 않습니다". 결과적으로 분기가 발생 topic-2
합니다.
topic-2
의 팁에 대해 검토하는 팀원 에게 보냅니다 master
.
topic-2
괜찮다 면 마스터에 병합하십시오.
참고 분기 가 커밋 트리를 가리키는 분기 는 모두 GIT에 의해 동일하게 호출되므로 프로세스가 끝날 때 분기 만 topic-2
GIT에 이름을 갖습니다.
장점 :
- 쓸모없는 코드가 없습니다.
- 가짜 "외국 합병"리뷰는 없습니다 (1 차에서 설명한 현상).
- 커밋을 다시 작성하는 기회는 깔끔합니다.
단점 :
- 대신 한 가지로
topic-0
,이 세 가지의 유물입니다 topic-0
, topic-1
그리고 topic-2
(가) 트리를 커밋이 생성됩니다. (언제라도 GIT에는 이름이 하나만 있습니다.)
첫 번째 시나리오에서«누군가 "1"사이에 무언가를 병합 한 경우 "2"는 분기 지점 생성과 병합하기로 결정한 시간 사이의 시간을 나타냅니다. 이 시나리오에서«누군가 "1"사이에 무언가를 병합 한 경우 "2."»는 리베이스와 병합 사이의 시간 간격을 나타내며 일반적으로 매우 짧습니다. 따라서 내가 제공하는 시나리오에서는 master
워크 플로우를 크게 방해하지 않으면 서 병합 시간 동안 분기를 «잠글»수 있지만 첫 번째 시나리오에서는 실용적이지 않습니다.
체계적인 코드 검토를 수행하는 경우 적절한 방법으로 커밋을 재배 열하는 것이 좋습니다 (선택적 단계).
중간 지점 아티팩트를 관리하는 것은 저장소간에 공유하는 경우에만 어려움이 있습니다.