Git 커뮤니티가 나란히 차이점을 무시하는 이유는 무엇입니까?


33

나는 Windows, SVN, Tortoise SVN 및 Beyond Compare를 사용했습니다. 코드 검토를위한 훌륭한 조합이었습니다.

이제 OSX와 Git을 사용합니다. Gitx 및 DiffMerge와 함께 bash 스크립트를 함께 처리하여 간신히 받아 들일 수있는 해결책을 제시했습니다.

나는이 설정 및 이와 유사한 설정을 1 년 넘게 혼동했습니다. 나는 또한 Github diff viewer와 Gitx diff viewer를 사용해 보았으므로 기회를주지 않은 것은 아닙니다.

Git으로 훌륭한 일을하는 많은 똑똑한 사람들이 있습니다. 전체 파일을 볼 수있는 옵션이 나란히 다른 이유는 무엇입니까? 둘 다 사용한 사람들과 함께, 나는 적어도 빠른 확인 이상으로 단일 +/-보기를 좋아하는 사람에 대해 들어 본 적이 없습니다.


Ditos Compare 에 Diyond Compare 를 사용하도록 TortoiseGit을 설정할 수 있습니다.이 경우 전체 파일을 나란히 볼 수 있습니다 (그러나이 설정을 개인적으로 테스트하지는 않았지만 요즘에는 계획 중 하나입니다).
wildpeaks

1
한마디로 Windows, SVN 및 Beyond Compare를 사용합니다. 그러나 이제는 Ubuntu + Git을 사용합니다. 운 좋게도, 나는 여전히 오랜 친구 인 Beyond Compare를 사용할 수 있습니다. 우분투에서 잘 작동합니다. 그리고 무료는 아니지만, 나에게 모든 페니의 가치가 있습니다. :) 죄송합니다. OSX에서 솔루션을 제공 할 수는 없지만 사람들이 Beyond Compare가 Windows 전용 솔루션이라고 생각하지 않기를 바랍니다.
David S

7 년 후에도 여전히 이런 느낌이 들지만 가장 복잡한 경우를 제외하고는 인라인 차이를 선호하도록 스스로 훈련했습니다. 그런 다음 나는 오랜 친구 인 Beyond Compare를 break습니다.
Kyle Heironimus

답변:


19

나는 이것에 대해 Linus에 대해 말할 수는 없지만 git이 difftools를 처리하는 방식은 철학적으로 말하면 매우 unixish입니다. git은 잘하는 일을 수행하고 더 복잡한 diffing 및 merging을 포함한 다른 모든 것에 외부 도구를 사용합니다.

나는 OS X에서 git과 함께 DiffMerge를 사용하며 bash 쉘에 의존하지 않아도됩니다. 까다로 웠지만 git의 difftool 및 mergetool 설정을 구성하여 DiffMerge를 직접 호출했으며 이제 뛰어난 시각적 타사 도구에서 diff를보고 병합 충돌을 해결할 수 있습니다.

내 구성은 다음과 같습니다.

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge

1
이것은 괜찮지 만 여러 파일이 변경되면 git이 파일을 보여 주기로 한 번에 하나씩 볼 수 있습니다. 다른 것을 열려면 하나를 닫아야합니다. 그래서 모든 파일을 한 번에보고 싶을 때 bash 스크립트도 사용합니다.
Kyle Heironimus

"한 번에 모두보기"라는 관점에서 무엇을 기대해야할지 모르겠습니다. 그러나 확인하십시오 git diff --stat. 변경된 줄 수와 함께 변경된 모든 파일의 멋진 그래픽 목록을 제공합니다.
Dan Ray

이것에 대해 조금 더 생각하면 "한 번에 모두 열 수 있습니다"한 번에 몇 개의 파일을 편집 / 볼 수 있습니까? 주어진 순간에 하나의 파일 만 볼 수 있습니다. 나는 당신이 원하는 것을 얻지 못한다고 생각합니다.
Dan Ray

2
가장 좋은 예는 Beyond Compare의 TortoiseSVN입니다. 예를 들어, 동료의 마지막 커밋에 3 개의 파일이 변경된 경우 3 개의 파일이 목록에 표시됩니다. 그런 다음 해당 파일을 클릭하여 차이점을 확인할 수 있습니다. 또한 각각 다른 파일을 가진 3 개의 별도 창을 열 수 있습니다. 그런 다음 변경 사항을 검토하는 데 필요에 따라 그들 사이를왔다 갔다 할 수 있습니다. 기본적으로, 그것은 당신이 당신의 vcs에 의해 지시 된 순서대로 순차적으로가 아니라, 당신 자신의 용어로 모든 변화를 볼 수있게합니다.
Kyle Heironimus

1
알다시피, 당신은 타워를 확인해야합니다. 그것은 내가 본 것 중 최고의 Mac git gui이며, 당신이 말하는 것을 더 많이 할 것입니다. git-tower.com
Dan Ray

16

SVN 자체는 나란히 솔루션을 제공하지 않습니다. 나열된 것은 타사 도구입니다. git의 대부분의 것들과 마찬가지로, 이것은 매우 구성 가능하며 즉시 도구 지원이 뛰어납니다. 당신은 가지고 있습니까 mergetool은 설정? 그렇지 않다면, 당신은해야합니다. 그렇다면을 시도하십시오 git difftool. 그런 다음 맨 페이지 에서 구성 옵션을 확인하십시오.

KDiff3은 병합 도구로 사용되며 추가 플랫폼 구성이 git difftool필요하지 않기 때문에 병합 도구로 사용합니다 .


2
실제로 difftool에서는 문제가 없지만 많은 파일을 볼 때 여전히 실패합니다. 한 번에 하나씩 열어야합니다. 한 번에 모두 열려면 bash 스크립트 해커를 사용해야합니다.
Kyle Heironimus

9

* 닉스 철학입니다. 이 도구를 사용하는 많은 사람들이 터미널에서 많은 시간을 보냅니다. 터미널에서는 키보드에서 마우스로 손을 움직일 필요가 없습니다. 시각적 차이 / 병합 도구보다 +/- 스타일을 선호한다는 것을 알고 있습니다. 주로 차이점 만 신경 쓰기 때문입니다. 나는 변화와 변화 자체 주위의 3-4 줄에 관심이 있습니다. 더 도움이되는 것은 실제로 도움이되지 않는 추가 정보입니다.

Diff는 일반적으로 변경된 내용을 빨리 보는 데 사용됩니다. 코드를 읽지 마십시오.

나는 GNU 시스템의 기본 diff에 비해 시각적 diff 도구가 매우 유용하다는 것을 결코 발견하지 못했습니다. 그들이 나를 위해하는 일은 마우스로 엉망이되어 파일을 스크롤하고 사용자 인터페이스를 찾은 다음 명령 줄로 돌아가서 diff에서 볼 수있는 문제에 대해 뭔가를 할 수 있도록 노력하는 것입니다. .


1
vimdiff는 괜찮습니다. 일반적으로 부품 만 보여줍니다. 병합에 사용합니다. 마우스가 필요하지 않습니다.
대안

8
동료의 변경 사항을 본 적이 있습니까? 익숙하지 않은 코드 영역에? 나는 항상하고 모든 코드를 나란히하지 않고 상상할 수는 없습니다. 나에게 +/-는 be에 의한 변경에는 좋지만 다른 사람에게는 좋지 않습니다. 당신이 틀리거나 나쁘거나 아무 말도하지 않습니다. 그냥 물어 보는 건데.
Kyle Heironimus

1
나는 종종 내가 익숙하지 않은 지역에서 동료가 변경 한 코드를 반송합니다. 나는 3 ~ 4 번이나 나란히 사용했고, 없이는 쉽게 할 수 있다고 생각한다. 선호하는 운영 스타일에 따라 다릅니다. 그것은 당신을 위해 작동합니다, 나는 그것이 불필요하다고 생각합니다.
Brian Knoblauch

0

개인적 사용으로 대답은 대부분 diff가 중요하지 않을 정도로 짧다는 것입니다.

코드 검토를 위해 모든 기능을 갖춘 코드 검토 도구를 사용하여 주석, 구문 강조 표시 및 나란히보기와 같이 내가 좋아하는 모든 것을 제공합니다.

git diff커밋 할 코드를 준비 할 때 거의 독점적으로 사용합니다 . 이 경우 diff는 충분히 작고 최근에 발생하여 상황을 기억하기 위해 컨텍스트를 볼 필요가 없습니다.

언어 컨텍스트를 인식하는 Phabricator 또는 IDE 통합 도구를 선택하는 코드 검토 도구입니다 . github의 pull-request 흐름은 코드 검토에 끔찍하다고 생각합니다. 주로 나란히 통합되지 않은 diff를 보여주기 때문입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.