Nice programing

Git에서 두 개의 개별 분기에있는 파일을 비교할 수 없음

nicepro 2020. 12. 6. 22:03
반응형

Git에서 두 개의 개별 분기에있는 파일을 비교할 수 없음


branchA에 FileA가 있고 branchB에 FileB가 있습니다.

문제는 한 번에 하나의 파일에만 액세스 할 수 있다는 것입니다. Mac에서 찾은 유일한 diffTools이기 때문에 FileMerge 또는 meld로 파일을 비교할 수 있기를 바랍니다.

두 파일을 meld / FileMerge하여 어떻게 비교할 수 있습니까?


[해결됨] : 1 차 개발 문제 : FileMerge에서 표준 입력을 허용하지 않음

Masi : opendiff를 사용하여 FileMerge 가 표준 입력의 파일을 갖도록 수 있습니다 . 따라서 다음 문제는 git의 diff 도구가 opendiff를 사용하도록 만드는 방법을 찾는 것입니다.


두 번째로 개발 된 문제 : Mac에서 opendiff를 사용하도록 Git의 diff 도구 만들기


병합에는 " git mergetool "을 사용하고 그래픽 도구를 사용하여 비교하려면 최신 git (버전 1.6.3 이상)에서 " git difftool "을 사용할 수 있습니다. 물론 먼저 구성해야하지만 일부 자동 감지 (하드 코딩 된 기본 설정 포함)를 수행하며 올바르게 기억하면 opendiff 지원이 내장되어 있습니다.

그리고 물론 일반적인 "git diff"를 사용하는 것처럼 그래픽 도구 (opendiff / FileMerge)를 사용할 수 있습니다. 예를 들어

prompt> git difftool somebranch:UNREADME otherbranch:README

git은 저장소 경로의 일부로 브랜치 이름을 지원합니다. 예를 들어 저장소에 다음 파일이있는 경우 README에만 masterUNREADME에만 있습니다 branch.

master:README

branch:UNREADME

git을 통해 다음과 같이 비교할 수 있습니다.

git diff branch:UNREADME master:README

다음을 사용하여 저장소 아티팩트를 표준 출력으로 가져올 수 있습니다 git show.

git show branch1:UNREADME

따라서 외부 diff 유틸리티가 bash 프롬프트에서 2 개의 파일을 가져올 수 있다면 다음과 같이 비교할 수 있습니다.

diff-command <(git show branch1:UNREADME) <(git show master:README)

를 Where <(...)bash는 구문이 동봉 된 명령의 출력을 소요, 파이프 그것을 실행하고 명령 행에서 파이프의 파일 경로를 배치합니다.


예를 들어 현재 branchA로 체크 아웃중인 경우 다음 명령을 사용할 수 있습니다.

git diff branchB path/to/common/file/between/branches.txt

그런 다음 변경 사항의 하위 집합을 원하는 경우 diff를 편집하거나 그대로두고 git applydiff를 패치로 둘 수 있습니다. 이를 수행하는 GUI 도구에 관해서는 다른 누군가가 제안을 할 수 있기를 바랍니다.


에서 워드 프로세서 , 당신은 당신의 .git / 구성 파일에 다음과 같은 뭔가가 필요 :

# Our diff algorithm
[diff]
    external = opendiff

참고 URL : https://stackoverflow.com/questions/916822/unable-to-diff-files-in-two-separate-branches-in-git

반응형