programing

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

i4 2023. 7. 10. 22:01
반응형

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

커밋에 태그를 지정할 때 마지막으로 태그가 지정된 커밋 이후 변경된 내용을 알아야 합니다.예:

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

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

이걸 어떻게 처리합니까?이렇게 태그를 사용해야 하나요?태그 메시지에 무엇을 적어야 합니까?항상 비워 둡니다.git tag -a v1.2.3 -m ''

git log <yourlasttag>..HEAD

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

git log <yourlasttag>..HEAD --oneline

그리고 최신 태그를 모르거나 동적으로 만들고 싶은 경우에는 창에서 할 수 있습니다.

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

리눅스 / gitbash / windows bash에서

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

또한 기록에 있는 태그를 알고 있으며 해당 태그에서 현재 상황에 이르기까지 모든 태그를 인쇄하려는 경우 추가할 수 있습니다.--decorate그래서 중간에 있는 태그를 출력할 수 있습니다.

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

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

참고:@의 줄임말HEAD.

sed와 커밋 병합을 쉽게 생략할 수 있습니다.

git log $(git describe --tags --abbrev=0)..@ --oneline | sed '/Merge/d'

답변에 추가로 병합 커밋을 생략하려면 다음을 사용할 수 있습니다.

git log <tag>..HEAD --oneline --no-merges

다른 회답에서 언급한 바와 같이

언급URL : https://stackoverflow.com/questions/12082981/get-all-git-commits-since-last-tag

반응형