prosource

마스터와 브랜치 간에 정보를 주고받습니까?

probook 2023. 5. 3. 21:32
반응형

마스터와 브랜치 간에 정보를 주고받습니까?

는 제 레포에 시험을위한 .test-branch 것입니다.Github.

내가 만약에 나의Github하고 이 계정을 합니다.test-branch정보가 표시됩니다.

This branch is 1 commit ahead and 2 commits behind master

제 질문은 다음과 같습니다.

  1. 로컬로 합니까(이). 굳이 열 가 없습니다.Github보기 위해)?
  2. 다음을 사용하여 분기 간의 차이를 확인할 수 있습니다.

    git diff master..test-branch
    

    는사용을 사용합니다.Meld가 선호하는 것내가선호는것하:것)는하):

    git difftool master..test-branch
    

    그런데 앞뒤 커밋을 따로 볼 수 있는 방법이 있을까 해서요.I.E.: 하나의 커밋은 스스로 앞서고 두 의 커밋은 스스로 뒤에 있다는 을 보여주는 방법이 있습니까?

1부

질문 1에 대한 답변으로 두 분기를 비교하고 각 분기가 다른 분기보다 몇 개나 앞서 있는지 보여주는 방법을 찾았습니다(질문 1에 대한 보다 일반적인 답변).

로컬 분기의 경우:git rev-list --left-right --count master...test-branch

원격 분기의 경우:git rev-list --left-right --count origin/master...origin/test-branch

이렇게 하면 다음과 같은 출력이 제공됩니다.

2 1

은 다음을 의미합니다: "와하여". "비교:master,test-branch는 앞에 12입니다. "1 커은앞두에고밋 2 있다뒤니습에은커밋"

분기와 를 들어 분기 원비 수교 있도 다습 니할와origin/master...master브랜치를 합니다(여기서 로여커횟확인수는하기밋를분컬기여(확▁to인)here▁find).master보다 앞는 원격 상대보다 앞/뒤에 있습니다.

2부

질문의 두 번째 부분에 답하기 위해, 해결책은 여러분이 정확히 무엇을 성취하기를 원하는지에 달려 있습니다.

커밋 보기

을 .git rev-list양쪽에서 고유한 커밋의 정확한 목록을 반환합니다. 대체--count의논쟁과 같은 하는 것--pretty=oneline실행할 전체 명령 만들기:

git rev-list --left-right --pretty=oneline master...test-branch

이렇게 하면 다음과 같은 출력이 생성됩니다.

<bba27b56ad7072e281d529d4845e4edf877eb7d7 unique commit 2 on master
<dad0b69ec50ea57b076bfecabf2cc7c8a652bb6f unique commit 1 on master
>4bfad52fbcf0e60d78d06661d5c06b59c98ac8fd unique commit 1 on test-branch

에는 여서모커셰다같음습다니과는어밋기든이 나옵니다.<또는>에서 찾을 수 오른쪽, 여기서 왼나다니타냅분를기있는오쪽, 른여기또는수을쪽찾왼▁to(▁it다▁which,여▁indicate).master또는test-branch각각)

코드 보기

어느 분기에서나 발견되는 모든 새 커밋의 차이를 보려면 두 단계로 이 작업을 수행해야 합니다.

  1. 가장 최근의 공통 조상 정의
$ git merge-base master test-branch
c22faff7468d6d5caef217ac6b82f3ed95e9d902
  1. 위에서 얻은 커밋 샤에 대한 diff 또는 branch(일반적으로 짧은 형식이면 됩니다)

마스터에서만 발견되는 모든 커밋의 차이를 표시

git diff c22faff7..master

테스트 분기에서만 발견된 모든 커밋의 차이를 표시

git diff c22faff7..test-branch

먼저 로컬에서 지원되는 수정사항 수를 확인하려면 다음 작업을 수행해야 합니다.git fetch원격에서 최신 정보를 확인할 수 있습니다.

의 기본 출력git status에서는 앞에 있거나 뒤에 있는 수정본의 수를 알려주지만 일반적으로 이 항목이 너무 장황합니다.

$ git status
# On branch master
# Your branch and 'origin/master' have diverged,
# and have 2 and 1 different commit each, respectively.
#
nothing to commit (working directory clean)

선호합니다git status -sb:

$ git status -sb
## master...origin/master [ahead 2, behind 1]

사실 나는 이것을 간단히 비유합니다.git s상태를 확인하기 위해 사용하는 주요 명령입니다.

의 "사전 수정사항"에서 차이를 확인하는 방법master에서 "비하인드 리비전"을 제외할 수 있습니다.origin/master:

git diff master..origin/master^

의 "뒷면 수정사항"에서 차이를 확인하는 방법origin/master에서 "사전 수정사항"을 제외할 수 있습니다.master:

git diff origin/master..master^^

앞이나 뒤에 5개의 수정본이 있는 경우 다음과 같이 쓰는 것이 더 쉬울 수 있습니다.

git diff master..origin/master~5
git diff origin/master..master~5

갱신하다

앞/뒤 수정사항을 보려면 다른 분기를 추적하도록 분기를 구성해야 합니다.원격 저장소를 복제할 때와 다음을 사용하여 분기를 푸시한 후의 기본 동작입니다.git push -u remotename branchname제 버전은 1.8.4.3인데 제가 기억하는 한 이렇게 작동하고 있습니다.

버전 1.8부터는 다음과 같이 추적 분기를 설정할 수 있습니다.

git branch --track test-branch

버전 1.7부터는 구문이 다릅니다.

git branch --set-upstream test-branch

Git 2.5+를 사용하면 이제 분기에 푸시하도록 구성된 모든 분기에 대해 앞/뒤를 볼 수 있는 다른 옵션이 있습니다.

git for-each-ref --format="%(push:track)" refs/heads

예를 들어, 아직 푸시하지 않은 커밋을 확인하는 방법을 보여주는 "누르지 않은 Git 커밋 보기"를 참조하십시오.

git log @{push}..

현재 피쳐 분기에 대한 마스터 이전 커밋 수를 얻으려면 다음 명령을 사용합니다.

git rev-list --left-right --count master...$(git branch --show-current)

사용할 수도 있습니다.awk조금 더 예쁘게 하기 위해:

git rev-list --left-right --count  origin/develop...feature-branch | awk '{print "Behind "$1" - Ahead "$2""}'

항상 오리진을 먼저 가져온 다음 분기를 비교하는 별칭을 만들 수도 있습니다.

commit-diff = !"git fetch &> /dev/null && git rev-list --left-right --count"

깃 가져오기를 수행한 후 깃 상태를 실행하여 로컬 분기가 분기의 원격 버전보다 앞에 있거나 뒤에 있는 커밋 수를 표시할 수 있습니다.

그러나 다른 분기의 앞 또는 뒤에 있는 커밋 수는 표시되지 않습니다.당신의 옵션은 github을 보거나 위에 링크된 Vimhsa와 같은 솔루션을 사용하는 것입니다: 모든 repo에 대한 Git 상태.

언급URL : https://stackoverflow.com/questions/20433867/git-ahead-behind-info-between-master-and-branch

반응형