Git 브랜치가 언제 만들어 졌는지 결정하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2255416

  •  20-09-2019
  •  | 
  •  

문제

결정할 방법이 있습니까? 언제 git 지점이 만들어 졌습니까? 나는 내 repo에 지점이 있고 그것을 만드는 것을 기억하지 못하고 생성 타임 스탬프가 내 기억을 조깅 할 것이라고 생각했습니다.

도움이 되었습니까?

해결책

사용

git show --summary `git merge-base foo master`

gitk를 사용하여 문맥에서 그것을보고 싶다면 사용하십시오.

gitk --all --select-commit=`git merge-base foo master`

(Foo가 찾고있는 지점의 이름 인 곳.)

Screenshot

다른 팁

처럼 의견에 폰트했습니다 그리고에서 Jackub의 대답, 지점이 구성 설정에서 설정된 일 수보다 젊다면 gc.reflogexpire (기본값은 90 일입니다) 그런 다음 리플 로그를 활용하여 지점 참조가 처음 생성 된시기를 알아낼 수 있습니다.

주목하십시오 git reflog 가장 많이 취할 수 있습니다 git log 깃발. 또한 HEAD@{0} 스타일 선택기는 사실상 시간의 개념이며 실제로 날짜 문자열로 (해킹 된 방식으로) 처리됩니다. 이것은 깃발을 사용할 수 있음을 의미합니다 --date=local 다음과 같이 출력하십시오.

$ git reflog --date=local
763008c HEAD@{Fri Aug 20 10:09:18 2010}: pull : Fast-forward
f6cec0a HEAD@{Tue Aug 10 09:37:55 2010}: pull : Fast-forward
e9e70bc HEAD@{Thu Feb 4 02:51:10 2010}: pull : Fast forward
836f48c HEAD@{Thu Jan 21 14:08:14 2010}: checkout: moving from master to master
836f48c HEAD@{Thu Jan 21 14:08:10 2010}: pull : Fast forward
24bc734 HEAD@{Wed Jan 20 12:05:45 2010}: checkout: moving from 74fca6a42863ffacaf7ba6f1936a9f228950f657 
74fca6a HEAD@{Wed Jan 20 11:55:43 2010}: checkout: moving from master to v2.6.31
24bc734 HEAD@{Wed Jan 20 11:44:42 2010}: pull : Fast forward
964fe08 HEAD@{Mon Oct 26 15:29:29 2009}: checkout: moving from 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 
4a6908a HEAD@{Mon Oct 26 14:52:12 2009}: checkout: moving from master to v2.6.28

사용하는 것이 유용 할 수도 있습니다 --date=relative:

$ git reflog --date=relative
763008c HEAD@{4 weeks ago}: pull : Fast-forward
f6cec0a HEAD@{6 weeks ago}: pull : Fast-forward
e9e70bc HEAD@{8 months ago}: pull : Fast forward
836f48c HEAD@{8 months ago}: checkout: moving from master to master
836f48c HEAD@{8 months ago}: pull : Fast forward
24bc734 HEAD@{8 months ago}: checkout: moving from 74fca6a42863ffacaf7ba6f1936a9f228950f657 to master
74fca6a HEAD@{8 months ago}: checkout: moving from master to v2.6.31
24bc734 HEAD@{8 months ago}: pull : Fast forward
964fe08 HEAD@{11 months ago}: checkout: moving from 4a6908a3a050aacc9c3a2f36b276b46c0629ad91 to master
4a6908a HEAD@{11 months ago}: checkout: moving from master to v2.6.28

마지막 참고 : --all 플래그 (실제로 Git-Reflog가 이해하는 Git-Log 플래그)는 알려진 모든 심판에 대한 반사기를 보여줄 것입니다. refs/ (간단히 대신 HEAD)이 행사를 명확하게 보여줄 것입니다.

git reflog --date=local --all
860e4e4 refs/heads/master@{Sun Sep 19 23:00:30 2010}: commit: Second.
17695bc refs/heads/example_branch@{Mon Sep 20 00:31:06 2010}: branch: Created from HEAD

Pro Git § 3.1 Git Branching- 지점이 무엇인지 Git Branch가 실제로 무엇인지에 대한 좋은 설명을 가지고 있습니다.

git의 지점은 단순히 [A] 커밋에 대한 가벼운 이동식 포인터입니다.

지점은 가벼운 포인터이기 때문에 Git은 역사 나 창조 날짜에 대한 명시적인 개념이 없습니다. "하지만 매달린다."나는 당신이 말한다. "물론 Git은 내 지점 역사를 알고있다!" 글쎄요, 일종의.

다음 중 하나를 실행하는 경우 :

git log <branch> --not master
gitk <branch> --not master

당신은 "당신의 지점의 역사"처럼 보이는 것을 볼 수 있지만 실제로 마스터에서 도달 할 수없는 'Branch'에서 도달 할 수있는 커밋 목록입니다. 이것은 당신이 원하는 정보를 제공하지만, 당신이 '지점'을 다시 마스터로 병합 한 적이없는 경우에만, 마스터를 만든 이후로 마스터를 '분기'로 병합 한 적이 없습니다. 만약 너라면 가지다 병합 된 경우이 차이의 역사는 무너질 것입니다.

다행스럽게도 리플 로그에는 종종 여러 다른 답변에 설명 된 것처럼 원하는 정보가 포함되어 있습니다. 이것을 사용하십시오 :

git reflog --date=local <branch>

지점의 역사를 보여줍니다. 이 목록의 마지막 항목은 (아마도) 지점을 만든 지점입니다.

분기가 삭제 된 경우 '분기'는 더 이상 유효한 git 식별자가 아니지만 대신 사용할 수 있으므로 원하는 것을 찾을 수 있습니다.

git reflog --date=local | grep <branch>

또는 Windows CMD 쉘에서 :

git reflog --date=local | find "<branch>"

리플 로그는 원격 브랜치에서 효과적으로 작동하지 않으며 로컬에서 작업 한 분기 만 작동하지 않습니다.

먼저, 당신이 지점이 내부에 생성 된 경우 gc.reflogexpire 일 (기본 90 일, 즉 약 3 개월), 사용할 수 있습니다. git log -g <branch> 또는 git reflog show <branch> 리플 로그에서 첫 번째 항목을 찾으려면 창조 이벤트가 될 것입니다. git log -g):

Reflog: <branch>@{<nn>} (C R Eator <creator@example.com>)
Reflog message: branch: Created from <some other branch>

당신은 지점을 만들었을 것입니다. 얼마나 많은 운영 전, 그리고 어느 지점에서 (음, 그것은 단지 "머리에서 만들어 질 수 있습니다", 많은 도움이되지 않습니다).

그게 뭐야 Mikesep은 그의 대답에서 말했다.


둘째, 지점이 더 길면 gc.reflogexpire 그리고 당신은 달렸습니다 git gc (또는 자동으로 실행되었습니다), 당신은 그것이 만든 지점에서 공통 조상을 찾아야합니다. 구성 파일을 살펴보십시오. branch.<branchname>.merge 입력,이 분기를 기반으로하는 지점을 알려줍니다.

예를 들어 해당 지점이 마스터 브랜치 (마스터 브랜치에서 포킹)에서 만들어 졌다는 것을 알고 있다면 다음 명령을 사용하여 공통 조상을 볼 수 있습니다.

git show $(git merge-base <branch> master)

당신은 또한 시도 할 수 있습니다 git show-branch <branch> master, 대안으로.

이것이 무엇입니다 Gbacon은 그의 응답으로 말했다.

나는 아직 git 명령을 확실하지 않지만, 당신은 그것들을 리플 로그에서 찾을 수 있다고 생각합니다.

.git/logs/refs/heads/<yourbranch>

내 파일에는 Unix 타임 스탬프가있는 것으로 보입니다.

업데이트: 로그를 인쇄 할 때 커밋 기록 대신 리플 로그 기록을 사용하는 옵션이있는 것으로 보입니다.

git log -g

지점을 만들 때이 로그를 따라갈 수 있습니다. git log 그러나 리플 로그에 항목을 한 조치를 취한 날짜가 아니라 커밋 날짜를 보여주고 있습니다. 위의 길에서 실제 반사그를 보는 것 외에는 아직 찾지 못했습니다.

이 시도

  git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)'

사용:

git reflog

현재 폴더에 저장소의 모든 생활주기를 표시합니다. 처음으로 나타나는 브랜치 이름 (아래에서 위로)은 생성 된 소스입니다.

855a3ce HEAD@{0}: checkout: moving from development to feature-sut-46
855a3ce HEAD@{1}: checkout: moving from feature-sut-46 to development
855a3ce HEAD@{2}: checkout: moving from feature-jira35 to feature-sut-46
535dd9d HEAD@{3}: checkout: moving from feature-sut-46 to feature-jira35
855a3ce HEAD@{4}: checkout: moving from development to feature-sut-46
855a3ce HEAD@{5}: checkout: moving from feature-jira35 to development
535dd9d HEAD@{6}: commit: insert the format for vendor specific brower - screen.css
855a3ce HEAD@{7}: checkout: moving from development to feature-jira35
855a3ce HEAD@{8}: checkout: moving from master to development

그 의미 :

  • 지점 개발은 마스터에서 생성 (체크 아웃 -B)

  • Branch Feature -Jira35는 개발에서 생성 (체크 아웃 -B)입니다.

  • Branch Feature-Jira-Sut-46은 개발에서 만들어졌습니다 (체크 아웃 -B)

이것은 내가이 스레드를 찾기 전에 내가 생각해 낸 것입니다.

git reflog show --date=local --all | sed 's!^.*refs/!refs/!' | grep '/master' | tail -1
git reflog show --date=local --all | sed 's!^.*refs/!refs/!' | grep 'branch:'

이 명령은 생성 된 분기 날짜를 보여줍니다 dev ~에서 main

$git reflog show --date=iso dev
$7a2b33d dev@{2012-11-23 13:20:28 -2100}: branch: Created from main

Andrew Sohn의 답과 함께 (https://stackoverflow.com/a/14265207/1929406)

branchcreated=$(git reflog show --date=format:'%Y-%m-%d %H:%M:%S' --all | sed 's!^.*refs/!refs/!' | grep '/master' | tail -1| cut -d'{' -f 2| cut -d'}' -f 1 | xargs)
echo $branchcreated
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top