Github 리포지토리에서 가장 빠른 커밋으로 어떻게 이동합니까?


152

GitHub에서 대규모 오픈 소스 프로젝트의 초기 커밋으로 쉽게 이동할 수있는 방법이 있습니까?

이 프로젝트는 현재 13,000 개가 넘는 커밋을 가지고 있습니다. 커밋 히스토리 페이지에서 "Older"버튼을 수백 번 눌러 초기 커밋 (또는 첫 번째 커밋)에 도달하고 싶지 않습니다.


2
대신 리포지토리를 복제하여 로컬로 탐색하는 것을 고려 했습니까?
jub0bs 2019


통찰력 / 기여자 는 마스터 브랜치에 대한 모든 범위의 커밋을 보여줍니다.
ToolmakerSteve

답변:


102

저장소를 복제하고 명령 행으로 열고 실행하십시오. $ git log --reverse

커밋이 역순으로 표시됩니다.

그런 다음 첫 번째 커밋의 ID (Object Name)가 있으면 github에서 볼 수 있습니다 ... https://github.com/UserName/Repo/commit/6a5ace7b941120db5d2d50af6321770ddad4779e


16
나는 간단하고 합리적인 답변을 찾기 위해 내가 얼마나 이상하고 지나치게 복잡한 사업을 겪어야했는지 믿을 수 없다. 감사.
Sammitch

7
하나의 조정, 나는 oneline이것에 인수를 추가 할 것입니다 - git log --reverse --oneline그래서 당신은 그것을 목록으로 볼 수 있습니다
rynmrtn

Windows 명령 프롬프트를 사용 중이고 Vim (?)에 빠지지 않으려면을 사용하십시오 git log --reverse --oneline | more. 표준 more동작, 종료하려면 Ctrl + C
Sinjai

82

이 작업을 수행하는 데 필요한 명확한 UI는 없지만 커밋 로그 중 하나의 페이지로 이동하기 위해 올바른 URL을 구성하는 방법이 있습니다.

dotnet / coreclr 저장소 의 첫 번째 커밋을 찾고 싶다고 가정 해보십시오 . 먼저 리포지토리의 커밋 수를 기록해 두십시오. 현재 16,634입니다. 커밋 목록으로 가서 "이전"을 클릭하십시오. 한 번 . URL은 다음과 같습니다.https://github.com/dotnet/coreclr/commits/master?after=872095a758a3a6191a9798c94a98e8d1e16b2254+34

+34부분을 주목하십시오 . 그것은 얼마나 많은 커밋을 건너 뛰었는지입니다. 페이지 당 16,634에서 1에서 35를 뺀 값 으로이 URL 을 제공 하면 coreclr 커밋 기록의 첫 페이지로 바로 이동합니다.


4
이 작업을 수행하기 위해 북마크를 만들었습니다. github.com/bpceee/oldest
bpceee

이것은 프로젝트 커밋 목록에서 초기 커밋을 보는 좋은 대답입니다.
COIL

Haha 이것은 허용 된 답변에서 제안 된 방법보다 훨씬 빠릅니다. ;-)
aderchox

46

2015 년 2 월 : GitHub 에서 대규모 오픈 소스 프로젝트의 초기 커밋을 쉽게 탐색 할 수있는 방법이 있습니까?

네, 지금 있습니다! (의미 : 저장소 복제 하지 않고git log 로컬 복제본에 적용 하지 않음 )

2017 년 1 월부터 GitHub에서 " 개선 된 Blame View로 파일 히스토리를 더 빠르게 탐색 "했습니다.

회귀를 디버깅하거나 일부 코드가 현재 모양을 갖게 된 방법을 이해하려고 할 때 특정 변경 전에 파일이 어떻게 생겼는지 확인하는 것이 좋습니다.
향상된 Blame View를 통해 파일의 전체 기록을 보지 않고도 시간이 지남에 따라 파일의 일부가 어떻게 발전했는지 쉽게 확인할있습니다 .

다음은 세 번의 클릭으로 git / git repo 자체 의 가장 오래된 커밋 (47K + 커밋)으로 돌아가는 데모입니다 !

데모 git / git

여기서의 트릭은 첫 번째 (또는 매우 이른) 커밋에서 찾을 수있는 파일을 선택하는 것 README.md입니다.


8
이것은 일반적으로 작동하지만 저장소를 만들 때 존재하는 파일을 알고 처음부터 여러 번 변경되지 않은 행을 찾을 수 있다고 가정합니다.
Wilfred Hughes

1
@ WilfredHughes 나는 Go 에이 방법을 사용 하여 재미있는 부활절 달걀 인 첫 번째 커밋 으로 32,986 커밋을 뒤로 이동합니다 . 이 경우 추가 정보가 시작될 때까지 돌아 가지 않았으므로 Browse files다른 파일에 대한 책임을 누르고 열어서 프로세스를 반복했습니다 .
andrewarchi

@andrewarchi 다행이다. 실제로 처음 몇 커밋은 부활절 달걀입니다 : stackoverflow.com/a/21981037/6309
VonC

@schmalzy의 대답이 더 직접적이지만 이것을 "해결 방법"으로 간주합니다.
Jimmy Bosse

@JimmyBosse 해결 방법 이 아닙니다 . 원래 질문에 대한 답변입니다. A는 git log로컬로 (가능성이 큰)의 repo를 복제하는 경우에만 작동합니다. 주먹 커밋 을 " 탐색 "하려면이게 전부입니다.
VonC

37

nodejs 프로젝트 의 가장 초기 커밋 중 하나를보고 싶었습니다 . 나는 다음을 수행했다.

  1. 사이트 nodejs를 방문했습니다 . 그런 다음이 시점에서 총 커밋 수는 약 30,000 (정확히는 23652)입니다.

여기에 이미지 설명을 입력하십시오

  1. 다음으로 커밋 링크를 클릭하면 아래와 같이 https://github.com/nodejs/node/commits/master 로 이동합니다.

여기에 이미지 설명을 입력하십시오

  1. 이제 아래로 스크롤하여 최신 및 이전 버튼을 찾았습니다. 최신 버튼이 비활성화되었습니다. 이전 버튼을 클릭하면 https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+34이동했습니다.

  2. 이제 URL에 +34가 있습니다. 이제는 커밋 수가 23000이므로 23000으로 변경했습니다. 그래서 내가 시도한 새로운 URL은

https://github.com/nodejs/node/commits/master?after=de37ba34c5d6f3a2d18daf482f850be8fddb4621+23000

  1. 이제 거의 다 왔습니다. 몇 번 더 반복하거나 이전 버튼 클릭으로 원하는 위치에 도달했습니다.

2
이것은 당신의 대답 2의 복제입니까? stackoverflow.com/a/49647826
Edric

2
중복 답변이지만 이미지가 마음에 들수록 더 매력적입니다.
winner_joiner

7

init bookmarklet을 사용하여 GitHub 리포지토리의 첫 번째 커밋으로 이동할 수 있습니다 .

INIT

북마크리포지토리의 첫 커밋으로 빠르게 이동할 수 .

개요

리포지토리에서 가장 오래된 커밋으로 빠르게 이동할 수 있다는 것은 매우 도움이됩니다. 계속해서 북마크를 드래그하십시오 (링크) 을 북마크 바로 의 첫 커밋으로 갈 때마다 클릭하십시오.

용법

특정 리포지토리의 방문 페이지 (e.g. like the one you're on)로 이동하여 북마크를 클릭하면 첫 페이지로 이동합니다 (초기 커밋). 기본적으로 master지점을 추적 하지만 branch방문 페이지에서 를 변경하면 해당 지점의 첫 번째 커밋으로 이동합니다.

GitHub의 README.md에서 검색


면책 조항 : 이 답변을 게시하기 전에 몇 분 동안 초기화 하기 위해 작은 Readme 업데이트를 제공했습니다 .


7

Chrome 개발 도구에서 스 니펫으로 유지하는 다음을 사용하여 커밋의 첫 페이지로 이동할 수 있습니다.

function githubFirstCommitsPage() {
  let el = document.querySelector('.repository-content');
  let base = el.querySelector('a[data-pjax]').href;
  let count = el.querySelector('.commits .num')
    .textContent
    .trim()
    .replace(/[^\d\.\-]/g, "");
  count = count-36;
  let sha = el.querySelector('.commit-tease-sha')
    .href
    .split('/');
  sha = sha[sha.length-1];
  window.location = `${base}?after=${sha}+${count}`;   
}

githubFirstCommitsPage();

1
감사합니다! 나는 당신이 그런 스 니펫을 저장할 수 있다는 것을 몰랐기 때문에 귀하의 게시물이 2 차원에서 도움이되었습니다.
bmacnaughton

6

당신은 사용해야합니다 git log --reversegit 명령 .

지정된 repo에 대한 커밋 히스토리를 역순으로 리턴합니다 (가장 오래된 것부터 가장 오래된 것).

그런 다음 sed마법 의 도움으로 첫 번째 커밋 날짜와 같은 것을 가질 수 있습니다 (이것은 내가 항상 필요로하는 것입니다).

git log --reverse | sed -n 3p

궁극적으로, 당신은 (는 대부분 중 명령을 입력 지루하거나 기억하기 단지 불가능하기 때문에,)와 같은 쉘 스크립트, 그래서뿐만 아니라이 문제를 자동화 할 수 있습니다 이 하나가 구조에 올 수 있습니다.



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.