질문자 :johannix
한동안 분리된 두 가지를 병합하고 어떤 파일이 수정되었는지 알고 싶습니다.
이 링크를 발견했습니다: http://linux.yyz.us/git-howto.html 이것은 매우 유용했습니다.
내가 만난 지점을 비교하는 도구는 다음과 같습니다.
-
git diff master..branch
-
git log master..branch
-
git shortlog master..branch
두 분기 간에 다른 파일만 볼 수 있는 "git status master..branch"와 같은 것이 있는지 궁금합니다.
새 도구를 만들지 않고 지금 수행할 수 있는 가장 가까운 방법은 다음과 같습니다(물론 파일이 두 번 이상 수정된 경우 반복 표시됨).
-
git diff master..branch | grep "^diff"
제가 놓친 부분이 있는지 궁금합니다...
현재 브랜치를 master
브랜치와 비교하려면:
$ git diff --name-status master
두 분기를 비교하려면:
$ git diff --name-status firstbranch..yourBranchName
공식 문서 git diff
에 대한 더 많은 옵션이 있습니다(특히 --name-status
옵션).
JasonSmith노력하다
$ git diff --stat --color master..branchName
이렇게 하면 동일한 수의 줄을 계속 사용하면서 각 변경 사항에 대해 더 많은 정보를 얻을 수 있습니다.
다른 방법으로 병합하는 경우 분기를 뒤집으면 차이점을 더욱 명확하게 파악할 수 있습니다.
$ git diff --stat --color branchName..master
Gerry또한 git은 저렴하고 쉽게 분기할 수 있음을 명심하십시오. 병합이 문제가 될 수 있다고 생각되면 병합을 위한 분기를 만듭니다. 따라서 master
에 병합하려는 변경 사항이 있고 ba
가 master의 코드가 필요한 분기인 경우 다음을 수행할 수 있습니다.
git checkout ba git checkout -b ba-merge git merge master .... review new code and fix conflicts.... git commit git checkout ba git merge ba-merge git branch -d ba-merge git merge master
최종 결과는 내 분기를 망치기 전에 폐기 분기에서 병합을 시도해야 한다는 것입니다. 내 자신이 ba-merge
분기를 삭제하고 다시 시작할 수 있습니다.
Eric Anderson누군가가 두 분기에서 diff 파일을 생성하려고 하는 경우:
git diff master..otherbranch > myDiffFile.diff
Paulino IIIGUI 기반 방법도 있습니다.
gitk 를 사용할 수 있습니다.
운영:
$ gitk --all
분기의 커밋을 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 이 커밋 표시를 선택합니다.
- 다른 분기의 커밋을 마우스 오른쪽 버튼으로 클릭하고 Diff this -> 표시된 커밋 또는 Diff 표시된 커밋 -> this 를 선택 합니다.
그러면 오른쪽 하단 패널에 변경된 파일 목록이 표시되고 왼쪽 하단 패널에 diff 세부 정보가 표시됩니다.
Yantao Xie이 경우 혼합을 사용하는 또 다른 옵션:
git difftool -d master otherbranch
이렇게 하면 파일 간의 차이점을 볼 수 있을 뿐만 아니라 특정 파일을 가리키고 클릭하는 쉬운 방법을 제공합니다.
rsilva4git을 사용하면 병합을 시도하고 결과가 마음에 들지 않는 경우 문제에서 쉽게 물러날 수 있습니다. 잠재적인 문제를 미리 찾는 것보다 쉬울 수 있습니다.
David Plumpton특정 파일에서만 변경 사항을 찾고 있다면 다음을 수행하십시오.
git diff branch1 branch2 -- myfile1.js myfile2.js
branch1은 선택 사항이며 branch1이 제공되지 않으면 기본적으로 현재 분기(현재 있는 분기)가 고려됩니다. 예:
git diff master -- controller/index.js
mannuscript공동으로 작업하거나 한 번에 여러 기능에 대해 작업할 때 업스트림 또는 마스터에 분기에 포함되지 않은 작업이 포함되어 기본 diff에 잘못 표시되는 것이 일반적입니다.
업스트림이 이동했을 수 있는 경우 다음을 수행해야 합니다.
git fetch git diff origin/master...
git diff master를 사용하면 관련 변경 사항이 포함되거나 포함되지 않을 수 있습니다.
Alex BrownWim Deblauwe두 가지가 있습니다.
- A (당신이 일하는 지점)
- B(비교할 다른 분기)
지점 A에 있으면 다음을 입력할 수 있습니다.
git diff --color B
그러면 이것은 당신에게 출력을 줄 것입니다
이에 대한 중요한 점은
녹색 텍스트는 Branch A에 있는 내부입니다.
빨간색 텍스트는 분기 B에 있습니다.
selftaught91여기에는 많은 답변이 있지만 일반적으로 사용하는 것을 추가하고 싶었습니다. 비교하고 싶은 지점 중 하나에 있는 경우 일반적으로 다음 중 하나를 수행합니다. 이 대답을 위해 우리는 우리가 우리의 보조 지점에 있다고 말할 것입니다. 어떤 보기를 선택하느냐에 따라 그 당시에 필요한 보기가 달라지지만 저는 대부분 두 가지 옵션 중 두 번째 옵션을 사용합니다. 첫 번째 옵션은 원본 복사본으로 되돌리려는 경우 유용할 수 있습니다. 어느 쪽이든 둘 다 작업을 완료합니다!
이것은 마스터를 우리가 있는 브랜치(보조)와 비교하고 원래 코드는 추가된 라인이 되고 새 코드는 제거된 라인으로 간주됩니다.
git diff ..master
또는
이것은 또한 master를 우리가 있는 브랜치(보조)와 비교하고 원래 코드는 이전 라인이 되고 새 코드는 새 라인이 됩니다.
git diff master..
Vim DieselGUI 솔루션을 찾는 사람들을 위해 Git Cola 에는 아주 좋은 "Branch Diff Viewer( Diff -> Branches.. )"가 있습니다.
kerner1000Github/Github Enterprise를 사용하는 경우 저장소 경로 /compare
를 눌러 웹 UI를 사용할 수 있습니다(예: https://github.com/http4s/http4s/compare ) . 비교할 브랜치/커밋/태그를 선택할 수 있습니다.
/compare/{x1}...{x2}
의 github 인터페이스에 표시됩니다. 여기서 x2
와 x1
은 비교하려는 분기/커밋/태그입니다(예: https://github). .com/http4s/http4s/compare/main...dotty
Github 문서 에서 더 많은 것을 볼 수 있습니다.
Valy Diagit diff revision_n revision_m
revision_n
및 revision_m
git show revision_m
과 동일하게 출력됩니다.
Jovo Skorupan시각적 diff를 사용할 수도 있습니다.
예를 들어 Sourcetree 를 사용하는 경우 로그 보기에서 두 개의 커밋을 선택하기만 하면 됩니다 .
(개인적으로 대부분의 경우 GUI를 사용하는 것을 선호하며 GUI 옵션에 익숙하지 않은 사람들을 위해 게시합니다.)
sonnyGUI를 좋아하고 Windows를 사용하는 경우 여기에 쉬운 방법이 있습니다.
- WinMerge 다운로드
- 두 분기를 다른 폴더로 확인하십시오.
- WinMerge를 사용하여 폴더별 비교를 수행하십시오. 브랜치 중 하나가 작업 중인 브랜치인 경우에도 쉽게 수정할 수 있습니다.
Marius Matioc예를 들어 TortoiseGit 을 사용하여 변경된 파일의 분기를 쉽게 비교할 수도 있습니다. 참조 찾아보기를 클릭하고 비교하려는 분기를 선택하기만 하면 됩니다.
당신이 마스터와 지사를 비교한다면 예를 들어, 당신은 당신이 마스터로 분기를 병합하기로 결정한 경우 마스터에서 변경 될 파일의 결과 목록으로 받게됩니다.
당신이 당신의 분기 및 마스터와-지점으로 마스터를 비교하는 경우 다른 결과가있을 것이라는 점을 Remmber.
Piotr출처 : http:www.stackoverflow.com/questions/822811/showing-which-files-have-changed-between-two-revisions