Github 오래된 Commit 보는 법

Github은 개발 뿐만 아니라 사이버 보안 분야에서도 양질의 정보를 얻을 수 있는 보물 창고다. 하지만 commit 이 대단히 많은 레포지토리를 살펴보던 중, github 의 웹페이지에서 commit 히스토리를 탐색하는게 매우 불편하다는 점을 알게 되었다.
이 글에서는 github 의 commit 히스토리에서 임의의 페이지로 단번에 이동하는 방법에 대해 설명하겠다.
문제 상황
dotnet 레포지토리를 예시로 설명하겠다. 글을 작성할 당시 dotnet 레포지토리는 무려 139213 건의 commit 이 작성된 상태다. 해당 commit 버튼을 클릭하면 각 commit 에 대한 자세한 내용을 확인할 수 있는 commit 히스토리 페이지로 이동할 수 있다.

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

해결법
첫 번째 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+1
은 ec11903827fc28847d775ba17e0cd1ff56cfbc2e
commit 과 바로 직전의 commit 을 건너뛰고, 그 이전의 commit 35개를 출력한다.

위 원리를 이용하면 dotnet 레포지토리의 첫 번째 commit 히스토리를 다음과 같이 계산할 수 있다.
전체 commit 수 - 1 - 35 * 1
글을 작성할 당시 최신 commit 의 id 는 ec11903827fc28847d775ba17e0cd1ff56cfbc2e
이며, 총 commit 수는 139213 건이므로 https://github.com/dotnet/runtime/commits/main/?after=ec11903827fc28847d775ba17e0cd1ff56cfbc2e+139177
경로에 접속하면 최초의 commit 히스토리 페이지를 확인할 수 있다.

만약 지정한 페이지로 이동하고 싶다면 전체 commit 수 - 1 - 35 * {페이지 숫자}
공식을 이용해 건너뛸 commit 수를 계산하면 된다.
특정 commit 의 id 는 commit 히스토리에서 해당 commit을 클릭하면 URL 에서 확인할 수 있다.

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