programing

혼합된 분기의 차이점을 보시겠습니까?

i4 2023. 7. 10. 22:00
반응형

혼합된 분기의 차이점을 보시겠습니까?

를 HEAD로 볼 수.meld .를 들어, 지점 간의 차이를 볼 수 있을까요?master그리고.devel멜트로?

현재 다음 단계를 수행합니다.

  1. 복사본의 이름
    를 들어 를들면입니다.mv /projectA /projectA_master)
  2. 를 다시 합니다.
    git clone url
  3. 으로 전환devel 분점
    cd projectA && git -b devel origin/devel
  4. mold와의 보기
    meld /projectA_Master projectA

용융지에서 같은 결과를 얻을 수 있는 더 쉬운 방법은 없을까요?주로 병합을 위한 것이 아니라 변경 사항을 검토하는 데만 필요합니다.

짧고 달콤함:

git config --global diff.tool meld

가 용할구성니다합을 하도록 구성됩니다.meld ( 인수, diff에 대한 .) 지원:meldGit에 내장되어 있습니다.)

그런 다음, 텍스트 디프 대신 그래픽 디프를 원한다면, 간단히 호출합니다.git difftoolgit diff(둘 다 동일한 인수를 사용합니다.)당신의 경우:

git difftool master..devel

한에 한 차등 적용을 사항과 " 를 사용하려면 다음을 하십시오.-d또는--dir-diff을 선택할 수 .git difftool예를 들어 XYZ 지점에 있을 때 이 지점과 ABC 지점의 차이점이 무엇인지 확인하고 싶을 때 다음을 실행합니다.

git difftool -d ABC

부터는 git v1.7.11을 할 수 .git difftool --dir-diff디렉터리 diff를 수행합니다.이는 https://github.com/wmanley/git-meld 스크립트 없이도 멜드와 잘 작동합니다.

깃 구성

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

저는 또한 이 문제가 귀찮아서 작업 트리 또는 준비 영역에 대한 임의 커밋을 더 편안하게 분산할 수 있는 깃멜드를 만들었습니다.당신은 그것을 https://github.com/wmanley/git-meld 에서 찾을 수 있습니다.Mark의 스크립트와 약간 비슷하지만 임의의 커밋, 준비 영역 또는 작업 디렉토리를 다른 것과 비교할 수 있습니다.작업 트리와 비교하는 항목 중 하나가 작업 트리인 경우에는 변경 내용이 손실되지 않도록 읽기-쓰기도 수행합니다.

를 사용하는 것이 중요합니다.git difftool -dMeld에서 작업 파일을 편집하고 저장할 수 있습니다.이렇게 하려면 다음과 같이 일부 분기를 현재 작업 트리와 비교해야 합니다.

git difftool -d branchname

왼쪽 및 오른쪽 디렉터리가 모두 /tmp에 있다는 것이 Meld에 표시됩니다.그러나 오른쪽 디렉터리에 있는 파일은 실제로 현재 작업 디렉터리에 있는 파일에 대한 심볼 링크입니다(Windows에는 적용되지 않음).따라서 멜드에서 바로 편집할 수 있으며 저장하면 변경 내용이 작업 디렉토리에 저장됩니다.

그러나 더 흥미로운 옵션은 현재 작업 중인 dir와 stash를 비교하는 것입니다.다음과 같이 입력하면 됩니다.

git difftool -d stash

그런 다음 일부 변경 사항을 사용하지 않고도 저장(왼쪽 창)에서 현재 작업 복사본(오른쪽 창)으로 전송할 수 있습니다.git stash pop/apply그리고 이 명령에 의해 유발될 수 있는 성가신 충돌 해결을 피할 수 있습니다.

저는 그것이 stash로 워크플로우를 크게 향상시킬 수 있다고 생각합니다.변경사항을 저장에서 작업 복사본으로 단계적으로 전송하고 원하는 경우 다른 변경사항을 추가하여 하나씩 커밋할 수 있습니다.

다른 답변에서는 현재 git 저장소에서 직접 이 작업을 수행할 방법이 없는 것처럼 보이지만, 임시 디렉터리에 두 커밋의 트리를 추출하고 이에 대해 meld를 실행하여 meld가 종료되면 두 디렉터리를 모두 제거하는 스크립트를 작성하는 것은 쉽습니다.

http://gist.github.com/498628

물론, 혼합을 통해 변경한 내용은 모두 손실되지만, 차이점을 간략하게 설명하기에는 상당히 좋은 것 같습니다.

이를 위한 쉬운 방법은 다음과 같습니다.git reset --soft:

목표: branch_a와 branch_b의 차이점을 meld로 비교

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

Meldon macOS의 경우, 이것을 당신의 컴퓨터에 추가합니다.~/.gitconfigmacOS 애플리케이션의 관리자가 권장하는 대로 youseb:

[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구성(원하는 경우).

@구텐예의 답변은 자동 탈출 및/또는 다른 문제로 인해 저에게 잘 되지 않았습니다.zsh.

Git V1.7.9에서는 명령줄 없이 두 가지 커밋을 비교할 수 있습니다.

git gui' 편집 옵션 글로벌: " 병합 도구 사용: meld"에서 구성해야 합니다.

gitk를 시작하고 커밋을 선택한 후 다른 커밋 > "diff this --> selected"를 마우스 오른쪽 단추로 클릭합니다.'patch' 오른쪽에서 파일 > "external diff"를 클릭합니다.

meld가 시작되고 오른쪽에 여전히 선택된 첫 번째 커밋이 표시됩니다.

언급URL : https://stackoverflow.com/questions/2006032/view-differences-of-branches-with-meld

반응형