로컬 자식 분기와 원격 분기를 비교하는 방법은 무엇입니까?


1049

diff로컬 브랜치와 원격 브랜치 간을 어떻게 알 수 있습니까?


5
이 질문은 나중에 다시 요청되었습니다. 좋은 답변이 있습니다 : stackoverflow.com/questions/11935633/…
rustybeanstalk

3
예 : git diff master origin / master (여기서 master는 로컬 마스터 분기이고 origin / master는 원격 마스터 분기 임)
Dung

@klyngbaek,이 답변 은 특히 ​​;-)

원래 git diff HEAD origin/HEAD의도 한 것과 다른 원격 지점을 가리키는 것으로 보았습니다. 전체 분기 이름을 사용하면 예상대로 작동합니다.
Deanna

답변:


591

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

git diff <masterbranch_path> <remotebranch_path>

당신이 할 수있는 git branch -a다음 목록에서 지점 이름을 선택 (로컬 및 원격) 모든 지점을 나열 (단지 제거 remotes/원격 지사 이름에서.

예 : git diff master origin/master(여기서 "master"는 로컬 마스터 분기이고 "origin / master"는 원격 원점 및 마스터 분기입니다.)


23
그는 (전 페치해야 할 수도 있습니다 git fetch)
Houssem 바드

그것은 bash의 변경 사항을 몰래 보여줍니다 .VS 코드와 같은 IDE에서 모든 변경 사항을 열 수있는 방법이 있습니까?
Harsh Phoujdar

@Harsh Phoujdar .git / .gitconfig 파일에 아래 코드를 추가 [diff] tool = vscode [difftool] prompt = false [difftool "vscode"] cmd = \"C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe\" \"$LOCAL\" \"$REMOTE\" --diff --wait trustExitCode = false하십시오 code.exe 파일의 경로가 올바른지 확인하십시오.
Aman

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

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

물론 할 수 있습니다 말했다 지점 원격 추적 당신이해야 할 git fetch첫 번째; 원격 저장소의 브랜치에 대한 최신 정보가 필요합니다.


98
더 정확하게 말하면 : git diff <local branch> <remote> / <remote branch>
nalply

38
나는 보통 git diff <remote>/<remote branch> <local branch>내 푸시가 원격 저장소에 어떤 역할을하는지 알고 있습니다.
Michał Tatarynowicz

76
git diff origin업스트림 브랜치와 비교하면 훨씬 더 짧습니다 .
Ludder

12
git fetch처음에 추가 해주세요. 저와 같은 초보자에게는 문제가 있습니다
Saif

1
이봐, 안 그래 git diff <remote>/<remote branch> <local branch>? 그렇지 않으면, 나는 컴퓨터에서 추가 및 삭제 스위치를 얻습니다 (git 버전 2.7.0.windows.2)
Martín Coll

183

첫 번째 유형

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

1
그것은 안 ...보다는 ..?
Eliran Malka

9
나는 이것을 이것을 정답으로 선택했을 것입니다. 귀하의 지시에 따라 로컬 지점과 원격 지점의 차이점을 볼 수있었습니다. 감사!
Tass

1
나는 보통 로컬 참조로 git log origin/my_branch..취할 것 HEAD입니다. 주로 당신이 의미하는 것입니다.
Rudie

4
나의 겸손한 견해에서 최고의 답변을 얻으려면 +1하십시오. 복제 된 소스의 "원격"이미지를 동기화하기 위해 "fetch"를 언급 한 경우 +2에 해당합니다. 통계 / 색상 개요 단계가 특히 유용합니다.
bvj

3
하나 개의 답변을 주셔서 감사합니다 마지막으로 조금 더 이상의 결과 7, 8 명의 "답변"밖으로 일했다 fatal: bad revisionfatal: ambiguous argument. 내가 원했던 것은 다른 지점에서 같은 파일의 diff를 보는 것입니다. 예, 그렇습니다. :-) git diff remotes/origin/<base branch> <current branch> -- <filename>git 1.8.3.1에서 훌륭하게 작동
Steve Bonds

143

특정 지점에 있고 추적중인 업스트림 지점과 비교하려면 다음을 사용하십시오.

git diff @{upstream}

업스트림이 설정되지 않은 경우 (일반적으로 의견 에 Arijoon 에게 감사드립니다 )

git diff @{push}

씨의 이 답변 에 대한 자식 문서 개정을 지정은 있다 :

<branchname>@{upstream}예를 들어 master@{upstream}, 분기 이름 @{u}
의 접미사 @{upstream}(약식 <branchname>@{u})는로 지정된 분기 branchname가 ( branch.<name>.remote및로 구성됨) 위에 빌드되도록 설정된 분기를 나타냅니다 branch.<name>.merge. 누락 branchname은 현재 기본값으로 설정됩니다.


10
아주 좋은 답변은 조금 부족합니다. 줄을로 변경하십시오 git diff @ @{upstream}. 추가 항목 @HEAD현재 위치이므로 HEAD지점에서 추적하는 업스트림과 비교 합니다. @{push}업스트림 대신 사용할 수 있습니다.
Arijoon

3
가장 좋은 대답은 리모콘을 가져올 필요가 없습니다. 더 많은 투표가 필요합니다!
jcomeau_ictx 1

3
생선 껍질에서 나는 결과를 얻었다 : fatal: ambiguous argument '@upstream': unknown revision or path not in the working tree. git diff @\{upstream\}대신 사용해야 했다. 😥
랜던 쿤

당신은 필요 git fetch, 다른 사람이 아무것도하지 않는다, 쇼없고 출력은 첫째; repo 오리진에서 파일을 삭제하여 테스트하고 로컬에서이 명령을 실행했습니다. ..가 가져온 후에 만 ​​작동합니다.

또한 주어진 답변에는 로컬 변경 사항이 포함됩니다. 때로는 이것이 바람직하지만 다른 경우에는 그렇지 않습니다.
Deanna

44

나는 다음의 결과를 훨씬 잘 이해한다.

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

로컬 분기를 밀면 무엇이 삭제되고 추가 될지 보여줍니다. 물론 그것은 역으로 동일하지만 나에게는 더 읽기 쉽고 앞으로 일어날 일을 보는 것이 더 편합니다.


git diff <local branch> <remote-tracking branch> 또는 git diff <remote-tracking branch> <local branch>와 동일한 결과를 얻습니다.
user2928048

32

쉬운 방법 :

git fetch
git log -p HEAD..FETCH_HEAD

먼저 기본 원격 (원점)에서 변경 사항을 가져옵니다. 리포지토리를 복제하면 자동으로 생성됩니다. 명시적일 수도 있습니다 : git fetch origin master.

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


14

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

#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>

로컬 지사와 원격 지사를 비교합니다


2
git fetch --all은 모든 리모컨에서 모든 것을 가져옵니다. 기본 원점 원격을 사용하는 경우 git fetch이면 충분합니다.
Christophe Keller

8 년이 지나면 단계를 올바르게 설명하는 완전한 답변을 얻습니다. 명령을 얻기 위해 --help를 수행 할 수 있습니다. 그래서 그들을 이해하는 것입니다.
gdbj

11

경우, 구문은 다음과 같이해야한다고, 당신의 작업 지점이 개발이다하자 지역 개발 분기 및 원격 개발 지점을 구별 할 git diff remotes/origin/development..development
또는

git fetch origin git diff origin/development


11

tl; dr :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

여기서 I는 두 로컬 브랜치 (가지고 my-branchmaster원격) 및도 4 ( some-branch, some-other-branch, master, 및 my-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있지만 그에 따라 패턴을 조정해야합니다 ( 원격 브랜치는 "원격"으로 시작 함 ). 예:

# 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

문서 : https://git-scm.com/docs/git-branch

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

여기서는 로컬과 remote을 비교 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
[ . . . ]

11

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

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

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

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


9

현재 분기와 원하는 것을 비교하는 경우 간단한 대답이 있습니다 git pull.

git fetch
git diff FETCH_HEAD

첫 번째 명령은 현재 브랜치에 해당하는 원격 브랜치를 알아냅니다. FETCH_HEAD참조 에서 해당 계산의 결과물 . 그런 다음 두 번째 명령은 해당 참조 비교와 현재 분기의 비교를 사용합니다.


6

나는이 질문에 이미 몇 가지 대답이 있다는 것을 알고 있지만 대부분을 시도 할 때 이상한 오류가 발생했습니다.

내 경우에는 내가이 두 번째 원격 호출 heroku입니다 하지origin 과 내가를 실행하려고이 오류가 발생했습니다 동기화되지 않았기 때문에 git diff master heroku/master:

fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.

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

fatal: bad revision 'master..heroku/master'

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

$ git fetch heroku
$ git diff master heroku/master

같은 문제로 다른 사람들을 도울 수 있기를 바랍니다.


4
git difftool <commit> .

원하는 커밋을 로컬 파일과 비교합니다. 끝에있는 점을 잊지 마십시오 (로컬의 경우).

예를 들어, 로컬 파일을 커밋과 비교하려면 다음을 수행하십시오.

git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.

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


커밋과 푸시 전에 비교할 수 있기 때문에 tis가 흥미 롭다고 생각합니다. 불행히도 Windows에서 vimdiff는 표시하기가 좋지 않습니다. notepad ++와 같이 더 나은 것을 사용하는 방법이 있습니까?
Stefano Scarpanti

3

git diff 'master' 'testlocalBranch'

webstorm과 같은 편집기를 사용하는 경우 파일 선택을 마우스 오른쪽 버튼으로 클릭하고 지점과 비교하고 지점을 입력 / 선택하십시오.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오


2
170 개 이상의 공감대가있는 7.5 년 전에 수락 된 답변에 추가되는 것은 무엇입니까?
Mark Rotteveel

이것은 mrblah 사용자 또는 허용 된 답변에 대한 의견을 추가 한 유사한 사용자를위한 것입니다. 구문은 예제와 다르며 예제는 초보자의 관점에서 더 많은 것을 도와줍니다.
쿠 쿨라

2
이 경우 해당 답변에 대한 의견이 있어야합니다.
라킷

1

VS 2019에서는 FETCH를 수행하십시오. 코드를 당기지 마십시오.

이것이 내가 한 일입니다. 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가 시작되지 않습니다.


0

마스터 지점 에 어떤 변화가 있는지 궁금합니다 ...

  1. 먼저 지사를 변경해야합니다 (이미이 지사에있는 경우이를 수행 할 필요가 없습니다).

자식 체크 아웃 마스터

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

자식 상태

  1. 가지를 나열

자식 분기 -a

  • 마스터
    리모컨 / 원산지 / 마스터
  1. 차이점을 찾으십시오

git diff origin / master


0

설정

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


0

이것은 매우 간단합니다. 당신이 사용할 수있는:git diff remote/my_topic_branch my_topic_branch

my_topic_branch토픽 브랜치는 어디에 있습니까 ?


0

이미 origin원격 저장소로 설정했다고 가정 해 봅시다 . 그때,

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


0

시험:

git diff origin HEAD

현재 지역 지점의 HEAD원점 을 비교하려고한다고 가정합니다 . 그리고 당신이 현지 지점에 있다고 가정합니다. :)


-3

TortoiseGit (Git 용 GUI 제공) 을 사용하는 경우 Git repo 폴더를 마우스 오른쪽 단추로 클릭 한 다음을 클릭 할 수 있습니다 Git Sync.

선택하지 않은 경우 비교할 지점을 선택할 수 있습니다. 차이 커밋을 볼 수있는 것보다. 커밋을 마우스 오른쪽 단추로 클릭 한 다음 Compare with previous revision차이점을 나란히 볼 수도 있습니다 .원격 및 로컬 분기를 비교하는 거북이 git sync

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