git diff 도구, 직렬이 아닌 모든 diff 파일을 즉시 엽니다.
기본 gitdiff 동작은 각 diff 파일을 직렬로 여는 것입니다(다음 파일을 열기 전에 이전 파일이 닫힐 때까지 기다립니다).
한 번에 모든 파일을 여는 방법을 찾고 있습니다. 예를 들어 BeyondCompare에서는 동일한 BC 창 내의 탭에 있는 모든 파일을 엽니다.
이렇게 하면 복잡한 변경 사항을 검토하기가 쉬워집니다. diff 파일 사이를 앞뒤로 이동하고 중요하지 않은 파일은 무시합니다.
으로 git
v1.7.11을 사용하여 디렉토리 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 목록에서 동일한 질문을 했습니다.
저는 임의의 커밋 간에 디렉터리 차이를 수행하는 전자 메일 스레드를 기반으로 셸 스크립트를 작성했습니다.
10으로 하는 git v1.7.10 파일git-diffall
는 스립는있다에 되어 있습니다.contrib
표준 git 설치의.
v1.7.10 이전 버전의 경우 GitHub의 프로젝트에서 설치할 수 있습니다.
다음은 프로젝트 설명입니다.
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
dir 예: git install dir 폴더):C:\Program Files (x86)\Git\cmd
)
그리고 당신이 원하는 대로 사용하세요.git diff
:
git diffall
git diffall HEAD
git diffall --cached
git diffall rev1..rev2
etc...
참고: 핵심은 파일이 즉시 처리되도록 백그라운드 작업에서 실행하도록 외부 diff 명령을 알려주는 & 매개 변수입니다.BeyondCompare의 경우 각 파일이 자체 탭에 있는 하나의 화면이 열립니다.
meld
에는 소스 제어 하에 디렉토리(Git, Mercurial, Subversion, Baza 및 기타)를 지정하면 변경된 모든 파일이 자동으로 나열되며 두 번 클릭하여 개별 차이점을 볼 수 있는 깔끔한 기능이 있습니다.
를 입력하는이 IMO를 입력하는 것이 .meld .
하여 VCS를 . VCS는 VCS를 실행합니다.meld
또한 프로젝트에서 사용 중인 VCS에 관계없이 동일한 명령을 사용할 수 있습니다. 이는 두 VCS 간을 자주 전환하는 경우 유용합니다.
유일한 단점은 git/hg/svn에서 변경사항을 검색하는 것이 git/hg/svn에서 변경사항을 전달하는 것보다 느리다는 것입니다. 문제가 될 만큼 느리는지 여부는 사용 방법에 따라 달라질 것입니다.
이 방법(GitDiff.bat 및 GitDiff.rb)을 찾았습니다. 파일을 기존/신규 임시 디렉토리에 복사한 다음 폴더를 비교합니다.
하지만 BeyondCompare는 diff 창 안에서 파일을 편집할 수 있는 편리한 기능을 가지고 있기 때문에 작업 파일을(를) working dir에서 직접 보고 싶습니다.
편집: Git 메일링 목록에 대한 제 질문에 대한 답변으로 여기서 유사한 방법입니다.
git meld
=> https://github.com/wmanley/git-meld 은 단일 창에서 모든 파일의 깔끔한 차이를 열 수 있는 멋진 스크립트입니다.
Araxis Merge에는 '-nowait' 명령 옵션이 있습니다.
-nowait 비교가 종료될 때까지 기다리는 것을 방지합니다.
아마 이것은 즉시 종료 코드를 반환하고 작동할 것입니다, 이것을 경험한 사람이 있습니까?BeyondCompare에 대한 유사한 옵션을 찾을 수 없습니다...
Diffusion에는 VCS 통합 기능이 통합되어 있습니다.SVN, Mercurial, Baza 등의 다른 VCS와 상호 운용됩니다.Git의 경우 모든 변경 사항이 스테이징되지는 않지만 일부 변경 사항이 스테이징된 경우 세 개의 창이 표시됩니다.충돌의 경우에는 네 개의 창이 있을 것입니다.
사용하여 호출
diffuse -m
당신의 Git 작업 복사본에서.
제게 묻는다면, 제가 10년 동안 본 최고의 시각적 차이입니다. (그리고 저도 멜드를 시도해 봤습니다.)
다음은 meld 및 kdiff3와 함께 작동합니다.
git difftool --dir-diff origin/branch1..origin/branch2
쉽게 찾아볼 수 있는 창에 있는 모든 파일을 엽니다.원산지/지점 이름 대신 변경 세트와 함께 사용할 수 있습니다.
예:git difftool --dir-diff origin/master..24604fb72f7e16ed44115fbd88b447779cc74bb1
현재 수정된 모든 파일을 여는 것만 원하는 경우 다음과 같은 방법을 사용하십시오.
vi $(git 상태 | sed -n '/.*수정됨: */s//p')
복잡한 변경사항 집합을 커밋하는 경우 워크플로우를 다시 고려할 수 있습니다.git의 정말 좋은 기능 중 하나는 개발자가 복잡한 변경 세트를 일련의 간단한 패치로 쉽게 줄일 수 있다는 것입니다.현재 수정된 모든 파일을 편집하려고 하는 것보다 다음과 같은 작업을 수행하는 것이 좋습니다.
git add --dllwhich will allow you to selectively stage hunks.
나는 두 개의 작업 트리를 복제하고 DiffMerge와 비교할 powershell 스크립트를 작성했습니다.따라서 다음을 수행할 수 있습니다.
GitNdiff master~3 .
예를 들어, 세 번 전에 체크인한 마스터 분기를 현재 작업 트리와 비교합니다.
그것은 빛나고 새로우며 아마도 벌레로 가득 차 있을 것입니다.한 가지 단점은 아직 추가되지 않은 작업 트리의 파일이 두 작업 트리에 모두 복사된다는 것입니다.느릴 수도 있습니다.
http://github.com/fschwiet/GitNdiff
Araxis와 함께 Mac OS X에서 git-diffall을 사용하는 것에 관심이 있는 사람들을 위해, 저는 git-diffall 프로젝트를 github에서 포크하고 Araxis Merge 명령을 랩하는 Apple 스크립트를 추가했습니다.참고: 이것은 약간 수정된 복제품입니다.araxisgitdiff
Mac OS X용 Araxis Merge와 함께 제공되는 파일입니다.
https://github.com/sorens/git-diffall
vim에서 모든 파일을 탭 페이지로 열기 위한 작은 도구를 작성했습니다.
https://github.com/balki/vimtabdiff
gitk를 사용하여 모든 차이점을 동시에 확인할 수 있습니다.
언급URL : https://stackoverflow.com/questions/1220309/git-difftool-open-all-diff-files-immediately-not-in-serial
'programing' 카테고리의 다른 글
Azure App 서비스 메모리 사용량입니다.어디에서 전체 고장을 확인할 수 있습니까? (0) | 2023.05.06 |
---|---|
Python 3.5에서 코루틴과 미래/작업의 차이점은 무엇입니까? (0) | 2023.05.06 |
어떻게 만들까요?시스템 트레이에서만 실행되는 NET Windows Forms 응용 프로그램? (0) | 2023.05.06 |
mongoose를 사용하여 mongodb에서 컬렉션의 만료 시간 설정 (0) | 2023.05.06 |
파이썬 사전: u' chars 제거 (0) | 2023.05.06 |