programing

로컬 Git 분기와 원격 분기를 비교하는 방법

oldcodes 2023. 4. 29. 09:53
반응형

로컬 Git 분기와 원격 분기를 비교하는 방법

어떻게 볼 수 있습니까?diff지역 지점과 원격 지점 사이에?

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

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

물론 원격 추적 지점을 말하기 위해서는 당신이 해야 할 필요가 있습니다.git fetch먼저 원격 저장소에 있는 분기에 대한 최신 정보가 있어야 합니다.

지점을 하려면 원격추분를업하려면다트음합입니다야해력을데이적을 .git fetch처음과 그 다음:

git diff <mainbranch_path> <remotebranch_path>

넌 할 수 있다.git branch -a 및 을 제거함).remotes/원격 지점 이름에서.

예:git diff main origin/main, 즉 지점입니다

지정된 분기에 있는 경우 추적 중인 업스트림 분기와 작업 복사본을 비교하려면 다음을 사용합니다.

git diff @{upstream}

현재 HEAD를 업스트림 분기와 비교하려면 다음을 수행합니다(고마워 @Arijun).

git diff @ @{upstream}

업스트림이 설정되지 않은 경우 다음을 사용할 수 있습니다.@{push}푸시 설정된 분기에 대한 차이를 얻으려면(@Arijun의 코멘트에서도 참조):

git diff @{push}

답변을 통해 수정사항 지정을 위한 Git 설명서는 다음과 같습니다.

<branchname>@{upstream}를 들어, 예를 들어, 기호입니다.master@{upstream},@{u}
접미사 .@{upstream} 이름 형태의 지짧이으(은형태름로))으로<branchname>@{u}은 ( )에서 지정한 를 말합니다.branchname로 설정됩니다(으)로 됨).branch.<name>.remote그리고.branch.<name>.merge가되었습니다. 행방불명branchname기본값은 현재 값입니다.

제1종

git branch -a

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

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

그러면 차이를 보여줍니다.

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

다음의 결과를 훨씬 더 잘 이해하고 있습니다.

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

로컬 지점을 누르면 무엇이 삭제되고 무엇이 추가되는지 보여줍니다.물론 그 반대일 뿐이지만, 저에게는 더 읽기 쉽고, 앞으로 무슨 일이 일어날지 보는 것이 더 편합니다.

쉬운 방법:

git fetch
git log -p HEAD..FETCH_HEAD

이렇게 하면 먼저 기본 원격(원본)에서 변경 사항을 가져옵니다.리포지토리를 복제할 때 자동으로 만들어집니다.명시적으로 지정할 수도 있습니다.git fetch origin master.

그리고나서git log와 방금하는 데 -p(패치 생성) 옵션이 차이점을 보여줍니다.)

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

Git in shell을 사용할 때, 저는 먼저 주위를 둘러보면서 방향을 잡는 것을 좋아합니다.

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

$ 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-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이 없는

$ 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

설명서: 깃브런치

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

저는 ▁the를 비교하고 .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
[ . . . ]

이렇게 하는 거예요.

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

로컬 분기와 원격 분기를 비교합니다.

을 비교하고 과 같은 .git pull.

git fetch
git diff FETCH_HEAD

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

작업 지점을 개발하도록 하고 로컬 개발 지점과 원격 개발 지점을 구분합니다.이 경우 구문은 다음과 같아야 합니다.

git diff remotes/origin/development..development

또는

git fetch origin
git diff origin/development

파일 이름만 변경된 것으로 차이점을 확인하려면 다음을 사용합니다.

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

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

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

에는 제경에두번리있습다니이모컨라는 두 번째 리모컨이 있습니다.heroku그것은 아닙니다.origin그리고 동기화되지 않았기 때문에 실행하려고 할 때 이 오류가 발생했습니다.git diff master heroku/master:

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

은 다른 할 때 아니면 을 접 때 이 이 것 할 시 도 법 다git diff master..heroku/master:

치명적: 잘못된 수정본 '마스터..헤로쿠/마스터'

은 솔션에서원이명언로시급다니습했에서 원격 이름을 .git fetch달기전을 git diff의 경우 경우내:

$ git fetch heroku
$ git diff master heroku/master
git difftool <commit> .

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

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

git diff tool 1db1ef2490733c1877ad0fb5e8536d2935566341.

(그리고 새로운 커밋과 비교할 필요가 없는 한, 당신은 gitfetch가 필요하지 않습니다.

시도:

git diff origin HEAD

현재 지역 지사의 데이터를 분산하고 싶다고 가정합니다.HEAD지점에 합니다.그리고 당신이 지역 지점에 있다고 가정하면요.:)

마스터 브랜치에 변화가 있는지 궁금합니다...

  1. 먼저 지점을 변경해야 합니다(이 지점 아래에 이미 있는 경우에는 이 작업을 수행할 필요가 없습니다!).

    git checkout master
    
  2. 다음 명령을 사용하여 마스터 분기에서 수정된 파일을 확인할 수 있습니다.

    git status
    
  3. 분기 나열

    git branch -a
    
    • 명인이
      리모트
  4. 차이점 찾기

    git diff origin/master
    

git diff 'master' 'testlocalBranch'

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

여기에 이미지 설명 입력

여기에 이미지 설명 입력

이 오류가 계속 발생했습니다.

git diff main origin/master
fatal: ambiguous argument 'main': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

솔루션:해야만 했어요git push먼저(원격 및 로컬 모두 최신 상태여야 하므로) 다음과 같이 작동합니다.

git diff master origin/master

이것은 꽤 간단합니다.사용할 수 있는 항목:git diff remote/my_topic_branch my_topic_branch

에▁where디my_topic_branch주제 분기입니다.

여러분이 이미설가보겠다니습정해고다를 origin원격 저장소로 사용할 수 있습니다.그리고나서,

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

는 FWIW를 사용이 합니다.--compact-summary선택.

man git diff

diffstat에서 파일 생성 또는 삭제("새로" 또는 "사라진", 기호 링크인 경우 "+l", 모드 변경("+x" 또는 "-x")과 같은 확장 헤더 정보의 요약을 출력합니다.정보는 파일 이름 부분과 그래프 부분 사이에 배치됩니다.--stat을 의미합니다.

예.

git diff $(current_branch) origin/$(current_branch) 

세우다

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

HEAD@{upstream}을(를) 사용하여 헤드 디핑

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

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가 실행되지 않습니다.

언급URL : https://stackoverflow.com/questions/1800783/how-to-compare-a-local-git-branch-with-its-remote-branch

반응형