git log'로 첫 번째 커밋을 표시하는 방법은 무엇입니까?
저는 오랜 역사를 가진 Git 프로젝트를 가지고 있습니다.첫 번째 공약을 보여드리고 싶습니다.
이거 어떻게 하는 거지?
결과:
git log --reverse
시작부터 커밋을 보여줍니다.
단답형
git rev-list --max-parents=0 HEAD
(tiho의 코멘트에서.크리스 존슨이 알아차렸듯이,--max-parents
이 답변이 게시된 후 소개되었습니다.)
설명.
기술적으로 루트 커밋이 둘 이상 있을 수 있습니다.이 문제는 이전에 독립적이었던 여러 기록이 함께 병합될 때 발생합니다.프로젝트가 하위 트리 병합을 통해 통합될 때 일반적입니다.
그git.git
저장소의 이력 그래프에는 6개의 루트 커밋이 있습니다(리너스의 초기 커밋, gitk, 초기에 일부 개별 도구, git-gui, gitweb 및 git-p4에 대해 각각 하나씩).이 경우, 우리는 알고 있습니다.e83c516
우리가 관심을 갖고 있는 사람일 겁니다이것은 가장 빠른 커밋이자 루트 커밋입니다.
일반적인 경우에는 그렇게 간단하지 않습니다.
libfoo가 한동안 개발되어 Git 저장소에 그 역사를 보관하고 있다고 상상해 보세요.libfoo.git
. 독립적으로 "bar" 프로젝트도 개발 중입니다.bar.git
하지만 libfoo만큼 긴 기간은 아닙니다. (가장 이른 날짜가 있는 커밋)libfoo.git
커밋 앞에 날짜가 있고 날짜가 가장 이른 날짜가 있습니다.bar.git
어느 시점에서 "bar"의 개발자들은 하위 트리 병합을 사용하여 libfoo를 프로젝트에 통합하기로 결정합니다.이 병합 이전에는 "첫 번째" 커밋을 결정하는 것이 사소한 일이었을 수 있습니다.bar.git
(아마 루트 커밋이 하나만 있었을 것입니다.)그러나 병합 후에는 여러 루트 커밋이 있으며 가장 초기의 루트 커밋은 실제로 "bar"가 아닌 libfoo의 역사에서 왔습니다.
다음과 같이 기록 DAG의 모든 루트 커밋을 찾을 수 있습니다.
git rev-list --max-parents=0 HEAD
참고로, 만약에.--max-parents
사용할 수 없습니다. 이것도 작동합니다.
git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$"
만약 당신이 유용한 태그를 가지고 있다면,git name-rev
기록에 대한 간략한 개요를 제공할 수 있습니다.
git rev-list --parents HEAD | egrep "^[a-f0-9]{40}$" | git name-rev --stdin
보너스
이거 자주 써요?기억이 안 나요?빠른 액세스를 위한 깃 별칭 추가
git config --global alias.first "rev-list --max-parents=0 HEAD"
이제 간단히 할 수 있습니다.
git first
로그를 되돌리고 첫 번째 결과로 전환할 수 있습니다.
git log --pretty=oneline --reverse | head -1
첫 번째 커밋의 커밋 해시만 보려면 다음과 같이 하십시오.
git rev-list --max-parents=0 HEAD
첫 번째 커밋에 대한 전체(커밋 메시지 포함)를 보려면:
git log $(git rev-list --max-parents=0 HEAD)
맨 위의 첫 번째 커밋(맨 위 대신)부터 맨 위의 마지막(가장 최근의) 커밋(맨 위 대신)까지 모든 메시지를 역순으로 보려면 다음을 수행합니다.
git log --reverse
참조:
- 위의 첫 번째 명령어를 배운 방법: [인정된 답변] 'git log'로 첫 번째 커밋을 표시하는 방법?(위의 두 번째 명령은 나 자신의 기여였습니다.)
- 는 에대해배다니웠습다에 배웠습니다.
git log --reverse
@Nyambaa의 가장 많이 투표된 답변에서.
git log $(git log --pretty=format:%H|tail -1)
내 생각에 가장 아름다운 방법은 아닌 것 같아요.
git log --pretty=oneline | wc -l
그러면 번호가 표시됩니다.
git log HEAD~<The number minus one>
git log --format="%h" | tail -1
해시, 커밋해제즉다니합공를)를 제공합니다.0dd89fb
), )와 같은 할 수 있습니다.
git diff `git log --format="%h" --after="1 day"| tail -1`..HEAD
마지막 날의 모든 커밋을 봅니다.
날짜, 커밋 이름 및 커밋 메시지로 처음 커밋하려면 이 명령을 실행합니다.
git log master --pretty="%t %aD %aN %s"| tail -1
t
해시, 트리해시,ad
이름, 자이름참조작성,▁to▁author▁name,aN
및 작성자 이름 s
과목에 대하여
마스터 분기에서 만든 분기(마스터에서 복사)로 처음 커밋하려면 마스터 및 다른 분기를 참조합니다.
git log master...docs --pretty="%t %aD %aN %s"| tail -1
언급URL : https://stackoverflow.com/questions/5188914/how-to-show-the-first-commit-by-git-log
'programing' 카테고리의 다른 글
메모리의 Python 목록 크기 (0) | 2023.05.21 |
---|---|
파이썬에서 집합을 목록으로 변환하는 방법은 무엇입니까? (0) | 2023.05.21 |
MS SQL Server 2008용 포트를 찾는 방법은 무엇입니까? (0) | 2023.05.21 |
process.env란 무엇입니까?Node.js의 포트? (0) | 2023.05.21 |
Windows DLL 파일을 테스트하여 32비트인지 64비트인지 확인하려면 어떻게 해야 합니까? (0) | 2023.05.21 |