부모와 커밋을 어떻게 다른가요?
별명이나 스크립트를 작성하는 것 외에도 특정 커밋에 대한 diff를 얻는 더 짧은 명령이 있습니까?
git diff 15dc8^..15dc8
단일 커밋 id 만 제공하면 git diff 15dc8
해당 커밋을 HEAD와 비교합니다.
사용하십시오 git show $COMMIT
. 커밋에 대한 로그 메시지와 해당 커밋의 차이점을 보여줍니다.
사용하다:
git diff 15dc8^!
git-rev-parse (1) 맨 페이지 의 다음 조각 (또는 최신 git gitrevisions (7) 맨 페이지)에 설명 된대로 :
커밋과 그 부모 커밋에 의해 형성된 집합의 이름을 지정하기위한 두 개의 다른 속기는 존재합니다. r1 ^ @ 표기법은 r1의 모든 부모를 의미합니다. r1 ^! 커밋 r1을 포함하지만 모든 부모를 제외합니다.
즉 , 수정이 필요한 git의 어느 곳에서나 15dc8^!
속기로 사용할 수 있습니다 15dc8^..15dc8
. 용 DIFF 는 명령 git diff 15dc8^..15dc8
으로서 이해된다 git diff 15dc8^ 15dc8
커밋의 부모 (차이 수단 15dc8^
) 및 커밋 ( 15dc8
).
참고 : git-rev-parse(1)
맨 페이지 의 설명에서는 개정 범위 에 대해 설명합니다. 수정 범위 는 둘 이상의 부모와의 병합 커밋에도 작동해야합니다. 그런 다음 r1^!
" r1 --not r1^@
"즉 " r1 ^r1^1 ^r1^2 ...
"
또한 git show COMMIT
커밋에 대한 커밋 설명과 diff를 얻는 데 사용할 수 있습니다 . diff 만 원하면 사용할 수 있습니다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
자세한 내용은 이 페이지를 참조하십시오 .
@mipadi가 지적했듯이을 사용할 수 git show $COMMIT
있지만 헤더와 커밋 메시지도 표시됩니다. 직선 차이를 원하면을 사용하십시오 git show --pretty=format:%b $COMMIT
.
이것은 분명히 짧은 손이 아니므 로이 별칭을 .gitconfig에 유지합니다.
[alias]
sd = show --pretty=format:%b
이 사용하는 저를 가능하게 git sd $COMMIT
하는 DIFF 보여줍니다 .
zsh를 사용하고 옵션 세트 가있는 경우 언급 된 많은 예 (예 : git diff 15dc8^!
또는 git diff 15dc8^..15dc8
)가 작동하지 않습니다 extendedglob
. 다음 세 가지 방법 중 하나로이를 수정할 수 있습니다.
unsetopt extendedglob
(및 / 또는 .zshrc에서 제거)setopt NO_NOMATCH
(또는 .zshrc에 설정)캐럿을 벗어나 백 슬래시로 매번 뱅
git diff 15dc8\^\!
git diff 15dc8 15dce~1
~ 1은 '부모', ~ 2 '조부모 등을 의미합니다.
위의 Paul의 솔루션은 내가 기대했던대로했습니다.
$ git diff HEAD^1
또한 ~ / .gitconfig 파일의 [alias] 섹션에 다음을 입력하면 단축기를 사용하여 헤드와 이전의 차이를 볼 수 있습니다. 언급 된 호브와 같은 별칭을 추가하는 것이 좋습니다.
[alias]
diff-last = diff HEAD^1
그런 다음 $ git diff-last를 실행 하면 결과가 나타납니다. 참고이는 것 등 아직 커밋되지 않은 한 모든 변경뿐만 아니라 커밋 사이의 DIFF합니다. 아직 커밋하지 않은 변경 사항 을 무시 하려면 diff를 사용하여 HEAD를 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
도와주세요.
'development' 카테고리의 다른 글
jQuery를 사용하여 롤오버시 이미지 소스 변경 (0) | 2020.02.17 |
---|---|
PuTTYgen (Windows)을 사용하여 생성 된 SSH 키 쌍을 ssh-agent 및 Keychain (Linux)에서 사용하는 키 쌍으로 변환하는 방법 (0) | 2020.02.17 |
XML 문서를 역 직렬화하는 방법 (0) | 2020.02.17 |
한 배열 위치에서 다른 배열 위치로 배열 요소 이동 (0) | 2020.02.17 |
Docker 컨테이너의 런타임 성능 비용은 얼마입니까? (0) | 2020.02.17 |