2017-01-17 5 views
1

[NOW, THEN] 범위의 커밋 목록을 수집하려고합니다. 여기에서 NOWHEAD이고 [THEN]8af39377이고 약 120 개의 커밋이 완료되었습니다. 17 년 전 HEAD가 최초의 커밋이라고 생각하는 이유는 무엇입니까?

When I run

:

> git log 8af39377289feba1876b3252b6d23 HEAD --oneline | cut -d " " -f 1 > commits.txt 

다음 commits.txt 보면, 자사의 2300 개 라인 길이는 8af39377로 최상위 항목합니다 (THEN)와 a3b6ece로 바닥 항목을합니다 (먼저 2002 년부터 커밋)를 보여줍니다.

HEAD이 저장소에 대한 첫 번째 커밋이라고 생각합니까?

+2

17 년간 Git을 사용하여 Upvoted. –

+0

@TimBiegeleisen - 감사합니다. 그것은 이주 후에. – jww

+0

stackoverflow.com/questions/462974의 두 번째 답변을 살펴보십시오. 그것은 A..B와 A ...를 보여줍니다. B. 'git log A B'는 집합 {A, B} 또는 A∪B입니다. – ElpieKay

답변

3

구문이 잘못되었습니다. 8f39와 HEAD 사이의 범위를 원하면 8af39..HEAD

17 년 전만해도 단일 개정을 지정하면 해당 커밋으로 모든 커밋을 찾을 수 있습니다. 모든 커밋에는 루트에 대한 모든 포인터가 있으므로 루트 커밋을 찾고 있습니다.

Revision Specification 범위 지정 섹션을 참조하십시오.

+1

놀랍지는 않겠지 만 위의 결과물을 출력하는''의 인용 된 대답의 지침을 따랐습니다. 귀하의 대답은 결과물을 산출하지 못합니다.힘내라는 경고 나 오류가 나오지 않는다는 것은 놀랄 일이 아닙니다. 얼마나 비참한 도구입니까 ... – jww

+0

나를 위해 몇 가지를 확인할 수 있습니까? 1) 실제로 3 대신 2 개의 도트를 사용하고 있습니까? 2) 당신의 머리는 실제로 8af39 이후입니까? 커밋의 순서가 올바른지 확인하기 만하면됩니다. 3) 8af39는 실제로 HEAD/현재 지점에서 연결할 수 있습니다. 'git log blah blah' 명령을 사용하여'cut'을 오류의 원인으로 제거하십시오. – jbu

+0

내가 언급해야 할 추가 세부 사항이 하나 있습니다. HEAD가 병합 커밋이 아닌 경우이 작업이 작동합니다. HEAD가 병합 커밋이면, 내가 준 커맨드의 결과는 또한 8af39가 도달 할 수없는 커밋을 포함 할 것입니다. 병합베이스보다 더 최근의 커밋을 추가로 나열 할 수 있습니다. – jbu

1
git log 8af39377289feba1876b3252b6d23 HEAD --oneline 

"이 두 커밋의 전체 기록을 조상으로 제한된 날짜 순서로 정렬하십시오"라고 말합니다.

당신은 범위, [지금, THEN, NOW HEAD이고 [THEN] 8af39377이며, 그는 약 120 전

하지만 커밋에

에게 커밋의 목록을 원하는 git log는 조상에 의해 제약, 먼저 출력이 가장 최근에 보여주고,

이 8af39377로 최상위 항목을 보여줍니다 로그 출력하는 이는 당신과 모순된다.

커밋 순서가 잘못되었습니다. 기본 출력을 조용히하지 않았다면 커밋 날짜를 명시 적으로 표시 했으므로 날짜 또는 조상 문제인지 여부를 알 수 있습니다.

에 관계없이 그것은

git log --oneline HEAD..8af39377 

는 당신에게 목록이 표시됩니다,이다.

--graph --decorate을 추가하는 것이 좋습니다.

+0

이것이 거꾸로 생각하지 않습니까? 8af39377은 HEAD 전에 120 커밋입니다. HEAD..8af39377은 8af39377에서 도달 할 수있는 커밋이며 HEAD에서 도달 할 수있는 커밋은 제외됩니다. 그래서 당신은 8af39377 이후의 것들을 여기에서 제외 할 것입니다. – jbu

+0

내가 말했듯이, 당신의 로그 결과가 이것과 모순됩니다 :'8af39377'이 먼저 나타납니다. 이것은'HEAD'의 조상은 아니며 (HEAD가 먼저 왔을 것입니다) 그리고 더 최근 날짜를 가지고 있습니다 (else 'HEAD'가 먼저 올 것입니다.) 그건 그렇고,'cut'은 커밋 ID를 얻습니다. 만약 rev를리스트하고 싶다면'git rev-list' ('git log's - 다른 개정 보행 명령들 ') 더 많은 레이저 집중적 인 폐하) 또는'git log --pretty = % H'? – jthill

+0

당신은 작전에 말하지 않았습니다. 비록 당신이 자식 로그를 commit1 commit2 생각 로그 궁금해. 실제로 무슨 일이 일어날 지 모르겠지만 실제로는 문서가 약간 퍼지기는하지만 커밋 1은 커밋으로 처리되고 커밋 2는 경로 트리로 간주되어 루트 트리 개체로 변환됩니다. – jbu

관련 문제