diff
로컬 브랜치와 원격 브랜치 간을 어떻게 알 수 있습니까?
git diff HEAD origin/HEAD
의도 한 것과 다른 원격 지점을 가리키는 것으로 보았습니다. 전체 분기 이름을 사용하면 예상대로 작동합니다.
diff
로컬 브랜치와 원격 브랜치 간을 어떻게 알 수 있습니까?
git diff HEAD origin/HEAD
의도 한 것과 다른 원격 지점을 가리키는 것으로 보았습니다. 전체 분기 이름을 사용하면 예상대로 작동합니다.
답변:
원격 추적 분기를 업데이트하려면 git fetch
먼저 다음 을 입력해야합니다 .
git diff <masterbranch_path> <remotebranch_path>
당신이 할 수있는 git branch -a
다음 목록에서 지점 이름을 선택 (로컬 및 원격) 모든 지점을 나열 (단지 제거 remotes/
원격 지사 이름에서.
예 : git diff master origin/master
(여기서 "master"는 로컬 마스터 분기이고 "origin / master"는 원격 원점 및 마스터 분기입니다.)
git fetch
)
[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 파일의 경로가 올바른지 확인하십시오.
git diff <local branch> <remote>/<remote branch>
예를 들어 git diff master origin/master
, 또는git diff featureA origin/next
물론 할 수 있습니다 말했다 지점 원격 추적 당신이해야 할 git fetch
첫 번째; 원격 저장소의 브랜치에 대한 최신 정보가 필요합니다.
git diff <remote>/<remote branch> <local branch>
내 푸시가 원격 저장소에 어떤 역할을하는지 알고 있습니다.
git diff origin
업스트림 브랜치와 비교하면 훨씬 더 짧습니다 .
git fetch
처음에 추가 해주세요. 저와 같은 초보자에게는 문제가 있습니다
git diff <remote>/<remote branch> <local branch>
? 그렇지 않으면, 나는 컴퓨터에서 추가 및 삭제 스위치를 얻습니다 (git 버전 2.7.0.windows.2)
첫 번째 유형
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
...
보다는 ..
?
git log origin/my_branch..
취할 것 HEAD
입니다. 주로 당신이 의미하는 것입니다.
fatal: bad revision
나 fatal: ambiguous argument
. 내가 원했던 것은 다른 지점에서 같은 파일의 diff를 보는 것입니다. 예, 그렇습니다. :-) git diff remotes/origin/<base branch> <current branch> -- <filename>
git 1.8.3.1에서 훌륭하게 작동
특정 지점에 있고 추적중인 업스트림 지점과 비교하려면 다음을 사용하십시오.
git diff @{upstream}
업스트림이 설정되지 않은 경우 (일반적으로 의견 에 Arijoon 에게 감사드립니다 )
git diff @{push}
씨의 이 답변 에 대한 자식 문서 개정을 지정은 있다 :
<branchname>@{upstream}
예를 들어master@{upstream}
, 분기 이름@{u}
의 접미사@{upstream}
(약식<branchname>@{u}
)는로 지정된 분기branchname
가 (branch.<name>.remote
및로 구성됨) 위에 빌드되도록 설정된 분기를 나타냅니다branch.<name>.merge
. 누락branchname
은 현재 기본값으로 설정됩니다.
git diff @ @{upstream}
. 추가 항목 @
은 HEAD
현재 위치이므로 HEAD
지점에서 추적하는 업스트림과 비교 합니다. @{push}
업스트림 대신 사용할 수 있습니다.
fatal: ambiguous argument '@upstream': unknown revision or path not in the working tree
. git diff @\{upstream\}
대신 사용해야 했다. 😥
git fetch
, 다른 사람이 아무것도하지 않는다, 쇼없고 출력은 첫째; repo 오리진에서 파일을 삭제하여 테스트하고 로컬에서이 명령을 실행했습니다. ..가 가져온 후에 만 작동합니다.
나는 다음의 결과를 훨씬 잘 이해한다.
git diff <remote-tracking branch> <local branch>
로컬 분기를 밀면 무엇이 삭제되고 추가 될지 보여줍니다. 물론 그것은 역으로 동일하지만 나에게는 더 읽기 쉽고 앞으로 일어날 일을 보는 것이 더 편합니다.
이것이 내가하는 방법입니다.
#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>
로컬 지사와 원격 지사를 비교합니다
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-branch
및 master
원격) 및도 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
[ . . . ]
변경된 파일 이름으로 차이점을 보려면 다음을 사용하십시오
git diff --name-status <remote-branch> <local-branch>
.
그렇지 않으면 두 가지의 모든 차이점이 표시됩니다.
git diff <remote-branch> <local-branch>
나는이 질문에 이미 몇 가지 대답이 있다는 것을 알고 있지만 대부분을 시도 할 때 이상한 오류가 발생했습니다.
내 경우에는 내가이 두 번째 원격 호출 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
같은 문제로 다른 사람들을 도울 수 있기를 바랍니다.
git difftool <commit> .
원하는 커밋을 로컬 파일과 비교합니다. 끝에있는 점을 잊지 마십시오 (로컬의 경우).
예를 들어, 로컬 파일을 커밋과 비교하려면 다음을 수행하십시오.
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.
(그리고 새로운 커밋과 비교할 필요가 없다면 git fetch가 필요하지 않습니다)
예
git diff 'master' 'testlocalBranch'
webstorm과 같은 편집기를 사용하는 경우 파일 선택을 마우스 오른쪽 버튼으로 클릭하고 지점과 비교하고 지점을 입력 / 선택하십시오.
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가 시작되지 않습니다.
git config alias.udiff 'diff @{u}'
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
TortoiseGit (Git 용 GUI 제공) 을 사용하는 경우 Git repo 폴더를 마우스 오른쪽 단추로 클릭 한 다음을 클릭 할 수 있습니다 Git Sync
.
선택하지 않은 경우 비교할 지점을 선택할 수 있습니다. 차이 커밋을 볼 수있는 것보다. 커밋을 마우스 오른쪽 단추로 클릭 한 다음 Compare with previous revision
차이점을 나란히 볼 수도 있습니다 .