내 자식 기록이 크리스마스 트리처럼 보이는 이유는 무엇입니까?
git log --decorate --oneline --graph
크리스마스 직전에 저장소 중 하나에서 작업을 수행 할 때 다음 구조가 나타났음을 발견했습니다 (약한 축제 테마를 강조하기 위해 회전).
커밋 그래프에서이 패턴이 어떻게 발생 했습니까?
물론 이것은 의도적으로 다소 어리석은 일이지만 여기에 흥미로운 점이 있습니다. git 히스토리 브라우저에서 볼 때 커밋 그래프의 특정 패턴을 해석하는 방법을 확인하는 것은 종종 어렵습니다.
이 경우 상황은 master
저장소의 한 복제본 에서 분기 끝에 푸시되지 않은 커밋 이있는 것입니다. 그런 다음 git pull
업스트림에서 많은 새로운 작업이 수행되는 기간 동안 동일한 저장소에서 여러 번 실행되었습니다. (이 경우 자동화 된 스크립트로 인해 발생했지만 개발자가 리베이스가 아닌 최신 상태로 유지하기 위해 반복적으로 브랜치를 가져 오는 경우에도 동일한 일이 발생할 수 있습니다.)
업스트림에 새 커밋이있을 때마다 풀이 새 병합 커밋을 생성했습니다. 항상 업스트림 master
에없는 커밋 이 있었기 때문입니다 master
.
결국이 저장소의 마스터 브랜치 기록이 업스트림으로 푸시되었으므로 다른 개발자는 커밋 그래프에서이 구조가 다음에 업스트림 저장소에서 가져올 때 갑자기 나타나는 것을 보았습니다.
비슷한 구조의 기록이 있고 어떤 커밋 / 개발자가이 문제를 일으켰는지 알아 보려면 별표 (기본적으로 모든 병합의 첫 번째 부모를 따름)가있는 줄을 아래로 볼 수 있습니다. 첫 번째 비 병합 커밋. 그림의 경우는 b275805
이전에 푸시해야하는 커밋 이었습니다 .
이것이 사람들이 자주 사용하는 것을 선호하는 이유 중 하나 git pull --rebase
입니다. 푸시되지 않은 기록을 단순하게 유지합니다.
제 동료 인 매튜 서머 빌 이이 문제를 발견하고 무슨 일이 일어나고 있는지 알아 냈습니다.
참고 URL : https://stackoverflow.com/questions/14023648/why-does-my-git-history-look-like-a-christmas-tree
'program tip' 카테고리의 다른 글
Swift에서 Objective-C로 변환하는 도구 (0) | 2020.11.09 |
---|---|
C에서 restrict 키워드를 사용하는 규칙? (0) | 2020.11.09 |
약속 후 반환 값 (0) | 2020.11.09 |
클래스가 다른 클래스에서 상속되었는지 테스트 (0) | 2020.11.08 |
PCH 경고 : 헤더 중지는 매크로 또는 #if 블록에있을 수 없음-Visual C ++ 2010 Express SP1 (0) | 2020.11.08 |