git log --no-walk --tags --decorate=short
을하고 싶습니다.하지만 모든 태그가 아니라 지정된 범위 soley (커밋 범위)의 태그도 확인하고 싶습니다.주어진 범위 내에서만 태그의 로그를 가져옵니다.
답변
편집 : --simplify-by-decoration
, 폐기 A (지점 또는) 그들을 가리키는 태그 이름이없는 커밋을 가지고 jthill noted in a comment, git rev-list
(따라서 git log
)과 같이
git log --simplify-by-decoration --decorate=short X..Y
할 수 있습니다 그냥 네가 원하는거야. 불행하게도 테스트를 통해 분기 이름이 지정된 커밋을 계속 유지하고 있음을 알 수 있습니다. The documentation이 100 % 확실하지 않다 : 일부 지점 또는 태그에 의해 참조되는
--simplify-by-decoration
커밋이 선택됩니다.
하지만 나중에 :
--simplify-by-decoration
옵션을 사용하면 태그에 의해 참조되지 않는 커밋을 생략하여 역사의 토폴로지의 큰 그림을 볼 수 있습니다. ...
아래의 원래 답변 (정상 작동). 당신이 "그들을 가리키는 태그가있는 경우에만 커밋을 선택"을 X..Y
같은 효과를 결합하려는처럼
OK, 그것은 소리.
작동 이런 종류의 일을위한 두 가지 망할 놈의 명령이 있습니다
git for-each-ref
, 당신은 어디서나refs/
네임 스페이스 내에서 참조 이름-어떤 이름으로 작업 할 수 있습니다; 태그는refs/tags/
입니다.git rev-list
실제로 커밋 메시지를 표시하는 대신git log
과 동일한 명령입니다. 기본적으로 해시가 표시됩니다. (이 다른 약간의 차이가 있지만, 그들은 모두git log
및git rev-list
는 하나의 소스 파일에서 내장되어 너무 비슷합니다.)
여기가 가장 큰 문제는 git log
쉽게/git rev-list
이 할 수있는 동안 당신이 투입되는 제한이다 예를 들어 Y ^X
또는 X..Y
으로 선택하거나 또 다른 예로 --no-walk --tags[=pattern]
을 사용하면 교차 설정 작업이 잘되지 않습니다. 예를 들어 git rev-list --no-walk --tags=foo\* --tags=bar\* --branches=baz\*
은 foo*
또는 bar*
과 일치하는 이름으로 태그 된 모든 커밋 ID를 인쇄하거나 baz*
과 일치하는 지점 이름으로 지정됩니다 (예 : git rev-list --no-walk --tags=foo\* --tags=bar\* --branches=baz\*
).
합니다 (rev-list
명령 수 파이프 및 --stdin
있지만 교차로를 사용하여 전체, 임의의 합집합 연산을한다. 이것은 의욕의 구문이 망할 놈의 박동 한 지역이다.물론 의욕은 파이썬의 모든 내부적으로 다시 위에 떨어해야하는 장점이있다)
하지만, 두 집합의 교집합이다.
세트 1 : 당신의 범위 선택이,
X..Y
또는--since=date1 --until=date2
2 개 세트 같은 아마 뭔가 : 모든이 지적-에 커밋 (일부 또는 전부) 태그에 의해
경화제 이 교차로를 호출하려면 몇 가지 코드가 필요합니다. 유닉스 계열 시스템에는 우리가 필요로하는 모든 도구가있다 : Git 자체와 설정된 교차점을 수행 할 수있는 comm
. comm
유틸리티는 입력을 정렬해야하므로 각 세트를 sort
으로 파이프합니다. 그래서 우리는 짧은 (7 줄) 스크립트 만 필요합니다. 예컨대 :
tf1=$(mktemp) || die "can't make first temp file"
trap "rm -f $tf1" 0 1 2 3 15
tf2=$(mktemp) || die "can't make second temp file"
trap "rm -f $tf1 $tf2" 0 1 2 3 15
이제 우리는 설정 얻을 1 git rev-list
를 사용하여 우리는 보통 임시 파일 상용구로 시작
:
git rev-list <specifiers> | sort > $tf1
그런 다음 우리가
git for-each-ref
를 사용하여, 세트 2 얻을. 주석이 달린 태그를 객체 (일반적으로 커밋이지만 어노테이션이 추가 된 태그)로 처리하려고한다고 가정하면 다른 주석 태그 인 경우
은 태그 자체에서 해결됩니다.
git for-each-ref --format='%(object)' refs/tags | sort > $tf2
%(object)
이 아니라 %(objectname)
; 후자는 주석이 달린 태그 객체의 ID 만 가져올 것입니다.
comm -12 $tf1 $tf2
의 출력 :
마지막으로, 우리는하지만, 3 열 (두 파일에 라인)을 억제하는 즉, 두 임시 파일, 우리는 comm -12
을 원하는 에있는 ID를 커밋만을 원하는 이 스크립트는 커밋 해시를 정렬하여 결정된 순서로 표시 할 커밋 집합이므로 git log
을 사용하여 정렬 순서를 수정합니다. 이제 우리가 원래 git log
명령을 사용하지만 선택한 커밋에서 실행 :
git log --no-walk --decorate=short --date-order $(script)
(이 물론 모든 테스트되지 않은 것입니다).
는git rev-list
경우 우리는 망할 놈의 쉘 내의 모든이 작업을 수행 할 수있는 --stdin-intersect
옵션을했다 : git log --no-walk --decorate=short $(\
git for-each-ref --format='%(object)' refs/tags | \
git rev-list --stdin-intersect X..Y \
)
을하지만,하지 작은 스크립트 따라서 필요하지 않습니다.
- 1. 세터는 세터의 범위 내에서만 필드의 값을 변경합니다.
- 2. 오버레이지도 타일은 사각형 범위 내에서만 표시합니다.
- 3. VBA의 범위 내에서만 값을 추가하는 방법
- 4. 속성 내에서만 사용할 수있는 범위 변수
- 5. Delphi에서 태그의 구성 요소를 가져옵니다.
- 6. 범위 내 요일을 가져옵니다
- 7. tfs 변경 집합 범위 사이에 파일을 가져옵니다.
- 8. LINQ에 주어진 날짜 범위
- 9. BIT 쿼리하기 주어진 범위
- 10. 주어진 날짜를 기준으로 날짜를 가져옵니다.
- 11. 주어진 DBpedia 범주의 속성을 가져옵니다
- 12. 작업 복사본이 아닌 저장소에서 svn 로그를 가져옵니다
- 13. Javascript를 사용하여 표시 태그의 확인란 입력을 가져옵니다.
- 14. XML - 배열에서 태그의 모든 값을 가져옵니다.
- 15. HTMLAgilityPack id 속성이있는 td 태그의 innerText를 가져옵니다.
- 16. 데이터가있는 셀 범위 만 가져옵니다.
- 17. 범위 내의 시작 컨테이너의 태그 이름을 가져옵니다.
- 18. 주어진 시간대에 유닉스 로그를 가져 오려고 시도
- 19. 주어진 날짜 범위 (SQL 서버
- 20. 개체를 단일 메서드의 범위 내에서만 사용하려면 개체를 유지해야합니까?
- 21. Google지도 퓨전 레이어 범위 내에서만 검색하도록지도를 제한 할 수 있습니까?
- 22. 특정 범위 내에서만 키가있는 하위 항목의 변경 사항을 듣습니까?
- 23. 문자 범위 내에서만 사용하기 위해 ASCII로 숫자를 조작하는 C++
- 24. 숨겨진 범위 태그의 텍스트 값 가져 오기
- 25. 앵커 태그의 bg-image 중심 맞춤 범위
- 26. 메서드 범위가 다른 메서드 내에서만
- 27. 주어진 날짜의 지난 달 첫날을 가져옵니다.
- 28. 주어진 시간에 따라 timstamp의 mysql 데이터를 가져옵니다.
- 29. Magento - 주어진 제품 ID의 장바구니 항목을 가져옵니다
- 30. 은폐 유형 값의 범위 ID 값을 가져옵니다.
어떤 범위의 범위입니까? 날짜별로? 커밋/태그 ID를 시작하고 끝내는 방법? 다른 것? – Wolf
@Wolf 커밋/태그 ID. 그것으로 질문을 업데이트 할 것입니다. –
정확히 "태그 범위"란 무엇입니까? 태그가'fred','barney','betty','wilma'라면 어느 것이 어느 범위에 있습니까? (더 유용하게,'git for-each-ref --format = '% (refname : short)'refs/tags'를 원하는 프로그램으로 파이프하여 태그 선택을 할 수 있습니다. git log --no-walk --decorate = short'에 대한 추가 인수.) – torek