문제

단일 기능에서 여러 지점에서 작업하는 경우 사용합니다. git pull branch1 branch2 branch3 모든 변경 사항을 내 마스터 브랜치로 끌어 당깁니다. 그러나 각 지점의 모든 커밋 로그도 복사됩니다. 커밋 로그를 단일 메시지로 평평하게하는 방법은 무엇입니까?

도움이 되었습니까?

해결책

대화식을 사용할 수 있습니다 레바 제 그리고 "스쿼시"커밋 - 또한 Rebase를 통한 스쿼시에 대한 Git Ready 튜토리얼. 당신에게 링크를 버려서 죄송하지만 그것은 매우 철저한 튜토리얼입니다. 아, 그리고 이것은 또한 당신의 합병을 잘 사로 잡을 것입니다.

다른 팁

"git merge - -squash"( "git fetch"; "git pull"이후에 그냥+병합, pehaps는 또한 - -스퀴쉬 옵션을 허용합니다) ~할 것 같다 당신이 원하는 것이 되십시오.

에서 git-merge (1):

--스쿼시

실제 병합이 발생한 것처럼 작업 트리와 색인 상태를 생성하지만 실제로는 머리를 커밋하거나 움직이거나 기록하지 마십시오. $GIT_DIR/MERGE_HEAD 다음 git 커밋 명령을 유발하려면 병합 커밋을 만들 수 있습니다. 이것은 당신이 a를 만들 수 있습니다 단일 커밋 다른 지점을 병합하는 것과 동일한 현재 분기 (또는 문어의 경우)의 상단에 있습니다.

Brian White가 문제를 언급했듯이 git merge --squash 그것은 당신에게 가시 링크를 제공하지 않으므로, 당신이 병합 한 지점 (또는 개별 변경)에 대한 추적 성이 없다는 것입니다.

눈에 띄게 (그래프로 볼 때 git log --graph), 다시 합병 된 중요한 지점은 당신이 엉망으로 만들고 행복하게 버릴 실험적 지점과 다르지 않습니다. 둘 다 아무것도 연결되지 않은 곳에 매달려 있습니다. 나는 개인적으로 특정 지점이 다시 합병되었다는 것을 알고 싶어서 작업이 완료되었음을 알고 있습니다.

저에게 적합한 솔루션은 FASTERWARD 옵션과 병합을 사용하는 것입니다.

git merge --no-ff somebranch -m "my commit message"

이로 인해 Git은 포함 된 모든 지점 변경으로 단일 커밋을 만들도록 강요하고, 커밋 메시지를 직접 설정할 수 있지만 가장 중요한 것은 새로운 커밋을 방금 병합 한 지점에 연결합니다. 해당 지점에는 완성되었지만 합병 된 지점에서 개별 커밋의 세부 사항을 볼 수 있도록 추적 할 수 있습니다.

다음은 각각 1과 두 커밋이있는 매우 간단한 가지가 각각 마스터로 합병 된 예입니다. 그 후 병합 된 분기에서 분기 태그를 삭제했지만 Merge Commit 메시지에서 여전히 분기 이름을 볼 수 있습니다. 지점 이름은 변경 사항을 요약해야하며 포함 된 정확한 변경 사항을 알고 싶다면 개별 커밋으로 다시 추적 할 수 있습니다. 이 접근법은 간단한 프로젝트에서 잘 작동하는 것 같습니다.

참고 : 커넥터 중 하나를 수동으로 짙은 파란색으로 뽑아야했습니다.

git log output

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top