etc./StackOverFlow

로컬 Git 브랜치를 원격 브랜치와 비교하는 방법

청렴결백한 만능 재주꾼 2023. 5. 4. 22:15
반응형

질문자 :mrblah


로컬 브랜치와 원격 브랜치 diff 은 어떻게 볼 수 있습니까?



git diff <local branch> <remote>/<remote branch>

예를 들어, git diff main origin/main 또는 git diff featureA origin/next

물론 말했다 원격 추적 브랜치 중 당신은 할 필요가 git fetch 첫째; 원격 저장소의 분기에 대한 최신 정보가 필요합니다.


Jakub Narębski

원격 추적 분기를 업데이트하려면 git fetch 를 입력한 다음 다음을 입력해야 합니다.

 git diff <mainbranch_path> <remotebranch_path>

git branch -a 모든 분기(로컬 및 원격)를 나열한 다음 목록에서 분기 이름을 선택할 수 있습니다(원격 분기 이름에서 remotes/

예: git diff main origin/main (여기서 "main"은 로컬 메인 브랜치이고 "origin/main"은 원격, 즉 원점과 메인 브랜치입니다.)


meder omuraliev

첫 번째 유형

 git branch -a

사용 가능한 분기 목록을 가져옵니다. 출력에서 다음과 같은 것을 볼 수 있습니다.

 * master remotes/main/master remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/mt remotes/upstream/master remotes/upstream/mt

그런 다음 diff를 표시하십시오.

 git diff --stat --color remotes/main/master..origin/master git diff remotes/main/master..origin/master

YSN

주어진 브랜치에 있고 작업 복사본 을 추적 중인 업스트림 브랜치와 비교하려면 다음을 사용하세요.

 git diff @{upstream}

현재 HEAD 를 업스트림 브랜치와 비교 하려면 ( @Arijoon 감사합니다):

 git diff @ @{upstream}

업스트림이 설정되지 않은 경우 @{push} 를 사용하여 푸시하도록 설정된 분기에 대한 diff를 얻을 수 있습니다( @Arijoon 의 주석에서도 참조).

 git diff @{push}

이 답변 에 따라 개정판 지정에 대한 git 문서에는 다음이 있습니다.

<branchname>@{upstream} , 예: master@{upstream} , @{u}
접미사 @{upstream} BRANCHNAME 행 (약칭 <branchname>@{u} )에 의해 지정된 분기되는 지점을 의미 branchname 구성의 상단을 토대로 설정된다 ( branch.<name>.remotebranch.<name>.merge ). 누락된 branchname 기본적으로 현재 이름으로 설정됩니다.


Andrew Grimm

나는 다음의 출력을 훨씬 더 잘 이해합니다.

git diff <remote-tracking branch> <local branch>

이것은 내가 로컬 브랜치를 푸시하면 무엇이 삭제되고 추가될 것인지를 보여줍니다. 물론 그 반대일 뿐이지만 저에게는 더 읽기 쉽고 앞으로 일어날 일을 보는 것이 더 편안합니다.


manfer

쉬운 방법:

 git fetch git log -p HEAD..FETCH_HEAD

이것은 먼저 기본 원격(원본)에서 변경 사항을 가져옵니다. 이것은 리포지토리를 복제할 때 자동으로 생성됩니다. 당신은 또한 명시적일 수 있습니다: git fetch origin master .

그런 다음 git log 를 사용하여 현재 브랜치를 방금 가져온 브랜치와 비교합니다. ( -p (패치 생성) 옵션은 차이점을 보여줍니다.)


Brent Faust

이것이 내가 하는 방법입니다.

 # To update your local. git fetch --all

이것은 원격에서 모든 것을 가져올 것이므로 차이점을 확인할 때 원격 분기와 차이점을 비교합니다.

 # To list all branches git branch -a

위의 명령은 모든 분기를 표시합니다.

 # To go to the branch you want to check difference git checkout <branch_name> # To check on which branch you are in, use git branch (or) git status

이제 다음과 같이 차이점을 확인할 수 있습니다.

 git diff origin/<branch_name>

이것은 로컬 브랜치를 원격 브랜치와 비교합니다.


Sahith Vibudhi

TLDR : git diff <local branch> <remote branch>

셸에서 Git을 사용할 때 먼저 주위를 둘러보며 방향을 잡는 것을 좋아합니다.

다음은 모든 분기 를 표시하는 명령입니다.

 $ git branch -a # (or git branch --all) * my-branch master remotes/origin/some-branch remotes/origin/HEAD -> origin/master remotes/origin/my-branch remotes/origin/some-other-branch remotes/origin/master

여기에 두 개의 로컬 분기( my-branchmaster )와 네 개의 원격 분기( some-branch , some-other-branch , mastermy-branch )가 있습니다.

또한, 별표 옆에 my-branch 난 그 지점에서 현재 해요 사실 신호 (당신은 또한 명령을 사용하여 알고 것이다 git status 출력 것을 : On branch my-branch. ).

참고: Git Bash 셸의 원격 분기는 빨간색으로 표시되고 로컬 분기는 녹색으로 표시됩니다.

원격 브랜치 를 표시하려면 다음을 수행하십시오.

 $ git branch -r # (or git branch --remotes) origin/some-branch origin/HEAD -> origin/master origin/my-branch origin/some-other-branch origin/master

로컬 분기만 표시하려면 git branch -l 을 사용하고 싶을 수 있지만 이는 완전히 다른 명령입니다. 로컬 분기 를 표시하려면 옵션이 없는 git branch 를 사용하십시오.

 $ git branch * my-branch master

기본 분기 옵션에 대한 검토를 완료하기 위해 예상과 달리 필터링 --list 가 있습니다. 다음과 같은 패턴으로 사용하십시오.

 $ git branch --list 'my*' * my-branch

--list -a-r 옵션과 결합할 수도 있지만 그에 따라 패턴을 조정해야 합니다( 기억하세요: 원격 분기는 "remotes"로 시작함 ).

예시:

 # This will show all branches (local & remote) that start with my $ git branch --list 'my*' -a * my-branch # Better: the pattern includes the remote $ git branch --list '*my*' -a * my-branch remotes/origin/my-branch

문서: git-branch

이제 사용 가능한 모든 분기에서 두 분기 를 비교할 수 있습니다(두 개의 로컬 또는 두 개의 원격을 비교할 수도 있습니다).

여기에서 로컬과 원격 my-branch 비교하고 있습니다. 동기화되어 있으므로 출력이 표시되지 않습니다.

 $ git diff my-branch remotes/origin/my-branch

참고: 따옴표 없이 분기의 전체 이름을 제공해야 합니다.

my-branch 를 원격 master 와 비교할 수도 있습니다. my-branch 가 마스터 분기에 병합되지 않았기 때문에 여기에서 일부 출력을 얻습니다.

 $ git diff my-branch remotes/origin/master diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js index fd79b98..df3d798 100644 --- a/src/controllers/call.controller.js +++ b/src/controllers/call.controller.js @@ -261,7 +261,7 @@ function callController() { /* * Function: doCall [ . . . ]

user2314737

작업 분기를 개발로 설정 하고 로컬 개발 분기와 원격 개발 분기를 구별하려고 합니다. 이 경우 구문은 다음과 같아야 합니다.

 git diff remotes/origin/development..development

또는

 git fetch origin git diff origin/development

Ratna Halder

변경된 파일 이름으로 차이점을 확인하려면 다음을 사용하십시오.

 git diff --name-status <remote-branch> <local-branch>

그렇지 않으면 두 분기 간의 모든 차이점이 표시됩니다.

 git diff <remote-branch> <local-branch>

Sarvesh Kesharwani

git pull 하려는 항목을 비교하는 경우 다음과 같은 축약형 답변이 있습니다.

 git fetch git diff FETCH_HEAD

첫 번째 명령은 현재 분기에 해당하는 원격 분기를 파악합니다. FETCH_HEAD 참조에서 해당 계산의 인공물입니다. 그런 다음 두 번째 명령은 해당 참조를 사용하여 현재 분기에 있는 것과 비교합니다.


William Entriken

제 경우에는 origin아닌 heroku 라는 두 번째 리모컨 git diff master heroku/master 를 실행하려고 할 때 이 오류가 발생했습니다.

치명적: 모호한 인수 'heroku/master': 작업 트리에 알 수 없는 개정 또는 경로가 없습니다.

또는 다른 접근 방식을 시도할 때 git diff master..heroku/master :

치명적: 잘못된 개정판 'master..heroku/master'

솔루션은 제 경우에 git diff 를 실행하기 전에 git fetch 에서 원격 이름을 명시적으로 언급했습니다.

 $ git fetch heroku $ git diff master heroku/master

fagiani

git difftool <commit> .

이렇게 하면 원하는 커밋을 로컬 파일과 비교합니다. 끝에 있는 점을 잊지 마세요(로컬의 경우).

예를 들어 로컬 파일을 일부 커밋과 비교하려면 다음을 수행합니다.

자식 difftool 1db1ef2490733c1877ad0fb5e8536d2935566341 .

(그리고 새로운 커밋과의 비교가 필요하지 않는 한 git fetch가 필요하지 않습니다)


Izik

노력하다:

 git diff origin HEAD

현재 로컬 지점의 HEAD 를 원점과 비교하고 싶다고 가정합니다. 그리고 당신이 로컬 지점에 있다고 가정합니다. :)


Sourabh Pandit

예시

 git diff 'master' 'testlocalBranch'

WebStorm 과 같은 편집기를 사용하는 경우 파일을 마우스 오른쪽 버튼으로 클릭하고 분기와 비교를 선택한 다음 분기를 입력/선택할 수 있습니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력


Kurkula

내 마스터 브랜치에 변경 사항이 있는지 궁금합니다.

  1. 먼저 브랜치를 변경해야 합니다(이미 이 브랜치에 속해 있는 경우 이 작업을 수행할 필요가 없습니다!):

     git checkout master
  2. 다음 명령으로 마스터 브랜치에서 어떤 파일이 수정되었는지 확인할 수 있습니다.

     git status
  3. 지점 나열

     git branch -a
    • 주인
      리모컨/원본/마스터
  4. 차이점 찾기

     git diff origin/master

Ali Atakan

이것은 아주 간단합니다. 다음을 사용할 수 있습니다. git diff remote/my_topic_branch my_topic_branch

여기서 my_topic_branch 는 주제 분기입니다.


Elisha Senoo

origin 을 원격 저장소로 설정했다고 가정해 보겠습니다. 그 다음에,

git diff <local branch> <origin>/<remote branch name>


Tirtha

설정

git config alias.udiff 'diff @{u}'

HEAD@{upstream}로 HEAD 구별하기

 git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this git udiff

임의의 원격 분기와 구별하기

이것은 귀하의 제목("해당 원격")에 있는 질문에 대한 답변입니다. 브랜치의 업스트림으로 구성되지 않은 "원격"과 비교하려면 직접 대상을 지정해야 합니다. 다음을 사용하여 모든 원격 분기를 볼 수 있습니다.

git branch -r

다음을 사용하여 구성된 모든 원격을 볼 수 있습니다.

git remote show

다음과 같이 단일 원격(예: 원점)에 대한 분기/추적 구성을 볼 수 있습니다.

git remote show origin

적절한 원점 분기를 결정했으면 일반 diff를 수행하십시오. :)

git diff [MY_LOCAL] MY_REMOTE_BRANCH


DylanYoung

Visual Studio 2019 에서는 가져오기만 하면 됩니다. 코드를 당기지 마십시오.

이것이 내가 한 일이다. Beyond Compare를 사용할 수 있도록 .gitconfig 파일에 아래를 추가했습니다.

 File location: C:\Users\[username]\.gitconfig

아래에 추가됨

 [diff] tool = bc [difftool "bc"] path = c:/Program Files/Beyond Compare 4/bcomp.exe

명령 프롬프트를 열고 작업 디렉터리로 이동합니다. 나는 로컬 dev 브랜치를 원격 dev 브랜치와 비교하기 위해 아래를 제공했습니다.

 git difftool dev origin/dev --dir-diff

그러면 Beyond Compare가 열리고 파일이 다른 디렉토리가 열립니다. 변경 사항이 없으면 Beyond Compare는 실행되지 않습니다.


Ziggler

HEAD에서 원본/마스터로의 다른 커밋을 계산하려면 다음을 수행합니다.

 git remote update git rev-list HEAD..origin/master --count

현재 HEAD 커밋 해시 ID를 얻으려면:

 git rev-parse HEAD

원격 오리진/마스터 커밋 해시 ID를 얻으려면:

 git rev-parse origin/master

Shahbaz

출처 : http:www.stackoverflow.com/questions/1800783/how-to-compare-a-local-git-branch-with-its-remote-branch

반응형