마지막 태그 이후 모든 git 커밋 가져 오기


126

커밋에 태그를 지정하려면 마지막으로 태그 된 커밋 이후 변경된 사항을 알아야합니다. 예 :

a87a6sdf87a6d4 Some new feature
a87a6sdf87a6d3 Some bug fix
a87a6sdf87a6d2 Some comments added
a87a6sdf87a6d1 Some merge <- v1.4.0

이 예제에서 저는 3 개의 최신 커밋에 대해 알고 싶습니다. 또는 위와 같은 로그를 인쇄 할 수 있습니다. 두 가지 모두 태그가있는 경우 커밋을 표시합니다. 새로운 기능이 추가 된 것을 확인하면 v1.5.0에 태그를 지정합니다.

이것을 어떻게 처리합니까? 이것이 내가 태그를 사용하는 방법입니까? 태그 메시지에 무엇을 써야합니까? 나는 항상 비워 둡니다.git tag -a v1.2.3 -m ''

답변:


224

git log <yourlasttag>..HEAD ?

예에서와 같이 커밋 ID + 메시지가있는 한 줄에서 원하는 경우

git log <yourlasttag>..HEAD --oneline

최신 태그를 모르거나이 태그를 동적으로 만들려면 Windows에서 할 수 있습니다.

for /f "delims=" %a in ('git describe --tags --abbrev^=0') do @set latesttag=%a
git log %latesttag%..HEAD --oneline

그리고 리눅스 / git bash / windows bash

git log $(git describe --tags --abbrev=0)..HEAD --oneline

또한 역사에서 태그를 알고 있고 해당 태그에서 현재 상황까지 모든 것을 인쇄하려는 경우 그 사이에 태그를 인쇄하도록 추가 --decorate하는 것이 좋습니다.


병합 커밋을 건너 뛸 수있는 방법이 있습니까?
Holloway

@Trengot은 몰라, 그것을 조사하지 않았습니다. IMO 병합 커밋은 어쨌든 피해야 할 것이므로 가능할 때마다 리베이스를 사용합니다.
eis

Linux 버전은 Windows Bash 용 Git에서도 작동합니다
kwesolowski

<yourlasttag>+ 1 이어야하지 않습니까?
Raffi Khatchadourian

당신이 그렇게 원하는 경우 @RaffiKhatchadourian, 당신은 커밋에서 수행 변경 놓칠 것 <yourlasttag>+ 1과 만 그 이후로 변경 얻을 것
EIS

39

현재 커밋도 태그이고 최신 태그 나 이전 태그 이름을 몰라도 이전 태그 이후의 변경 사항을 동적으로 가져 오려면 다음을 수행 할 수 있습니다.

git log --oneline $(git describe --tags --abbrev=0 @^)..@

@약자입니다 HEAD.


좋아요!, 커밋 텍스트를 변경하려면 --oneline을 --pretty = format : "% s": git log --pretty = format : "% s"$ (git describe --tags --abbrev = 0 @ ^) .. @
JBarbosa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.