카테고리 없음

[자식] 멜 드로 가지의 차이점을 보시겠습니까?

행복을전해요 2021. 1. 10. 09:50

또한이 문제가 성가시다는 것을 알게 되었기 때문에 작업 트리 또는 스테이징 영역에 대해 임의의 커밋을보다 편안하게 비교할 수있는 git meld를 만들었습니다.

https://github.com/wmanley/git-meld

에서 찾을 수 있습니다 . Mark의 스크립트와 비슷하지만 임의의 커밋이나 스테이징 영역 또는 작업 디렉토리를 다른 것과 비교하는 데 사용됩니다. 비교 대상 중 하나가 작업 트리 인 경우 읽기-쓰기이므로 변경 사항을 잃지 않습니다.-------------------
짧고 달콤한 :

git config --global diff.tool meld

이렇게하면 Git이

meld

diff 도구 로 사용하도록 구성 됩니다. (명령 줄 인수를 지정할 필요가 없으며 지원

meld

이 Git에 내장되어 있습니다.)그런 다음 텍스트 대신 그래픽 차이를 원하면 대신 호출하면

git difftool

됩니다

git diff

(둘 다 동일한 인수를 사용함). 귀하의 경우 :

git difftool master..devel

업데이트 : 한 번에 하나의 파일 비교를 원하지 않고 대신 두 분기 간의 모든 변경 사항과 함께 meld의 "하위 디렉토리"보기를 사용하려면에 대한

-d

또는

--dir-diff

옵션을 확인하십시오

git difftool

. 예를 들어 XYZ 지점에있을 때이 지점과 ABC 지점의 차이점을 확인하려면 다음을 실행합니다.

git difftool -d ABC

-------------------
git v1.7.11부터

git difftool --dir-diff

디렉토리 비교를 수행하는 데 사용할 수 있습니다 .

https://github.com/wmanley/git-meld

스크립트없이 meld와 잘 작동합니다 .git 구성

git config --global diff.tool meld

그걸 써

git difftool -d topic             // -d is --dir-diff
git difftool -d master..topic

macOS의 경우

brew cask install meld
git config --global difftool.meld.cmd 'open -W -a Meld --args \"$LOCAL\" \"$PWD/$REMOTE\"'
git config --global difftool.meld.trustExitCode true

-------------------
를 사용

git difftool -d

하면

여전히

Meld에서 작업 파일을 편집 하고

저장할 수 있습니다

. 이를 달성하려면 일부 분기를 현재 작업 트리와 비교해야합니다. 예를 들면 다음과 같습니다.

git difftool -d branchname

Meld는 왼쪽 및 오른쪽 디렉토리가 모두 / tmp에 있음을 보여줍니다. 그러나 올바른 디렉토리의 파일은 실제로 현재 작업 디렉토리의 파일에 대한 심볼릭 링크입니다 (Windows에는 적용되지 않음). 따라서 Meld에서 바로 편집 할 수 있으며 저장하면 변경 사항이 작업 디렉토리에 저장됩니다.그러나 더 흥미로운 옵션은 현재 작업 디렉토리와 숨김을 비교하는 것입니다. 다음을 입력하면됩니다.

git difftool -d stash

그런 다음

git stash pop/apply

이 명령에 의해 유발 될 수있는 성가신 충돌 해결을 사용 하거나 방지 하지 않고 일부 변경 사항을 숨김 (왼쪽 창)에서 현재 작업 복사본 (오른쪽 창)으로 전송할 수 있습니다.스 태시로 작업 흐름을 크게 향상시킬 수 있다고 생각합니다. stash에서 작업 복사본으로 변경 사항을 점차적으로 전송하고 원하는 경우 다른 변경 사항을 도입하여 하나씩 커밋 할 수 있습니다.-------------------
다른 답변에서 현재 git 저장소에서 직접 수행 할 방법이없는 것처럼 보이지만 두 커밋의 트리를 추출하는 스크립트를 작성하는 것은 쉽습니다 (

다른 질문에 대한

답변 덕분에 :)) 임시 디렉토리에 추가하고 meld를 실행하여 meld가 종료되면 두 디렉토리를 모두 제거합니다.

http://gist.github.com/498628

물론 meld를 통해 변경 한 내용을 잃게 되겠지만 차이점을 간략히 살펴보면 상당히 좋습니다.-------------------
이 작업을 수행하는 쉬운 방법은 다음을 사용하는 것입니다

git reset --soft

.목표 : meld를 사용하여 branch_a와 branch_b의 차이점 비교

git checkout branch_a
git checkout -b do_diff
git reset --soft branch_b
meld .

-------------------
macOS의 Meld 의 경우 macOS 응용 프로그램의 관리자 인 yousseb가

~/.gitconfig

권장하는대로 다음을 추가합니다 .

[diff]
  tool = meld
  [difftool]
    prompt = false
    [difftool "meld"]
      trustExitCode = true
        cmd = open -W -a Meld --args \"$LOCAL\" \"$REMOTE\"
        [merge]
          tool = meld
          [mergetool]
            prompt = false
            [mergetool "meld"]
              trustExitCode = true
                cmd = open -W -a Meld --args --auto-merge \"$LOCAL\" \"$BASE\" \"$REMOTE\" --output=\"$MERGED\"
                

원하는

merge

경우 구성을 생략 할 수 있습니다 .

@GutenYe의 대답

은 자동 이스케이프 및 / 또는

zsh

.-------------------
git V1.7.9에서는 명령 줄없이 두 개의 커밋을 비교할 수 있습니다.'git gui'편집 옵션에서 전역 : "병합 도구 사용 : meld"를 구성해야합니다.시작

gitk

, 커밋 선택, 다른 커밋 마우스 오른쪽 버튼 클릭> "

diff this-> selected

". '패치'에서 파일> "

external diff

"를 마우스 오른쪽 버튼으로 클릭합니다 .

meld

가 시작되고 여전히 선택된 상태를 표시합니다. 첫 번째는 오른쪽에 커밋됩니다.

출처
https://stackoverflow.com/questions/2006032