부모와 약속을 나누는 방법
별칭이나 스크립트를 작성하는 것 외에 특정 커밋에 대한 디프를 얻기 위한 더 짧은 명령이 있습니까?
git diff 15dc8^..15dc8
단일 커밋 ID만 제공하는 경우git diff 15dc8
그것은 HEAD에 대한 죄를 짓지 않습니다.
사용하다git show $COMMIT
커밋에 대한 로그 메시지와 특정 커밋의 차이가 표시됩니다.
사용:
git diff 15dc8^!
다음 git-rev-parse(1) man 페이지(또는 현대의 gitrevisions(7) man 페이지)에서 설명한 바와 같이,
커밋과 상위 커밋으로 구성된 집합의 이름을 지정하기 위한 다른 두 가지 단축형이 있습니다.r1^@ 표기법은 r1의 모든 부모를 의미합니다. r1^!은 commiter1을 포함하지만 모든 부모를 제외합니다.
즉, 다음을 사용할 수 있습니다.15dc8^!
의 약어로15dc8^..15dc8
수정이 필요한 Git의 모든 곳.diff 명령의 경우,git diff 15dc8^..15dc8
로 이해됩니다.git diff 15dc8^ 15dc8
즉, 커밋의 상위 항목 간의 차이(15dc8^
) 및 커밋(15dc8
).
참고: 의 설명git-rev-parse(1)
man 페이지는 두 개 이상의 부모와 병합 커밋에 대해서도 작동해야 하는 개정 범위에 대해 설명합니다.그리고나서r1^!
는 "입니다.r1 --not r1^@
예를 들어.r1 ^r1^1 ^r1^2 ...
"
또한 사용할 수 있습니다.git show COMMIT
커밋에 대한 설명을 가져오고 커밋에 대한 차이를 확인합니다.만약 당신이 디프만 원한다면, 당신은 사용할 수 있습니다.git diff-tree -p COMMIT
.
얼마나 오래 전인지 알면 다음과 같은 방법을 사용할 수 있습니다.
# Current branch vs. parent
git diff HEAD^ HEAD
# Current branch, diff between commits 2 and 3 times back
git diff HEAD~3 HEAD~2
이전 커밋은 다음과 같이 작동합니다.
# Parent of HEAD
git show HEAD^1
# Grandparent
git show HEAD^2
커밋을 지정할 수 있는 방법은 여러 가지가 있습니다.
# Great grandparent
git show HEAD~3
미파디가 지적했듯이, 당신은git show $COMMIT
그러나 일부 헤더와 커밋 메시지도 표시됩니다.직선적인 차이를 원한다면,git show --pretty=format:%b $COMMIT
.
이것은 분명히 매우 짧은 손이 아니기 때문에 저는 이 별칭을 제 .gitconfig에 보관하고 있습니다.
[alias]
sd = show --pretty=format:%b
이를 통해 사용할 수 있습니다.git sd $COMMIT
차이를 보여주기 위해.
언급된 많은 예(예:git diff 15dc8^!
또는git diff 15dc8^..15dc8
) Z 셸을 사용하고 있고 다음이 있는 경우에는 작업하지 마십시오.extendedglob
옵션 세트.다음 세 가지 방법 중 하나로 이 문제를 해결할 수 있습니다.
unsetopt extendedglob
(및/또는 .zshrc에서 제거)setopt NO_NOMATCH
(및/또는 .zshrc로 설정)캐럿에서 벗어나 백슬래시를 사용하여 매번 쾅 소리를 냅니다. 예를 들어,
git diff 15dc8\^\!
git diff 15dc8 15dce~1
~1은 '부모', ~2는 '조부모' 등을 의미합니다.
폴의 해결책은 제가 기대했던 것과 같습니다.
$ git diff HEAD^1
또한 언급된 홉과 같은 별칭을 추가하는 것도 유용합니다.~/.gitconfig 파일의 [alias] 섹션에 다음을 입력하면 단축키를 사용하여 헤드와 이전 사이의 차이를 볼 수 있습니다.
[alias]
diff-last = diff HEAD^1
그런 다음 $git diff-last를 실행하면 결과를 얻을 수 있습니다.여기에는 커밋 간의 차이뿐만 아니라 아직 커밋하지 않은 변경 사항도 포함됩니다.아직 커밋하지 않은 변경 사항을 무시하려면 diff를 사용하여 HEAD를 상위 항목과 직접 비교할 수 있습니다.
$ git diff HEAD^1 HEAD
이건 가명을 사용하기 때문에 당신의 질문에 정확하게 답하지는 않지만, 당신이 의도하는 것을 하는 데 유용하다고 생각합니다.
alias gitdiff-1="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 2|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git diff"
alias gitdiff-2="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 3|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git diff"
alias gitdiff-3="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 4|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git diff"
alias gitlog-1="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 2|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git log --summary"
alias gitlog-2="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 3|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git log --summary"
alias gitlog-3="git log --reverse|grep commit|cut -d ' ' -f2|tail -n 4|head -n 2|xargs echo|sed -e 's/\s/../'|xargs -n 1 git log --summary"
언급URL : https://stackoverflow.com/questions/436362/how-to-diff-a-commit-with-its-parent
'programing' 카테고리의 다른 글
지정된 커밋의 커밋 메시지 인쇄 (0) | 2023.05.26 |
---|---|
Xcode에서 활성 스킴의 이름을 변경하는 방법은 무엇입니까? (0) | 2023.05.26 |
WPF 속성을 C#의 애플리케이션 설정에 바인딩하는 가장 좋은 방법은 무엇입니까? (0) | 2023.05.26 |
바이트 배열을 16진수 문자열로 변환하거나 그 반대로 변환하는 방법은 무엇입니까? (0) | 2023.05.26 |
각도 2: 구성 요소의 호스트 요소를 스타일화하는 방법은 무엇입니까? (0) | 2023.05.26 |