git에 처음 10을 기록하십시오.


91

두 가지 질문 :

  1. 처음부터 끝까지 git에서 처음 10 개의 커밋을 표시하는 방법. (지점 없음)
  2. 커밋 인덱스를 지정하고 기록하는 방법. (두 번째 또는 세 번째 표시)

나는 자식이 부모를 사용하여 커밋을 연결한다는 것을 알고 있습니다. 커밋을 처음부터 끝까지 기록하는 것이 쉽습니다. 처럼:git log HEAD~10

하지만 처음부터 끝까지 쿼리해야합니다. 가능합니까?



@kostix 답변으로 스크롤
Muhammad Umer

답변:


60

한 줄 형식으로 모든 것을 기록하고 출력을 끝냅니다.

git log  --pretty=oneline | tail -n 10 

큰! 그것이 바로 찾고있는 것입니다. Tks @CharlesB.
요한 서주

3
또는을 사용 git rev-list HEAD | tail -n 10하여 나열 할 10 개의 ID를 가져 오면 원하는 형식으로 표시 할 수 있습니다 (한 줄 방법에 국한되지 않음).
torek apr

16
tail내 자식 콘솔에서 얻은 멋진 색상을 잃어버린 것 같습니다. git log --oneline -10다른 답변 과 같은 매개 변수를 전달하면 예상대로 작동합니다.
James Hulse 2015

4
이것은 분명히 하드 코어 Unix 방식입니다. @kostix 답변을 참조하십시오.
9301293

1
이 방법의 단점은 푸시 된 커밋 만 볼 수 있다는 것입니다.
Jack '

255
git log -10

개정 사양과 일치하는 최신 커밋 10 개를 표시합니다 (스펙 누락은 "모든 커밋"을 의미 함).

맨 페이지 참조 :

git help log

부분 Commit Limiting

-<number>, -n <number>, --max-count=<number>
    Limit the number of commits to output.

6
간단하며 tail플랫폼에서 사용 가능 여부에 의존하지 않습니다 .
tenpn

8
& git 형식화 / 색상을 엉망으로 만들지 않습니다. 이것은 받아 들여진 대답이어야합니다. x100
kuzyn

10
아니 영업 이익은 원하는 것을 : 그는 원 first(10)이 아닌을 latest.
Timo

1
@Timo, 아마도 그렇습니다. 그러나 명시된 질문은 해석을 위해 열려 있으며 많은 사람들이 이러한 공개 차이점 때문에 내 대답을 찬성하는 것 같습니다. 따라서 기술적으로는 동의하지만 그대로 유지하겠습니다 ;-) 기술적으로 올바른 제안 중에서 허용 된 답변에 대한 토렉의 의견이 가장 마음에 듭니다.
kostix

@kostix "처음부터 끝까지 git에서 처음 10 개의 커밋을 표시하는 방법"은 "해석에 개방적"이 아닙니다. 분명히 최신 커밋이 아닌 처음 10 개의 커밋을 요구하고 있습니다.
Bobby Jack

30

여기 내 접근 방식,

처음 10 개의 커밋을 얻으려면 :

git log -n 10

-n은 숫자입니다.

추가 다음 10 개 커밋을 얻으려면 먼저 10 개를 건너 뜁니다.

git log --skip=10 -n 10

나는 이것이 수락 된 대답이어야한다고 생각합니다. 꼬리를 사용하여 자식 로그에 작동하지 --graph의 원인이됩니다
relief.melone

이것은 받아 들여진 대답이어야합니다. 나를 위해 마법처럼 작동합니다
Doogle

꼬리를 사용하여 콘솔에서 글꼴 색상을 잃습니다. 이것이 정답입니다
CESCO

14

마지막 10 개의 커밋을 가져 오려면 :

git log HEAD~10..HEAD

가장 오래된 순서에서 최신 순서로 가져 오려면 :

git log --reverse HEAD~10..HEAD

병합이있는 경우 10 개 이상의 커밋이 표시 될 수 있습니다. --first-parent각 분기의 첫 번째 상위를 통과하려는 경우에만 추가 하십시오.

자세한 내용은 git rev-list.


편집 : 이미 "기록 시작 부분에 커밋 표시"에 대한 유용한 답변을 얻었습니다 (다시 한 번 repo의 여러 연결되지 않은 커밋 DAG에 대한주의 사항 참조). 그러나 다음과 같이 할 수도 있습니다.

git log --no-walk `git rev-list HEAD | tail -n 10`

과:

git log --no-walk `git rev-list --reverse HEAD | head -n 10`

결과를 원하는 순서에 따라.


답장에 대한 Tks. 하지만 마지막 10 개의 커밋이 필요하지 않고 첫 번째 커밋이 필요합니다. 구체적으로, 커밋이 ABCDEFG (HEAD) 인 경우. ABC를 기록하는 방법과 인덱스 2로 C를 기록하는 방법은 무엇입니까?
요한 서주

오! 단일 "첫 번째 커밋"이 있다는 보장은 없지만있는 경우 @CharlesB 추가 링크를 참조하십시오.
torek

방법은 일이 될 수 있습니다. 자연스러운 방법이 있나요? git log --pretty = oneline | 화장실 -l 자식 HEAD ~ <수의 마이너스 하나 인덱스> 로그
요한 서주

답변 해주셔서 감사합니다. 이것이 내 자식 별칭에서 '-10'스타일 옵션을 피하는 데 필요한 것입니다. 숫자 인수를 허용합니다.
vicTROLLA 2015 년

11

최상의 결과는 두 가지 최상의 답변의 조합으로 제공됩니다.

git log --pretty=oneline -10

1
감사 합니다. 터미널을 채우지 않고 최근 커밋을 빠르게 표시하기 위해 이것을 git 별칭 으로 사용합니다 . 나는 별칭을 불렀다 lkj = log --pretty=oneline --abbrev-commit -10. 이제 나는 그것이 OP의 질문에 대답하지 않는다는 것을 깨달았지만 여기에 간단한 숫자 스위치를 찾아 왔습니다.
Paul Rougieux 19

4

모든 것을 역으로 기록하기 만하면 -1은 하나의 로그를 나열 함을 의미합니다.

git log  --reverse -1

3

나는 아래의 간단한 구문 명령을 사용합니다.

git log -10 --oneline

1
이것이 가장 효율적인 방법이라고 생각하십시오!
Nishant

0

왜냐하면 ... 더 자세한 정보 : p

  1. 처음부터 끝까지 git에서 처음 10 개의 커밋을 표시하는 방법. (지점 없음)
  2. 커밋 인덱스를 지정하고 기록하는 방법. (두 번째 또는 세 번째 표시)

(지점 없음)에 의해 reflog 주어진 조상 체인 아니라 . 다음은 귀하가 속한 지점과 관련이 없습니다.

git log -g --pretty=oneline | tail -10

<sha> HEAD@{###}: action: summary (old)
<sha> HEAD@{###}: action: summary (older)
...
<sha> HEAD@{###}: action: summary (oldest)
  • -g입니다 --walk-reflogs대신이 조상 체인을 커밋 걷는, reflog entries.q 도보
  • |cut -d ' ' -f 2|tr -d ':' > logreflog 커밋 인덱스 만 기록하려면 추가 합니다.

다음은 현재 체크 아웃 된 브랜치의 가장 초기 조상을 보여줍니다.

git log --reverse --pretty=oneline | head -10 | cat -n

1 <sha> summary (oldest)
2 <sha> summary (second)
  • --reverse 커밋을 역순으로 출력합니다.
  • 단순히 사용할 수 없습니다 -n 10 또는 -10깨지기 때문에--reverse
  • cat -n 줄 번호 추가 (커밋 인덱스?)


0

누군가 git 한 줄 로그 이상을 원하는 경우 :

git log --reverse | awk 'NR>1 {print last} {last=$0}; /^commit/ && ++c==11{exit}'

11끝이로 설정되어야하는 곳1 원하는 커밋의 수보다 더 많은.

으로 여기에 지적 git log --reverse -n 10작동하지 않는 당신이 그것을 필요로하는. ( 처음 10 개 커밋을 역순으로 선택하거나 마지막 10 개 커밋을 선택할 수있는 기능을 제공하려면 비교 환적이어야한다고 생각합니다 🤪)

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