2010-07-30 2 views
5

필자는 시스템에 사용할 텍스트를 입력하는 텍스트 파일 (.yml)을 가지고 있습니다. 그러나 이제 우리는 한 번에 새로운 줄을 알아야합니다. 나는 우리 문제를 해결하기 위해 git을 사용하려고 생각했지만, 이것을하기위한 명확한 명령을 찾을 수 없다.첫 번째 커밋과 마지막 커밋 사이에 동일한 파일에서 git diff 사용

이것이 가능합니까?

+0

의 중복 가능성 [힘내 :? 같은 지점에 두 개의 서로 다른 커밋과 같은 파일을 diff를하는 방법] (http://stackoverflow.com/questions/3338126/git 당신은 위의 라인을 변경할 수 있습니다 -how-to-diff-the-same-file-between-two-different-commits-on-same-branch) –

답변

11

당신은 너무 같은 것을 옆 널빤지 커밋의 목록을 얻을 수 있습니다 :

git log --abbrev-commit --pretty=oneline

같은 것을해야하는 :

commitD Description 
commitC Description 
commitB Description 
commitA Description 

은 두 커밋을 선택하고 다음을 대체 :

git diff <commitA>..<commitB> -- /path/to/file

+0

내 문제가 해결되었습니다! –

3
이 결과 목록을 반전으로 ...

git diff -w `git rev-list HEAD --reverse | head -1`..HEAD -- <path/file> 

하면 그것은 하나의 카운트 --reverse 사용하는 작동하지 않습니다 (-1/--max 카운트 1) :

당신은 하나의 커맨드와 함께 할 수 있습니다 그것을 잘라낸 후에 따라서 head 명령과 함께 --reverse를 사용하거나 tail -1을 사용합니다.

라인 엔딩과 탭 대 스페이스 사용의 스위치 때문에 필자는 -w를 추가해야했다.

첫 번째 커밋에서 파일을 추가하지 않으면 예상대로 작동하지 않을 수 있습니다!

git diff -w `git rev-list HEAD --reverse -- <path/file> | head -1`..HEAD -- <path/file>