git difftool, 직렬이 아닌 모든 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-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의 경우 각 파일이 자체 탭에있는 하나의 화면이 열립니다.
meld
소스 제어 (Git, Mercurial, Subversion, Bazaar 등)에서 디렉토리를 제공하면 변경된 모든 파일을 자동으로 나열하고 두 번 클릭하여 개별 차이점을 볼 수있는 깔끔한 기능이 있습니다.
IMO meld .
VCS를 시작하도록 구성하는 것보다 입력하기 쉽고 VCS를 파악하도록합니다 meld
. 또한 프로젝트에서 사용하는 VCS에 관계없이 동일한 명령을 사용할 수 있습니다. VCS를 많이 전환하면 좋습니다.
유일한 단점은 git / hg / svn에서 변경 사항을 전달하는 것보다 meld가 변경 사항을 검색하는 것이 느리다는 것입니다.하지만 문제가 될 정도로 느릴 지 여부는 사용 방법에 달려 있습니다.
내가 찾았 어 ,이 메소드 로 복사 이전 / 새 임시 DIRS 밖으로 파일과 그들에 비교 폴더를한다는 것을 (GitDiff.bat 및 GitDiff.rb을).
그러나 BeyondCompare는 diff 창 내에서 파일을 편집 할 수있는 편리한 기능을 가지고 있기 때문에 작업 파일에서 직접 작업 파일을 직접보고 싶습니다. 이는 빠른 정리에 좋습니다.
편집 : git mailing list에 대한 내 질문에 대한 응답으로 비슷한 방법이 있습니다 .
git meld
=> https://github.com/wmanley/git-meld 는 하나의 창에서 모든 파일의 깔끔한 차이를 여는 멋진 스크립트입니다.
확산 에는 VCS 통합도 있습니다. SVN, Mercurial, Bazaar 등 다양한 VCS와 상호 운용됩니다. Git의 경우 일부 변경이 준비되지 않은 경우에도 3 개의 창을 표시합니다. 충돌이 발생하면 네 개의 창이 있습니다.
로 불러
diffuse -m
Git 작업 카피에.
당신이 저에게 묻는다면, 10 년 동안 내가 본 최고의 시각적 차이가 있습니다. (그리고 나도 시도했다.)
여기 드러내 Araxis 병합이 '-nowait'명령 옵션을 가지고 :
-nowait 비교가 닫히기를 기다리는 것을 방지합니다.
어쩌면 이것은 즉시 종료 코드를 반환하고 작동 할 것입니다. BeyondCompare와 유사한 옵션을 찾을 수 없습니다 ...
현재 수정 된 모든 파일을 열기 만하면됩니다.
vi $ (git status | sed -n '/.* 수정 : * / s /// p')
"복잡한 변경 세트"를 커밋하는 경우 워크 플로를 다시 고려할 수 있습니다. git의 멋진 기능 중 하나는 개발자가 복잡한 변경 세트를 일련의 간단한 패치로 쉽게 줄일 수 있다는 것입니다. 현재 수정 된 모든 파일을 편집하려고하기보다는
git add --patch선택적으로 덩어리를 스테이징 할 수 있습니다.
두 개의 작동 트리를 복제하고 DiffMerge와 비교하는 powershell 스크립트를 작성했습니다. 그래서 당신은 할 수 있습니다 :
GitNdiff master~3 .
예를 들어 3 체크인 전의 마스터 브랜치를 현재 작업 트리와 비교합니다.
반짝이고 새롭고 아마도 버그가 가득합니다. 한 가지 단점은 아직 추가되지 않은 작업 트리의 파일이 두 작업 트리에 모두 복사된다는 것입니다. 느려질 수도 있습니다.
http://github.com/fschwiet/GitNdiff
Araxis와 함께 Mac OS X에서 git-diffall을 사용하는 데 관심이있는 사람들을 위해 github에서 git-diffall 프로젝트를 분기하고 Araxis Merge 명령을 래핑하는 AppleScript를 추가했습니다. 참고 : araxisgitdiff
Mac OS X 용 Araxis Merge와 함께 제공 되는 약간 수정 된 파일 복제본입니다.
https://github.com/sorens/git-diffall
다음은 meld 및 kdiff3에서 작동합니다.
git difftool --dir-diff origin/branch1..origin/branch2
쉽게 찾을 수있는 모든 파일을 창에서 엽니 다. 원산지 / 분기 이름 대신 변경 세트와 함께 사용할 수 있습니다.
예 : git difftool --dir-diff origin/master..24604fb72f7e16ed44115fbd88b447779cc74bb1
gitk 를 사용 하여 동시에 모든 차이점을 볼 수 있습니다
'Programing' 카테고리의 다른 글
MySQL은 쿼리에서 ORDER BY 및 LIMIT를 어떻게 처리합니까? (0) | 2020.04.17 |
---|---|
렌더링되지 않은보기를 iOS 8 스냅 샷하면 빈 스냅 샷이 생성됩니다. (0) | 2020.04.17 |
Visual Studio 2012 웹 게시에서 파일을 복사하지 않습니다 (0) | 2020.04.17 |
복사 초기화와 직접 초기화간에 차이가 있습니까? (0) | 2020.04.17 |
System.currentTimeMillis () vs. 새로운 Date () vs. Calendar.getInstance (). getTime () (0) | 2020.04.17 |