programing

git diff 도구, 직렬이 아닌 모든 diff 파일을 즉시 엽니다.

goodsources 2023. 5. 6. 14:56
반응형

git diff 도구, 직렬이 아닌 모든 diff 파일을 즉시 엽니다.

기본 gitdiff 동작은 각 diff 파일을 직렬로 여는 것입니다(다음 파일을 열기 전에 이전 파일이 닫힐 때까지 기다립니다).

한 번에 모든 파일을 여는 방법을 찾고 있습니다. 예를 들어 BeyondCompare에서는 동일한 BC 창 내의 탭에 있는 모든 파일을 엽니다.

이렇게 하면 복잡한 변경 사항을 검토하기가 쉬워집니다. diff 파일 사이를 앞뒤로 이동하고 중요하지 않은 파일은 무시합니다.

으로 gitv1.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}"
)

다음 답변은 다음에 적용됩니다.gitv1.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

파일을 다음 위치에 배치합니다.cmddir 예: 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 --dll
which 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 스크립트를 추가했습니다.참고: 이것은 약간 수정된 복제품입니다.araxisgitdiffMac 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

반응형