meld와 분기의 차이점을 보시겠습니까? 있습니까? 현재 다음 단계를 수행합니다. 복사 작업의 폴더 이름

로 HEAD와 현재 상태의 차이를 볼 수 있음을 알고 있습니다 meld .. 하지만 내가 어떻게 예를 들어 지점 사이의 차이 볼 수 있습니다 masterdevel융합에와 있습니까?

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

  1. 복사 작업의 폴더 이름 바꾸기
    예를 들어를 mv /projectA /projectA_master)
  2. 프로젝트를 다시 복제
    git clone url
  3. devel지점으로 전환
    cd projectA && git -b devel origin/devel
  4. meld로 차이점보기
    meld /projectA_Master projectA

동일한 결과를 얻을 수있는 쉬운 방법이 없습니까? 변경 사항을 검토하기 위해서만 필요하며 주로 병합하지는 않습니다.



답변

또한이 문제가 성가신 것을 발견하여 작업 트리 또는 준비 영역에 대한 임의의 커밋을보다 편안하게 비교할 수있는 git meld를 만들었습니다. https://github.com/wmanley/git-meld 에서 찾을 수 있습니다 . Mark의 스크립트와 비슷하지만 임의의 커밋 또는 준비 영역 또는 작업 디렉토리를 다른 커밋과 비교하는 데 사용됩니다. 비교하는 것 중 하나가 작업 트리 인 경우 읽기-쓰기이므로 변경 사항을 잃지 않습니다.


답변

짧고 달콤한 :

git config --global diff.tool meld

이것은 Git이 melddiff 도구 로 사용하도록 구성합니다 . (명령 줄 인수를 지정할 필요가 없습니다. 지원 meld은 Git에 내장되어 있습니다.)

그런 다음 텍스트가 아닌 그래픽 차이를 원한다면 대신 대신 호출하면 git difftool됩니다 git diff(둘 다 동일한 인수를 사용합니다). 귀하의 경우 :

git difftool master..devel

업데이트 : 한 번에 한 파일 씩 차이를 원하지 않지만 두 분기 사이의 모든 변경 사항과 함께 meld의 “하위 디렉토리”보기를 사용하려면 -d또는에 --dir-diff대한 옵션을 확인하십시오 git difftool. 예를 들어, XYZ 지점에 있고 ABC 지점과 다른 지점 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

답변

사용 git difftool -d하면 여전히 Meld에서 작업 파일을 편집 하고 저장할 있다고 말하는 것이 중요 합니다 . 이를 위해 일부 분기를 현재 작업 트리와 비교해야합니다.

git difftool -d branchname

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

더 흥미로운 옵션은 현재 작업 디렉토리와 숨김을 비교하는 것입니다. 간단히 다음과 같이 입력하면됩니다 :

git difftool -d stash

그런 다음 git stash pop/apply이 명령으로 유발 될 수있는 번거로운 충돌 해결을 사용하지 않고 스 태쉬 (왼쪽 창)에서 현재 작업 사본 (오른쪽 창)으로 일부 변경 사항을 전송할 수 있습니다.

나는 그것이 숨김으로 워크 플로우를 크게 향상시킬 수 있다고 생각합니다. 숨김에서 작업 사본으로 변경 사항을 점차적으로 전송하고 하나씩 변경하여 원하는 경우 다른 변경 사항을 도입 할 수 있습니다.


답변

다른 답변에서 git 저장소에 직접이 작업을 수행 할 수있는 방법이없는 것처럼 보이지만 두 커밋의 트리를 추출하는 스크립트를 작성하는 것은 쉽습니다 ( 다른 질문에 대한 답변 덕분입니다 ). meld가 종료 될 때 두 디렉토리를 모두 제거하여 임시 디렉토리에 meld를 실행하십시오.

http://gist.github.com/498628

물론, meld를 통해 변경 한 내용은 잃어 버릴 수 있지만 차이점에 대한 간단한 개요는 매우 좋습니다.


답변

이 작업을 수행하는 쉬운 방법은 다음을 사용하는 것 git reset --soft같습니다.

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

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

답변

git V1.7.9에서는 커맨드 라인없이 두 커밋을 비교할 수 있습니다.

‘git gui’편집 옵션, 전역 : “병합 도구 사용 : meld”에서 구성해야합니다.

gitk를 시작 하고 커밋을 선택한 다음 다른 커밋을 마우스 오른쪽 버튼으로 클릭하고 ” diff this-> selected “를 클릭하십시오 . ‘patch’아래에서 파일> ” external diff “를 마우스 오른쪽 버튼으로 클릭하십시오 .

meld 가 시작되어 여전히 선택된 것을 표시합니다. 먼저 오른쪽에 커밋합니다.