2013-06-24 2 views
2

나는이 행동을 바로 가기 "자식 diffn"를 정의하고 싶습니다 :git diff 두 개의 순차 커밋 바로 가기?

git diffn := git diff HEAD HEAD~1 
git diffn 1 := git diff HEAD~1 HEAD~2 
git diffn 2 := git diff HEAD~2 HEAD~3 
... 

첫 번째는 문제가되지 않습니다,하지만 난 나머지를 만들기 위해 모르겠어요.

답변

2

Figu 내 자신을 붉게해라. 내가 ~/.gitconfig이 괴물 추가 한이 후

[alias] 
dn = "!sh -c 'if [ $# -eq 0 ] ; then git diff HEAD~1 HEAD ; else git diff HEAD~`expr $1 + 1` HEAD~$1 ; fi' -" 

,

git dn 

작품뿐만 아니라, (나) 놀랍게도

git dn 1 
git dn 2 
... 
+0

BTW : 당신의'HEAD'는 바뀌어야합니다 :'git diff HEAD ~ 1 HEAD' 등등. 나는 같은 실수를 저질 렀기 때문에 눈치 챘습니다. :) – 13ren

+0

고마워요, @ 13ren, 대답을 업데이트 할게요. . –

3

무엇에 대해 :

git show - 마지막

git show HEAD~1 커밋을 보여줍니다 - 마지막을 표시하지만 하나

git show <COMMIT SHA> 커밋 - 당신에게 보여주고 어떤

git whatchanged 커밋 - 당신은 변경하는 파일을 보여줍니다 자식 로그에 대해

+0

감사합니다. 전에는 사용하지 않았지만 유용합니다. 그러나 그것은 간단한 질문에 대한 나의 질문에 답하지 못합니다. –

+0

아니요, 이것이 당신이 원하는 것입니다. 별칭을 만들려면 .bashrc에'alias gitdiffn = 'git show HEAD ~ $ 1''을 넣으십시오.하지만 git show HEAD ~ 2가 나에게 정보를 제공하는 동안이 명령을 별칭 – user1158559

+0

으로 만드는 방법을 알았을 것입니다. $ DISPLAY를 사용할 수있을 때 merd를 호출하는 스크립트에 git diff를 바인드 했으므로 git diff HEAD ~ 2 HEAD ~ 1과 동등하지 않습니다. 그렇지 않으면 일반 diff가 필요합니다. –

0

을, 당신은 결합 할 수 있습니다 및 ^ 구문이므로이 방법을 사용하고 있습니다.

a=1; git diff HEAD^~$a HEAD~$a

하지만 더 간단한 방법이이 :

a=1; git log -p -1 HEAD~$a;

나는 여분이 정보가 유용하게 배향 커밋 찾을 수 있지만, 당신은 멀리 사용자 정의 할 수 있습니다. 참고 :이 맨 페이지는이 코드와 diff 형식 사이의 사소한 차이점을 기록하고 있으며, 이는 비인간 소비에 중요 할 수 있습니다.
[alias] 
diffn = "!sh -c 'git log -p -1 HEAD~$1' -" 

은 생략 인수 작동하지 않는다, 그래서 나는 if이 그것을 위해 필요한 것 같아요.

BTW : 비슷한 발견 발견 here