prosource

두 리비전 간에 변경된 파일 표시

probook 2023. 4. 13. 20:56
반응형

두 리비전 간에 변경된 파일 표시

잠시 떨어져 있던 두 지점을 병합하고 어떤 파일이 수정되었는지 알고 싶습니다.

http://linux.yyz.us/git-howto.html(web.archive.org에 접속)이라는 링크를 발견했습니다.이 링크는 매우 도움이 되었습니다.

지금까지 접한 브랜치 비교 툴은 다음과 같습니다.

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

'기트 상태 마스터' 같은 게 있나 해서branch"를 클릭하면 두 브랜치 간에 다른 파일만 표시됩니다.

새로운 툴을 작성하지 않고, 이것이 현재 가능한 가장 가까운 것이라고 생각합니다(파일을 여러 번 수정했을 경우 당연히 반복이 표시됩니다).

  • git diff master..branch | grep "^diff"

내가 놓친 게 있나 해서...

와 「」를 한다.main★★★★★★★★★★★★★★★★★★:

$ git diff --name-status main

임의의 2개의 브랜치를 비교하려면:

$ git diff --name-status firstbranch..yourBranchName

외에도 여러 .git diff(구체적으로는 옵션)에 기재되어 있습니다.

해라

$ git diff --stat --color master..branchName

이렇게 하면 동일한 수의 행을 사용하면서도 각 변경 사항에 대한 자세한 정보를 볼 수 있습니다.

다른 방법으로 병합할 경우 분기를 뒤집어서 차이를 더 명확하게 파악할 수도 있습니다.

$ git diff --stat --color branchName..master

할 수 있습니다.git은 저렴하고 쉽게 분기할 수 있습니다.마지 만약 '만약에'가master머지하고 싶은 변경사항이 있습니다.ba마스터의 코드를 필요로 하는 브랜치입니다.을 사용하다

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츠키다

2개의 브런치에서 diff 파일을 생성하려고 하는 경우:

git diff master..otherbranch > myDiffFile.diff

GUI 기반의 방식도 있습니다.

gitk를 사용할 수 있습니다.

  1. 실행:

    $ gitk --all
    
  2. 분기의 커밋을 오른쪽 클릭하여 팝업메뉴에서 [Mark this commit]를 선택합니다.

  3. 다른 브랜치의 커밋을 오른쪽 클릭하여 [Diff this -> marked commit]또는 [Diff marked commit -> this]를 선택합니다.

오른쪽 하단 패널에 변경된 파일 목록이 표시되고 왼쪽 하단 패널에 다른 세부 정보가 표시됩니다.

이 경우 meld를 사용하는 다른 옵션이 하나 더 있습니다.

git difftool -d master otherbranch

이를 통해 파일 간의 차이를 확인할 수 있을 뿐만 아니라 특정 파일을 쉽게 가리키고 클릭할 수 있습니다.

git을 사용하면 결과가 마음에 들지 않을 경우 쉽게 머지를 시도하고 문제를 회피할 수 있습니다.잠재적인 문제를 미리 찾는 것보다 더 쉬울 수 있습니다.

또한 특정 파일 간의 변경만 원하는 경우 다음을 수행합니다.

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1은 옵션이며 branch1이 제공되지 않으면 현재 브랜치(브랜치)가 기본적으로 고려됩니다.예:

git diff master -- controller/index.js

콜라보레이션으로 작업하는 경우 또는 동시에 여러 기능에 대해 작업하는 경우 업스트림 또는 마스터에 브런치에 포함되지 않은 작업이 포함되어 기본 차이에서 잘못 표시되는 경우가 많습니다.

업스트림이 이동했을 가능성이 있는 경우는, 다음의 조작을 실시할 필요가 있습니다.

git fetch
git diff origin/master...

git diff master를 사용하는 것만으로 관련 변경을 포함하거나 포함하지 못할 수 있습니다.

IntelliJ IDEA 를 사용하고 있는 경우는, 어느 브랜치와 현재의 동작 브랜치를 비교할 수도 있습니다.상세한 것에 대하여는, http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 를 참조해 주세요.이것은 무료 에디션에서도 이용하실 수 있습니다.

여기에 많은 답이 있지만, 저는 제가 자주 사용하는 것을 추가하고 싶었습니다.당신이 비교하고 싶은 지점 중 하나에 있다면, 나는 보통 다음 중 하나를 수행합니다.이 답변을 위해 우리는 두 번째 지점에 있다고 말할 것이다.어떤 뷰가 필요한지 여부에 따라 다르지만 대부분의 경우 두 번째 옵션을 사용합니다.첫 번째 옵션은 원본 복사본으로 되돌리려고 할 때 편리할 수 있습니다.어느 쪽이든 둘 다 작업이 완료됩니다.

이것은 마스터를 현재 브랜치(세컨더리)와 비교합니다.원래 코드는 추가된 행으로, 새로운 코드는 삭제된 행으로 간주됩니다.

git diff ..master

또는

또, 마스터를 현재의 브랜치(세컨더리)와 비교합니다.원래의 코드는 낡은 회선이 되고, 새로운 코드는 새로운 회선이 됩니다.

git diff master..

예를 들어 두 갈래가 있다.

  • A(작업 중인 지점)
  • B(비교하는 다른 브랜치)

지점 A에 있기 때문에 입력할 수 있습니다.

git diff --color B

그러면 이 결과를 얻을 수 있습니다.

여기에 이미지 설명 입력

여기서 중요한 건

  1. 녹색 텍스트가 지점 A에 있습니다.

  2. B 지점에 빨간색 텍스트가 있습니다.

Github / Github Enterprise 를 사용하고 있는 경우는, 다음의 URL 를 클릭해 Web UI 를 사용할 수 있습니다./compare예를 들어 https://github.com/http4s/http4s/compare과 같은 저장소 경로의 경우비교할 지점/커밋/태그를 선택할 수 있습니다.

그리고 diff는 다음 URL의 github 인터페이스에 표시됩니다./compare/{x1}...{x2}어디있나x2그리고.x1비교하는 브랜치/커밋/태그입니다(예:https://github.com/http4s/http4s/compare/main...dotty).

자세한 내용은 Github Doc를 참조하십시오.

Git Cola는 GUI 솔루션을 찾고 계신 분들을 위해 매우 좋은 "Branch Diff Viewer (Diff - > Branches...)"를 갖추고 있습니다.

git diff revision_n revision_m

한다면revision_n그리고.revision_m연속된 커밋이 되면 다음과 같이 출력은 다음과 같습니다.git show revision_m

시각적 차이를 사용할 수도 있습니다.

예를 들어 Sourcetree를 사용하는 경우 로그 뷰에서 임의의 2개의 커밋을 선택할 수 있습니다.

(개인적으로는 대부분의 경우 GUI를 사용하는 것을 선호하며, GUI 옵션에 익숙하지 않은 분들을 위해 게시합니다.)

두 지점 사이에 변경된 모든 파일명의 목록을 출력하는 파이프라인을 만들었습니다.이 기능은 다른 응답으로 직접 차이를 보는 것이 아니라 다른 프로그램에 연결하는 데 유용합니다.

yes n | git difftool main..develop | grep V |sed "s#Viewing ([0-9]*/[0-9]*): ##g"

또는 단순히 현재 브랜치와 다른 브랜치 간의 차이를 원하는 경우:

yes n | git difftool develop | grep V |sed "s#Viewing ([0-9]*/[0-9]*): ##g"

git difftool developdifftool에서 파일을 열라는 메시지가 나타납니다.사용하고 있다yes n모든 것을 거부하고 텍스트의 형식을 단순하게 하다grep그리고.sed.

GUI가 마음에 들어 Windows 를 사용하고 있는 경우는, 다음의 간단한 방법을 참조해 주세요.

  1. WinMerge 다운로드
  2. 두 분기를 다른 폴더로 체크 아웃합니다.
  3. WinMerge를 사용하여 폴더별로 비교합니다.작업 중인 브랜치 중 하나라도 쉽게 수정할 수 있습니다.

또한 TortoiseGit 등을 사용하여 변경된 파일의 브랜치를 쉽게 비교할 수 있습니다.참조 참조를 클릭하고 비교할 분기를 선택하십시오.

를 들어 브런치를 마스터비교한 경우 브런치를 마스터Marge할 경우 마스터에서 변경되는 파일목록이 표시됩니다.

master와 your-branchyour-branch와 master를 비교하면 결과가 다르다는 점에 유의하십시오.

언급URL : https://stackoverflow.com/questions/822811/showing-which-files-have-changed-between-two-revisions

반응형