첫 번째 줄에서만 git log를 출력하는 방법은 무엇입니까?


330

에 대한 형식을 사용자 정의하려고합니다 git log. 모든 커밋이 한 줄에 표시되기를 원합니다. 각 줄은 커밋 메시지의 첫 번째 줄만 표시해야합니다.
나는 발견git log --pretty=short트릭을해야하지만, 나의 컴퓨터에 전체 로그를 보여줍니다 git log(타임 스탬프 외에)한다.

또한 man 페이지에 정의 된 자리 표시자를 사용하려고했습니다 . 그러나 로그 메시지를 줄이는 명령을 찾을 수 없습니다. git log --pretty=format:'%h : %s'짧은 줄 해시 %h와 전체 메시지 %s를 한 줄에 표시하는 이 줄 을 시도했습니다 .

git version 1.7.3.1.msysgit.0Vista에서 사용 하고 있습니다.


커밋 메시지를 작성하는 방식과 관련이있을 수 있습니다. 예를 들면 다음과 같습니다.

Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.

따라서 주어진 예에서 나는 Added some functionality.짧은 해시가 앞에 붙는 출력 만 원합니다 .


1
%s전체 메시지가 아닌 주제입니다.
Josh Lee

실제로 원하는 것을 말하기는 정말 어렵습니다. short형식은 아니다 (깜짝!)하지만, 모두 한 줄에 oneline있습니다. 경우 oneline%h : %s당신이 원하지 않는 무엇을, 그들과 무슨 일이야? 특히, %s커밋 메시지의 첫 줄인 제목입니다. 실제로 단축 버전이어야합니다. 메시지를 한 줄로 커밋하고 단어 줄 바꿈으로 어떻게 든 커밋을 할 수 있습니까?
Cascabel

당신은 완전히 이해합니다. 문제는이다 oneline%s내 컴퓨터에 적어도, 우리는 무엇을 기대 출력을하지 않습니다. 커밋 메시지의 예제로 게시물을 업데이트했습니다. 아마 도움이 될 것입니다.
JJD

답변:


544

이것을 시도 했습니까?

git log --pretty=oneline --abbrev-commit

첫 번째 줄 다음에 빈 줄이없는 것이 문제 일 수 있습니다. 위의 명령은 일반적으로 저에게 효과적이지만 빈 두 번째 줄없이 커밋을 테스트했습니다. 나는 당신과 같은 결과를 얻었습니다 : 한 줄에 전체 메시지.

빈 두 번째 줄은 git commit 메시지의 표준입니다. 당신이 보는 행동은 아마도 의도적으로 구현되었을 것입니다.

커밋 메시지의 첫 번째 줄은 간단한 설명입니다. 한 줄로 만들 수 없다면 여러 줄을 사용할 수 있지만 git은 첫 번째 빈 줄 앞의 모든 것을 "짧은 설명"으로 간주합니다. oneline간단한 설명 전체를 인쇄하므로 3 행이 모두 표시됩니다.


감사! 수수께끼를 풀었습니다. 커밋 메시지의 첫 번째 줄 다음에 제목을 나머지와 분리하는 빈 줄이 없습니다. 그럼에도 불구하고, 자유롭게 넣거나 꺼낼 수 있다면 좋을 것입니다.
JJD

1
문제 없어요. 실제로, 당신은 빈 줄을 가질 수 있습니다. 메시지를 남기지 않으면 전체 메시지 만 짧은 메시지가됩니다. 나는이 짧은 설명 / 상세한 설명을 좋아하고, 짧은 설명을 위해 한 줄로 제한되는 것이 문제라고 가정하고, 따라서 빈 줄 요구 사항입니다. 항상 출력을 git log필터링 스크립트로 파이프 할 수는 있지만 빈 줄로 간단한 설명을 작성하는 것이 좋습니다.
Gauthier

89
또한 git log --oneline --oneline은 함께 사용되는 "--pretty = oneline --abbrev-commit"의 속기입니다.
Jeremy Logan

접두사 단축 해시 태그를 어떻게 제거합니까? 비트 팩으로 예쁘지는 않습니다. 그러나없이 cut. 그 것 awk병동 (? BTW 수학 질문 : 무엇이 적절하게 인코딩 된 허프만 시퀀스에서 다음 비트가 스토리지 수준에서, 또는 해제 힌트 확률 : 그것은 === 50 %입니다.)
Phlip

7
그것은 tx였습니다. 또한으로 가득 찬 페이지가 있으므로 자연스럽게 %for를 추가했습니다 '%s'. 씨-;
Phlip

158

합니까는 git log --oneline당신이 원하는 무엇입니까?


1
전체 커밋 메시지가 한 줄로 병합되는 것을 원하지 않습니다. 각 커밋 메시지의 첫 번째 줄만보고 싶습니다.
JJD

41

더 나은쉽게 함으로써 자식 로그 별칭을 . 한 세션 동안 아래 코드를 터미널에 한 번만 붙여 넣으십시오. 코드를 zshrc 또는 bash 프로파일에 붙여 넣어 코드를 지속시킵니다.

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

산출

git lg

출력 변경 라인

git lg -p

또는 (권장)
이 코드를 전역 .gitconfig 파일에 붙여 넣기

[alias]
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

더 읽을 거리.
https://coderwall.com/p/euwpig/a-better-git-log
고급 읽기.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/


이 예제는 꽤 좋은 형식의 데모이지만 "git lg"에 대한 별칭을 만들지 않기 때문에 "아래 코드를 터미널에 한 번만 붙여 넣기"가 잘못되었습니다.
Drone2537

다른 사람에게이 명령을 배치로 넣은 경우 %를 %%로 바꾸고 '를 ""로 바꾸십시오. 결과 = git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1. 이 bat 파일에 -p를 전달하여 줄을 바꿀 수도 있습니다.
Dheeraj Bhaskar


25

보다 편리한 방식으로 짧은 로그를 호출 할 수 있도록 글로벌 별명을 정의 할 수 있습니다.

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

그런 다음 사용하여 호출 할 수 있습니다 git slog(자동 완성 기능을 사용하는 경우에도 작동합니다).



-8

항상 git log그런 식으로 사용하려면 git alias를 다음과 같이 추가 할 수 있습니다

git config --global alias.log log --oneline

그 후 git log정상적으로 인쇄되는 것을 인쇄합니다git log --oneline


12
(A. git aliases는 내장 명령 이름을 무시할 수 없음) 및 (B. 따옴표가 필요하기 때문에) 실제로 작동하지 않습니다 "log --oneline".
Max Nanasy 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.