기본 git diff 동작은 각 diff 파일을 직렬로 여는 것입니다 (다음 파일을 열기 전에 이전 파일이 닫힐 때까지 기다리십시오).
예를 들어 BeyondCompare에서 모든 파일을 한 번에 열 수있는 방법을 찾고 있습니다. 예를 들어 동일한 BC 창 내에서 탭의 모든 파일을 열 수 있습니다.
이를 통해 복잡한 변경 사항을 쉽게 검토 할 수 있습니다. diff 파일 사이를 앞뒤로 넘기고 중요하지 않은 파일은 무시하십시오.
기본 git diff 동작은 각 diff 파일을 직렬로 여는 것입니다 (다음 파일을 열기 전에 이전 파일이 닫힐 때까지 기다리십시오).
예를 들어 BeyondCompare에서 모든 파일을 한 번에 열 수있는 방법을 찾고 있습니다. 예를 들어 동일한 BC 창 내에서 탭의 모든 파일을 열 수 있습니다.
이를 통해 복잡한 변경 사항을 쉽게 검토 할 수 있습니다. diff 파일 사이를 앞뒤로 넘기고 중요하지 않은 파일은 무시하십시오.
답변:
git
v1.7.11 부터 git difftool --dir-diff
디렉토리 diff를 수행하는 데 사용할 수 있습니다 .
이 기능은 예를 들어 Meld 3.14.2에서 잘 작동하며 수정 된 모든 파일을 찾아 볼 수 있습니다.
git difftool --dir-diff --tool=meld HEAD~ HEAD
이것은 편리한 Bash 기능입니다.
git-diff-meld() (
git difftool --dir-diff --tool=meld "${1:-HEAD~}" "${2:-HEAD}"
)
다음 답변은 git
v1.7.11 이전의 설치에 적용됩니다 .
git mail list 에서 이와 같은 질문을 받았습니다 .
임의의 커밋 사이에서 디렉토리 차이를 수행하는 해당 이메일 스레드를 기반으로 쉘 스크립트를 작성했습니다.
git v1.7.10부터 git-diffall
스크립트는 contrib
표준 git 설치에 포함됩니다.
v1.7.10 이전 버전의 경우 GitHub 의 git-diffall
프로젝트에서 설치할 수 있습니다 .
프로젝트 설명은 다음과 같습니다.
git-diffall 스크립트는 git에 대한 디렉토리 기반 diff 메커니즘을 제공합니다. 이 스크립트는 diff.tool 구성 옵션을 사용하여 사용되는 diff 뷰어를 결정합니다.
이 스크립트는 diff 할 수정 범위를 지정하는 데 사용되는 모든 양식과 호환됩니다.
1)
git diffall
: 작업 트리와 단계적 변경 사이의 차이를 표시합니다.
2)git diffall --cached [<commit>]
: 단계별 변경과HEAD
(또는 다른 명명 된 커밋 사이의 차이를 보여줍니다. )
3)git diffall <commit>
: 작업 트리와 명명 된 커밋 사이의 차이를 보여줍니다.
4)git diffall <commit> <commit>
: 명명 된 두 커밋 사이에 차이를 보여줍니다 .
5)git diffall <commit>..<commit>
: 동일 위의
6)git diffall <commit>...<commit>
: 두 가지의 공통 조상에서 시작하여 두 번째까지 포함하는 지점의 변경 사항을 표시하십시오.<commit>
참고 : 모든 양식에는 선택적 경로 제한 기가 있습니다.
[--] [<path>]
이 스크립트는 Git 목록에서 Thomas Rast가 제공 한 예제를 기반으로 합니다 .
git difftool --dir-diff
비교 및 그 이상) : Scooter Software (Beyond Compare의 저자)에게 연락 bcompare.exe
하여 지원되는 솔루션이 아니며 한 번에 둘 이상의 diff가 열려 있으면 문제가 발생할 수 있다고 말합니다 . bcomp.exe
향후 버전 에서는 폴더 차이에 대한 지원을 추가 할 계획입니다 (그 동안 bcompare.exe
지원되지 않는 해결 방법으로 계속 사용함 ).
--dir-diff
Meld와 완벽하게 작동 한다고 말하면 됩니다. 여기에서 개별 파일에 대한 차이점을 선택하고 볼 수 있습니다.
여기에 내가 정착 한 것이 있습니다 ...
다음 코드를 git-diffall
(확장자 없음) 이라는 파일에 복사하십시오 .
#!/bin/sh
git diff --name-only "$@" | while read filename; do
git difftool "$@" --no-prompt "$filename" &
done
파일을 cmd
(예 : 디렉토리 설치하려면 자식의 폴더 C:\Program Files (x86)\Git\cmd
)
다음과 같이 사용하십시오 git diff
.
git diffall
git diffall HEAD
git diffall --cached
git diffall rev1..rev2
etc...
참고 :이 파일의 키는 & param으로, 외부 diff 명령이 백그라운드 작업에서 실행되도록 지시하므로 파일이 즉시 처리됩니다. BeyondCompare의 경우 각 파일이 자체 탭에있는 하나의 화면이 열립니다.
"$filename"
해야했습니다 "../$filename"
. 그런 다음 Beyond Compare와 완벽하게 작동했습니다
git-diffall
파일을 추가 한 후 창을 다시 시작해야 C:\Program Files\Git\cmd
합니까? 나는 지시대로 그러나 행동에 따라 $ git diffall git: 'diffall' is not a git command. See 'git --help'. Did you mean this? difftool
meld
소스 제어 (Git, Mercurial, Subversion, Bazaar 등)에서 디렉토리를 제공하면 변경된 모든 파일이 자동으로 나열되고 두 번 클릭하여 개별 차이점을 볼 수있는 깔끔한 기능이 있습니다.
IMO meld .
VCS를 시작하도록 구성하는 것보다 입력하기 쉽고 VCS를 파악하는 것이 훨씬 쉽습니다 meld
. 또한 프로젝트에서 어떤 VCS를 사용하든 동일한 명령을 사용할 수 있습니다. VCS를 많이 전환하면 좋습니다.
유일한 단점은 git / hg / svn에서 변경 사항을 전달하는 것보다 meld가 변경 사항을 검색하는 것이 느리다는 것입니다.
git diff
제공되지 않는 주석 또는 빈 줄 추가 / 제거 등의 변경 사항을 무시하십시오 .
이 방법을 찾았습니다 로 복사 이전 / 새 임시 DIRS 밖으로 파일과 그들에 비교 폴더를한다는 것을 (GitDiff.bat 및 GitDiff.rb을).
그러나 BeyondCompare는 diff 창 내에서 파일을 편집 할 수있는 편리한 기능을 가지고 있기 때문에 작업 파일에서 직접 작업 파일을 직접보고 싶습니다. 이는 빠른 정리에 좋습니다.
편집 : 여기에 비슷한 방법 git mailing list에 대한 내 질문에 대한 응답으로 .
git meld
=> https://github.com/wmanley/git-meld 는 하나의 창에서 모든 파일의 깔끔한 차이를 여는 멋진 스크립트입니다.
확산 에는 VCS 통합도 있습니다. SVN, Mercurial, Bazaar 등 다양한 VCS와 상호 운용이 가능합니다. 충돌이 발생하면 네 개의 창이 있습니다.
로 불러
diffuse -m
Git 작업 카피에.
당신이 저에게 묻는다면, 10 년 동안 내가 본 최고의 시각적 차이가 있습니다. (그리고 나도 시도했다.)
두 개의 작동 트리를 복제하고 DiffMerge와 비교하는 powershell 스크립트를 작성했습니다. 그래서 당신은 할 수 있습니다 :
GitNdiff master~3 .
예를 들어 3 체크인 전의 마스터 브랜치를 현재 작업 트리와 비교합니다.
반짝이고 새롭고 아마도 버그가 가득합니다. 한 가지 단점은 아직 추가되지 않은 작업 트리의 파일이 두 작업 트리에 모두 복사된다는 것입니다. 느려질 수도 있습니다.
Araxis와 함께 Mac OS X에서 git-diffall을 사용하는 데 관심이있는 사람들을 위해 github에서 git-diffall 프로젝트를 분기하고 Araxis Merge 명령을 래핑하는 AppleScript를 추가했습니다. 참고 : araxisgitdiff
Mac OS X 용 Araxis Merge와 함께 제공 되는 약간 수정 된 파일 복제본입니다.