2010-06-28 3 views
9

패치 파일을 기본값 git diff 형식이 아닌 다른 것으로 작성해야하는 Git repo가 ​​있습니다. 필자의 경우 패치를 적용해야하는 오래된 OSF/1 머신이 있는데, /bin/patch 프로그램은 통합 diff를 이해하지 못합니다.git-diff에서 "컨텍스트"형식을 만드는 방법 diff?

나는 그때 상황에 맞는 형식은 diff를 요청 GIT_DIFF_OPTS=-c을 사용할 수 있다는 희망, GIT_EXTERNAL_DIFF=diff를 사용하는 경우, 다음 내 (현대) diff 프로그램은 명령 행에 대한 추가 인수를 불평 :

diff: extra operand `373e5907b789a1398a91f4ceb4ab14e8a0ed4282' 
diff: Try `diff --help' for more information. 
external diff died, stopping at [filename]. 

GIT_EXTERNAL_DIFF=echo 쇼를 설정하는 이 여분의 인수를 원하지 않는 diff 혼란

$GIT_EXTERNAL_DIFF <file2> <file1> <hash> <mode> <tmpfilename> <hash> <mode> 

: 힘내와 외부 diff 프로그램을 실행하는 것 같다. git diff에 구식 "컨텍스트"형식 diff를 작성하는 쉬운 방법이 있습니까?

(나의 현재 계획은 $1 $2와 실제 diff를 호출하는 한 줄의 쉘 스크립트를 작성하는 것입니다,하지만 난 덜 어색 방법이 바라고 있어요.)

답변

5

구성합니다 difftool이해야 할 무엇 원하는 : 사용자 정의 difftool를 구성 할 필요가 없습니다

$ git config difftool.ctxdiff.cmd 'diff $LOCAL $REMOTE' 
$ git difftool -y -t ctxdiff HEAD~4..HEAD 
+0

2 커밋 사이의 컨텍스트 형식으로 diff를 가져 오려면 이전 커밋과 새 커밋을 어디에서해야합니까? 'git difftool -y -t ctxdiff oldCommitHash newCommitHash' –

8

, 단지 -x 옵션을 사용

$ git difftool -y -x "diff -c" | less 

를 또는 별칭을 구성 단순한 "git cdiff"명령으로 컨텍스트 스타일 diff를 출력하십시오 :

$ git config --global alias.cdiff 'difftool -y -x "diff -c"' 
$ git cdiff | less 
+0

두 커밋의 context diff를 얻는 방법을 설명해 주시겠습니까? 관련 커밋 해시가 'b299g2'및 'f242g3'이라고 가정 해 보겠습니다. –

+0

왜 우리는''diff -c "'를 옵션으로 삽입 하는가? –