program tip

내 자식 기록이 크리스마스 트리처럼 보이는 이유는 무엇입니까?

radiobox 2020. 11. 9. 07:59
반응형

내 자식 기록이 크리스마스 트리처럼 보이는 이유는 무엇입니까?


git log --decorate --oneline --graph크리스마스 직전에 저장소 중 하나에서 작업을 수행 할 때 다음 구조가 나타났음을 발견했습니다 (약한 축제 테마를 강조하기 위해 회전).

수정 된 git 로그 출력, 크리스마스 트리처럼 보이도록 회전

커밋 그래프에서이 패턴이 어떻게 발생 했습니까?

물론 이것은 의도적으로 다소 어리석은 일이지만 여기에 흥미로운 점이 있습니다. 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

반응형