2014-09-02 3 views
7

git pull --rebase을 수행 한 후 원격 저장소에서 커밋 된 항목을 확인하는 방법이 있습니까?git pull 후에 반입 된 커밋을 보여줍니다 --rebase

즉, git pull은 변경된 파일의 요약을 표시합니다 (예 : git diff --stat). Git pull --rebase하지 않습니다. 가능한 한이 정보를 어떻게 볼 수 있습니까?

나는이 정상 git pull 후 또는 git log master..origin/master --stat 또는 유사한을 사용하여 로컬 & 원격 지점을 비교하여, 먼저 수동 git fetch을 수행하여 수 알지만, 내가 뭔가 잘못하고 있어요 않는 한이는 git pull --rebase 후 작동하지 않습니다 .. .

이 명확히하기 위해 내 질문이이 부분이다 : 어떤 git pull 쇼 유사한 git pull --rebase 후 변경된 파일의 diffstat (요약)를 볼 수있는 방법
1).
2) git pull --rebase 뒤에 모든 "수신"커밋의 로그를 보는 방법.

+0

'master '를'origin/master'에 리포지인하면'master..origin/master' 범위는 비어 있습니다; 그래서'git log master..origin/master --stat'는 아무것도 출력하지 않는 것이 정상입니다. 게다가'git diff --stat master @ {1}'('git pull --rebase' 후에) 트릭을하지 않습니까? – Jubobs

+0

"development @ {1}"주위에 따옴표를 추가하거나 중괄호를 제거하고 실패하지만 예, 'git pull '또는 'git pull --rebase --stat'와 동일한 출력을 보여줍니다 (see torek의 대답)! 그러나 나는 "@ {1}"이 어떤 의미인지를 모른다. –

+0

'develop {{1} '은 (는)''개발 중'이 마지막으로 이동하기 전에 가리킨 곳을 의미합니다. "; [VonC의 답변] (http://stackoverflow.com/questions/964876/head-and-orig-head-in-git/964927#964927) 하단을 참조하십시오. torek의 답변으로 문제가 완전히 해결되면 수락을 고려하십시오. – Jubobs

답변

10

실제로는 git rebase에이 모든 것이 있습니다 (1.6 이상). git pullgit fetch이고 그 다음에 git merge 또는 git rebase (다양한 옵션과 설정에 의해 지시 됨)이라는 것을 기억하십시오. 즉, git pull은 기본 git 작업 쌍을 수행합니다.

작업을 완료 한 후 작동하지 않는 이유는 당신의 git pullgit pull 사실 작업의 쌍이며, 당신이 한 쌍을했다면, 아마 git fetch 당신의 초에 의해 가져온 새로운 변화가 없다는 것입니다, 그래서 보여줄 것이 새로운 것이 없습니다. reflog 기록을 사용하여 항목을 첫 번째 조작 작업 이전에 있던 상태로 다시 설정하려면 두 번째 작업 쌍이 표시되어야합니다.

자신 만의 reflog를 사용하여 업스트림 브랜치 또는 로컬 브랜치에서 변경된 사항에 대한 사실 보고서를 얻을 수 있습니다 (VonC has already noted 참조). 그러나 아마도 당신은이가이 rebase을 수행하고, 그 자식 디폴트의 비열한 세트로하는 곳.

수동으로 git pull 라인에 --stat을 추가하는 경우에도 경우 pull 스크립트가 다음 통과 git pull에이보고 싶어 이 옵션을 git merge 또는 git rebase 중 하나 (둘 중 하나만 실행)로 설정하십시오. 이 옵션을 밖에두면 git은 기본 옵션을 사용합니다.

git merge의 기본 --stat 옵션은 진정한에 구성의 merge.stat, 있는 디폴트의 설정입니다. 기본값 인 은 rebase.stat, 의 기본값은 False입니다.

나는 그것이 단지 독특하고 명백하지 않기 때문에 반복한다. (나는 단지 당신의 질문 때문에 이것을 발견했다. 나는 일반적으로 git pull을 피한다.)

merge의 기본 --stat 옵션은 True하지만 rebase의 기본 --stat 옵션은 False입니다.

기본값을 직접 설정하면 통계 출력을 표시 할 수 있습니다.

또는 --statgit pull에 전달할 수 있습니다.

당신은 또한 (뿐만 아니라 --preserve와 리베이스하는 기본 의미, 리베이스에 기본 또는 preserve을 의미 하나 True에) pull.rebase를 설정할 수 있습니다, 또는 (True 또는 preserve에) branch.name.rebasegit pull 사용 --rebase을 확인합니다. 이것은 --statpull 인수로 제공하는지 여부와는 관계가 없습니다.


편집 : VonC의 대답은 (적어도 지금) 사라하지만 다양한 의견에 그것의 비트가 있습니다. 그 후 유용한 트릭은 git fetch 업데이트 origin/develop, 자신의 reflog에 origin/develop에 대한 이전 값 origin/[email protected]{1}이 포함되어 있기 전에 git fetch이 업데이트 된 것입니다. 따라서 origin/[email protected]{1}..origin/develop과 함께 제공되는 개정 세트를 선택할 수 있습니다. 두 개를 --stat으로 바꾸면 원하는 출력을 얻을 수 있습니다. 특정 쉘에 따라 다를 수도 있고 그렇지 않을 수도 있으며, @{1} 부분의 중괄호를 인용해야합니다.

+0

나는'rebase.stat' 설정을 알지 못했습니다. +1 – VonC

+0

@VonC : 나도 처음에는 수동으로 diffstat를 얻어야한다고 생각했지만'git rebase'에 대한 문서를 확인하고'--stat'가 있었고'pull' 스크립트를 확인했습니다 기본적으로'--stat'를 넘기지 않았지만 요청하면 패스 할 것이고, 잠깐, 병합은 기본적으로 통계를 보여 주며 rebase는 설정할 수 있습니까? 그리고 그것은했습니다! – torek

+0

@torek. 처음에 나는 당신이 약간 횡재하고 있다고 생각했다. 나는 내가 git pull을하고 있다고 말한 적이 없다. 그리고 무엇이 바뀌 었는지 보려고 git fetch를했다.)하지만 사실,'git pull -stat' 또는'rebase.stat'는 정확히 내가 찾고 있던 것이다. 좋은 발견! –

1

당신은 the reflog에 접근합니다 (git pull --rebase 후) 시도 할 수 :

@\{<n>\}, e.g. @{1} 

당신은 reflog 항목의에서 얻을 수있는 @ 빈 심판 부분으로 구성 사용할 수 있습니다 (git rev-parse SPECIFYING REVISIONS 참조) 현재 가지.
예를 들어, 지점이 blabla 인 경우 @{1}[email protected]{1}과 같습니다. 여기 origin/[email protected]{1}

전에 origin/master 을 참조 할 것

가 페치 커밋 보려면 fetch (= fetch + merge/rebasepull 때문에) 상기 OP Q-BiCin the comments 제안 :

상기 되 그게
git log "origin/[email protected]{1}"..origin/develop 

, toreksolution은 더 쉽게 처리 할 수 ​​있습니다. f 당신을위한 단계, --statgit fetch에 자동으로 전달됩니다.

+1

'@ {}'은 (는)'HEAD @ {}'과 동의어입니까? – Jubobs

+1

@Jubobs 네, 1.8.5+ (http://stackoverflow.com/a/964927/6309) 이후 :'HEAD' ='@' – VonC

+0

고마워요. 앞으로 몇 번의 키 입력을 줄일 수 있습니다. – Jubobs