2010-12-18 3 views
216

git log의 형식을 사용자 정의하려고합니다. 모든 커밋을 한 줄에 표시하고 싶습니다. 각 행은 커밋 메시지의 첫 번째 줄만 표시해야합니다.
내가 found outgit log --pretty=short 트릭을해야하지만 내 컴퓨터에서 전체 로그를 git log 않습니다 (타임 스탬프 외)으로 보여줍니다.첫 줄에만 git log를 출력하는 방법은 무엇입니까?

또한 placeholders as defined in the man page을 사용해 보았습니다. 로그 메시지를 줄이기위한 명령을 찾지 못했습니다. 나는 누락 된 해쉬 %h과 전체 메시지 %s을 한 줄에 보여주는이 라인 git log --pretty=format:'%h : %s'을 시도했다.

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


아마도 내 커밋 메시지를 작성하는 방식과 관련이 있습니다. 예 주어진에

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

그래서, 단지 shortend 해시 앞에 붙은 출력 Added some functionality.되고 싶어 예를 들면 다음과 같습니다.

+0

'%의 s' 피사체가 아닌 전체 메시지입니다. –

+0

실제로 원하는 것을 말하기는 정말 어렵습니다. '짧은 '형식 *은 한 줄에 모두 표시되는 것은 아니지만 (놀라움!)'온라인 '입니다. 'oneline'과'% h : % s'이 당신이 원하는 것과 다르다면 그들에게 무슨 문제가 있습니까? 특히'% s'는 커밋 메시지의 첫 번째 줄인 주체입니다. 그것은 실제로 단축 된 버전이어야합니다. 메시지에 대해 하나의 긴 행을 사용하여 커밋을 만들고 단어 줄 바꿈으로 어떻게 든 볼 수 있습니까? – Cascabel

+0

당신은 완전히 이해합니다. 문제는'oneline'과'% s'은 적어도 내 컴퓨터에서 우리가 기대하는 것을 출력하지 않는다는 것입니다. 내 커밋 메시지의 예를 사용하여 내 게시물을 업데이트했습니다. 어쩌면 도움이 될지도 모른다. – JJD

답변

353

인쇄 할 것이 무엇 인쇄 할 것이다 git log

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

에 의해 자식 별칭을 추가 할 수 있습니다 같은 방법으로 git log을 사용하려는 경우

+0

감사! 당신은 수수께끼를 풀었습니다 : 나머지 부분과 주제를 구분하기 위해 내 커밋 메시지의 첫 줄 뒤에 빈 줄이 없습니다. 그럼에도 불구하고 자유롭게 넣거나 버리면 좋을 것입니다. – JJD

+1

문제 없습니다. 사실, 빈 줄을 자유롭게 가질 수 있습니다. 당신이 그것을 버리면 당신의 전체 메시지가 짧은 메시지가됩니다. 이 짧은 설명/자세한 설명이 마음에 듭니다. 짧은 설명을 한 줄로 제한하는 것이 문제 였으므로 빈 줄 요구 사항입니다. 'git log'의 출력을 필터링 스크립트로 파이프 할 수는 있지만 빈 줄을 사용하여 간단한 설명을 작성하는 것이 좋습니다. – Gauthier

+1

여기에 제가 지금 사용하고있는 것이 있습니다 : https://gist.github.com/763735 – JJD

97

git log --oneline 무엇을 원하십니까? 당신은 항상 당신이 당신이 봤어 일반적으로 git log --oneline

+0

전체 커밋 메시지를 한 줄로 병합하지 않으려합니다. 각 커밋 메시지의 첫 번째 줄만보고 싶습니다. – JJD

-7

?

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

첫 번째 줄 다음에 빈 줄이 누락 된 것일 수 있습니다. 위의 명령은 보통 나를 위해 작동하지만 빈 두 번째 줄없이 커밋을 테스트했습니다. 나는 당신과 같은 결과를 얻었습니다 : 한 줄에 전체 메시지.

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

커밋 메시지의 첫 번째 줄은 간단한 설명입니다. 한 줄로 만들 수 없다면 몇 가지를 사용할 수 있지만, 첫 번째 빈 줄 앞의 모든 것을 "간단한 설명"으로 간주합니다. oneline은 전체 간단한 설명을 인쇄하므로 모든 3 행을 인쇄합니다. 당신이 더 편안한 방법으로 짧은 로그를 호출 할 수 있도록

+9

(A. git 별명은 내장 명령 이름을 대체 할 수 없기 때문에) 실제로는 작동하지 않습니다. (B. 로그 - 온 라인 "')을 따옴표로 묶어야합니다. –

21

당신은 글로벌 별칭을 정의 할 수 있습니다

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

는 그런 다음 git slog를 사용하여 호출 할 수 있습니다 (심지어 사용하도록 설정 한 경우 자동 완성 작동). 별칭을함으로써

18

더 나은쉽게 자식 로그. 아래 코드를 터미널에 붙여 넣으십시오.

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 

더 읽을

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

+0

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

+0

@ Drone2537 감사합니다. – atilkan

5

메시지 만 해시 커밋하지 않고 :

git log --pretty=oneline | awk '{print $1}' 
+4

오직 해시를 원한다면 ...'git log --pretty = format : "% H"' –

관련 문제