원격 (원점) Git 리포지토리의 변경 사항을 확인하는 방법은 무엇입니까?


249

질문

다음 워크 플로를 수행하기위한 Git 명령은 무엇입니까?

대본

리포지토리에서 복제하여 로컬 리포지토리에 자체 커밋을 수행했습니다. 그동안 동료들은 원격 저장소에 커밋했습니다. 이제 다음을 원합니다.

  1. 원격 저장소에 다른 사람의 새로운 커밋이 있는지 확인하십시오 origin.

  2. 마지막 풀 이후에 원격 저장소에 3 개의 새 커밋이 있었다 말해, 나는 즉, DIFF 원격 저장소의 커밋 싶습니다 HEAD~3으로 HEAD~2, HEAD~2HEAD~1HEAD~1함께 HEAD.

  3. 원격으로 무엇이 바뀌 었는지 알고 난 후에 다른 사람들로부터 최신 커밋을 얻고 싶습니다.

지금까지 나의 발견

2 단계의 경우 : 나는 캐럿 표기법을 알고 HEAD^, HEAD^^등을 물결표 표기법 HEAD~2, HEAD~3

3 단계 : 즉, 나는 단지 git pull.



당신이 링크하고있는 @Daniele는 훌륭하고 심지어 사용자 정의 가능한 bash 스크립트와 함께 제공됩니다. +1
gorbysbm 2016 년

답변:


255

git fetch origin최신 버전을 가리 키도록 저장소의 원격 분기를 업데이트 할 수 있습니다. 리모컨에 대한 차이점 :

git diff origin/master

예, 캐럿 표기법도 사용할 수 있습니다.

원격 변경 사항을 승인하려면 다음을 수행하십시오.

git merge origin/master

34
diff는 반대로 보입니다. git diff HEAD origin/masterdiff는 원격 변경 사항을 수락하면 적용 대상을 표시하므로 사용 하기가 더 쉽습니다 .
cbliard

2
"git fetch origin"과 "git show-branch * master"가 유용했습니다.
레 Massiot

159
git remote update && git status 

온이 발견 대답 하는 풀 힘내에서 필요한 경우 확인

git remote update원격 심판을 최신 상태로 유지하십시오. 그러면 다음과 같은 여러 가지 작업 중 하나를 수행 할 수 있습니다.

  1. git status -uno추적중인 지점이 앞, 뒤 또는 분기되었는지 여부를 알려줍니다. 아무 것도 말하지 않으면 로컬과 원격이 동일합니다.

  2. git show-branch *master 이름이 master로 끝나는 모든 브랜치 (예 : master 및 origin / master)에서 커밋을 표시합니다.

-v함께 사용 git remote update하면 어떤 분기가 업데이트되었는지 확인할 수 있으므로 더 이상 명령이 필요하지 않습니다.


부족한. git pull <remote> <branch>로컬 지점의 끝이 원격 상대방 뒤에 있기 때문에 밀어야 할 때마다 나중에해야합니다.
Overdrivr

3
@Overdrivr이 질문은 로컬 브랜치에 커밋을 가져 오기 전에 변경 사항을 확인하는 방법을 묻습니다. 따라서 변경 사항을 확인한 후 로컬 지점을 업데이트해야합니다.
Rajani Karuturi

이것은 원산지 또는 업스트림입니까?
vikramvi

1
해당 -v 옵션이 작동하지 않습니다. 들어 git remote update -v내가 가지고error: unknown switch `v'
청어

1
@Shad하지 git remote -v update말아야합니다git remote update -v
Rajani Karuturi

34

"원산지"에 대한 종합적인 견해를 갖는 좋은 방법은 다음과 같습니다.

git remote show origin

11
그러나 그 명령은 마지막 풀 이후 "원점"에 대해 얼마나 많은 커밋이 있었는지를 보여주지 않습니까? 내가 "git remote show origin"을 이해 한 방식은 로컬 작업이며 정보를 가져 오기 위해 네트워크를 거치지 않습니다.
Lernkurve

24

난 그냥 사용

git remote update
git status

후자는 내 로컬 뒤에 얼마나 많은 커밋이 있는지보고합니다. (만약에 어떠한)

그때

git pull origin master

내 지역을 최신 상태로 유지하려면 :)


13

나의 일반적인 질문은 오히려 "새로운 것이거나 repo에서 변경된 것"이므로 변경된 내용 이 편리합니다. 여기 에서 찾았습니다 .

git whatchanged origin/master -n 1

1
새로운 명령은 없었습니다. 감사. 이것은 내가 찾고 있었던 것입니다
Saurabh Jain

11

하나의 가능한 솔루션

Alan Haggai Alavi의 솔루션 덕분에 다음과 같은 잠재적 인 워크 플로를 만들었 습니다.

1 단계:

git fetch origin

2 단계:

git checkout -b localTempOfOriginMaster origin/master
git difftool HEAD~3 HEAD~2
git difftool HEAD~2 HEAD~1
git difftool HEAD~1 HEAD~0

3 단계 :

git checkout master
git branch -D localTempOfOriginMaster
git merge origin/master

13
리모컨의 버전 간 차이점을 찾기 위해 임시 브랜치를 만들어야하는 이유는 무엇입니까? 당신은 그냥git diff origing/master^ origing/master^^
파블로 마린-가르시아

@ PabloMarin-Garcia : 감사합니다. 그때는 몰랐습니다.
Lernkurve

2

git status페치 후에도 항상 마스터와 원산지 / 마스터의 차이를 보여주지는 않습니다. 조합 git fetch origin && git status이 작동하려면 로컬 지점과 출발지 사이에 추적 정보를 지정해야합니다.

# git branch --set-upstream-to=origin/<branch> <branch>

마스터 브랜치의 경우 :

git branch --set-upstream-to=origin/master master

0

지금까지 제안되지 않았기 때문에 ... 그리고 나는 그것이 매우 유용하다고 생각합니다 ...

나는 단순히 사용

git fetch origin

원격 변경 사항을 가져 와서 다음 과 같은 --all 인수를 포함하는 멋진 gitk 도구 ( https://git-scm.com/docs/gitk )를 사용하여 로컬 및 보류중인 원격 커밋 (및 관련 변경 사항)을 모두 봅니다.

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