Github 오래된 Commit 보는 법

Github 오래된 Commit 보는 법

Github은 개발 뿐만 아니라 사이버 보안 분야에서도 양질의 정보를 얻을 수 있는 보물 창고다. 하지만 commit 이 대단히 많은 레포지토리를 살펴보던 중, github 의 웹페이지에서 commit 히스토리를 탐색하는게 매우 불편하다는 점을 알게 되었다.

이 글에서는 github 의 commit 히스토리에서 임의의 페이지로 단번에 이동하는 방법에 대해 설명하겠다.

문제 상황

dotnet 레포지토리를 예시로 설명하겠다. 글을 작성할 당시 dotnet 레포지토리는 무려 139213 건의 commit 이 작성된 상태다. 해당 commit 버튼을 클릭하면 각 commit 에 대한 자세한 내용을 확인할 수 있는 commit 히스토리 페이지로 이동할 수 있다.

dotnet 레포지토리 메인 화면

commit 히스토리에는 각 commit 의 제목과 간략한 설명, commit id, 등을 확인할 수 있다. 코드 변경 사항과 같은 더 구체적인 내용은 각각의 commit 을 클릭해서 확인해야 한다. 문제는 각 commit 히스토리 페이지는 한 페이지 당 35개의 commit 만 보여주며, 페이지를 이동할 수 있는 수단은 하단의 Previous, Next 버튼 뿐이라는 사실이다. 만약 가장 오래된 최초의 commit 을 보고 싶다면 Next 버튼을 수백번 클릭하며 이동해야 할 것이다.

commit 히스토리 페이지

해결법

첫 번째 commit 히스토리 페이지에서 Next 버튼을 클릭해 두 번째 페이지로 이동하면, URL 이 https://github.com/dotnet/runtime/commits/main/?after=ec11903827fc28847d775ba17e0cd1ff56cfbc2e+34 와 같이 변하는 것을 확인할 수 있다. ec11903827fc28847d775ba17e0cd1ff56cfbc2e 는 이 글을 작성할 당시 dotnet 레포지토리의 가장 최근 작성된 commit 의 id (SHA-1) 다.

해당 URL 을 해석하면 다음과 같다.

/github.com/{유저 이름}/{레포지토리 이름}/commits/{브랜치 이름}/?after={commit id}+{건너뛸 commit 수}

위 URL 을 응용하여 commit id건너뛸 commit 수 를 적절히 입력하면 지정한 commit 으로부터 지정한 수만큼 떨어진 위치의 페이지로 이동할 수 있다.

예를 들어 https://github.com/dotnet/runtime/commits/main?after=ec11903827fc28847d775ba17e0cd1ff56cfbc2e+1ec11903827fc28847d775ba17e0cd1ff56cfbc2e commit 과 바로 직전의 commit 을 건너뛰고, 그 이전의 commit 35개를 출력한다.

가장 최근 commit 히스토리의 다음 페이지

위 원리를 이용하면 dotnet 레포지토리의 첫 번째 commit 히스토리를 다음과 같이 계산할 수 있다.

전체 commit 수 - 1 - 35 * 1

글을 작성할 당시 최신 commit 의 id 는 ec11903827fc28847d775ba17e0cd1ff56cfbc2e 이며, 총 commit 수는 139213 건이므로 https://github.com/dotnet/runtime/commits/main/?after=ec11903827fc28847d775ba17e0cd1ff56cfbc2e+139177 경로에 접속하면 최초의 commit 히스토리 페이지를 확인할 수 있다.

가장 오래된 commit 히스토리 페이지

만약 지정한 페이지로 이동하고 싶다면 전체 commit 수 - 1 - 35 * {페이지 숫자} 공식을 이용해 건너뛸 commit 수를 계산하면 된다.

특정 commit 의 id 는 commit 히스토리에서 해당 commit을 클릭하면 URL 에서 확인할 수 있다.

임의의 commit 페이지

현재 레포지토리의 전체 commit 수는 레포지토리의 메인 화면 상단 부근에서 확인할 수 있다.

dotnet 레포지토리의 전체 commit 수