2017-05-17 1 views
1

우리 서버 중 하나가 최신이 아닌 경우 슬랙 메시지를 보내는 PHP 스크립트에서 작업합니다. 현재 트리거 작성 및 게시에는 git 태그를 사용합니다. 모든 지점에서 태그를 가리킨 최신 커밋을 찾으십시오.

그래서 내가 어떤 지점에 태그를 지적 커밋 가장 최근의를 표시하는 자식 명령을 검색 (예를 들어 최근은 생산 서버 1 또는 데모 서버 2 태그입니다.

에 지적 커밋 나는 다음과 같은 명령을 시도 :

git --no-pager log -n 1 --format=%ai production-server-1 

git rev-list -n 1 production-server-1 | xargs git show 

을하지만 우리의 자식 저장소 정보와 일치하지 않는 정보를 출력 됨

이 일을 할 수 있습니다. 커맨드 라인인가?

감사

+1

그것은 전혀 분명 나에게 당신이 찾고있는 게 아니에요. Git * 태그 이름 * ('v1.2' 또는'demo-server-2' 또는 기타)은 일반적으로 커밋 ID ("경량 태그") 또는 주석 태그 객체 ("주석 태그"). 후자의 경우 주석 태그 객체는 커밋을 가리 킵니다. 'git rev-parse ^{commit}'을 사용하면 커밋의 해시 ID를 찾을 수 있습니다. – torek

+0

나는 그것을 다르게 설명하려고 노력할 것이다. 예를 들어 새로운 기능을 작업합니다. 나는 branch ** feature/add-dropodwn **을 만든다. 이제 데모 서버에 게시하려면 ** 데모 - 서버 ** 태그로 커밋을 태그하고 밀어 넣습니다. 이제이 commir ID를 어떻게 가져올 수 있습니까? 그게 더 명확 해? – amiceli

+1

A * 브랜치 이름 *은 커밋에 대한 움직일 수있는 포인터입니다 : 브랜치 이름을 현재 커밋 ID로 해석하려면'git rev-parse '또는'git rev-parse refs/heads/'이 작업을 수행합니다. 앞서 언급했듯이, 태그 이름은 주석 태그를 가리킬 수 있다는 점을 제외하고는 똑같습니다. (일단 설정되면 바뀌기로되어 있지 않습니다.) 그래서'git rev-parse '는 주석을 달았습니다 태그 객체이고'^ {commit}'접미사가 필요하다. 'git rev-parse ^{commit} '이 (가) 당신을 위해 작동하지 않습니까? 그렇지 않다면, 모범이 있습니까? – torek

답변

1

당신은 두 개의 자식 명령의 조합을 사용할 수 있습니다 :

git show -s --format=%ci $(git rev-list -n 1 production-server-1) 
+0

감사합니다. 또한 모든 태그를 가져 오는 명령을 사용했습니다. http://stackoverflow.com/questions/16678072/fetching-all-tags-from-a-remote-with-git-pull. 일부 태그가 오래된 것입니다. – amiceli

관련 문제