2009-08-25 3 views
139

가능한 중복 :
Using Git how do I find modified files between local and remotegit에서 들어오는 커밋을 어떻게 볼 수 있습니까?

가 어떻게 자식에서 들어오는 커밋을 볼 수 있습니까? 아니면 더 나은, 그냥 내가 뭘 참조 git fetch/git pull 에드?

편집 : 질문을 명확히하기 위해 : 누군가가 수정 사항을 얻기 위해 저장소에서 가져와야한다고 말합니다. 내 목표는 그들의 변경 사항이 인 지 확인하고 전에 받아들입니다. git pull이 자동으로 병합됩니다. 이는 내가 원하지 않는 것입니다. git fetch은 병합하지 않고 그것들을 잡아낼 것입니다. 그러나 정확히 내가 방금 뽑은 것을 보는 방법을 확신 할 수 없습니다. 원래 구문을 사용하는 이유는 보통 명령이 hg incoming <repo name here> — git가 부족한 명령 인 Mercurial을 사용한다는 것입니다 아날로그.

답변

149

incoming ISN : 로컬 지점 '마스터'와 다른 사람들이 자신의 코드를 커밋 원격 추적 브랜치 '원산지/마스터'를 가지고 가정, 두 가지의 차이점에 대해 서로 다른 통계를 얻을 수 있습니다 git에서 꽤 직접적인 매핑은 당신이 가져올 여러 개의 저장소를 가질 수 있기 때문에 (그리고 나는 종종 할 수있다.) 각 저장소에는 여러 개의 브랜치가있다. HG의 수신 명령의 동등한이 있다면

, 아마이 것 :

상류에서 잡아에게 물건을 모두 이동 한 다음에 내 현재 분기를 비교 "입니다
git fetch && git log ..origin/master 

업스트림 마스터 브랜치. " 마찬가지로

, 나가는이 될 것이다 : 그것은 지역 지점의 많은 추적하고있는이 쉽게 때문에

git fetch && git log origin/master.. 

이 실제로, 난 그냥 (나는 그들 중 하나의 별칭을 생성하더라도) 수동들을 입력 원격 지점의 많은에 의해 추적하고 함께 유지하는 데 문제가 없습니다.

+6

또한'git diff --stat origin/master'를 사용하여 succesfull merge 후'git ​​pull '이 보여주는 diffstat을 볼 수 있습니다. –

+1

@Dustin이 답변을 주셔서 감사합니다! 내가 물어 볼 수 있을까요, 나는'log ..origin/master'의 뒤에있는 마술을 이해하지 못합니다. 점들이 무엇을 의미합니까? – gideon

+0

그리 마술이 아니기 때문에'git log '의 개요에 표시되어 있으며 [man 페이지] (http://schacon.github.com/git/git-log)의 옵션 섹션에서 두 번째 옵션으로 설명되어 있습니다. html) 다음에는 [gitrevisions] (http://schacon.github.com/git/gitrevisions.html) 문서로 연결되는데이 문서는 훨씬 더 자세하게 설명됩니다. – Dustin

1

"들어오는 커밋"사용자가 로컬에서 커밋하고 밀어 넣는 것과 같은 것은 없습니다. 나는 gitx 또는 gitk (git과 함께)를 열고 repos가 어떻게 생겼는지 확인한다 ... 나는 그것이 당신에게 분명한 시각을 줄 것이라고 생각한다.

사용 : gitk --all을 참조하십시오.

+0

내 명확한 질문을 참조하십시오. –

+0

아, 지금 무슨 뜻인지 안다. 더스틴의 대답은 죽었다. 자세한 내용은 고마워. –

10

두 리포지토리의 차이점을 확인하는 것이 좋습니다.

git diff --summary master origin/master 

git diff --stat master origin/master 

git diff --numstat master origin/master 

git diff --dirstat master origin/master 

git diff --shortstat master origin/master 

git diff --name-only master origin/master 

git diff master origin/master 
+1

질문은 diff를 보는 것에 관한 것이 아니라 커밋을 시각화하고 사용자가 수행 한 작업을 끌어 오는 것입니다. –

+1

사실,하지만 Netzpirat이 가까이있는 것처럼 느껴집니다. 이것이 diffs 대신에 로그를 보여 주었다면 완벽 할 것입니다. –

80

git whatchanged 일부 커밋 범위에서 변경된 내용을 잘 볼 수 있습니다.

당신은 당신이 당겨하려고하는지 검토 할 경우

는 보여줍니다 git fetch에만 원격 저장소에 로컬 추적 지점을 업데이트하는, 최초의 (그리고 의 당신의 지점), 다음 사용하는 모든 명령을 당신은 당신이 뽑을 새로운 것을 저지른다.예를 들면 :

git whatchanged ..origin 

이 "기원"을 통해 "일반적인 내가 지금있는 곳의 조상과 기원"사이의 커밋을 보여주는 속기이다.

+0

아아, 나는이 자식 로그를 사용하는 것보다 낫다. –

6

다른 사람이 당기도록 지시하면 repo URL과 지점 (기본값 : master)을 제공합니다.

난 그냥 (우선 순위 감소에) 한 다음

git fetch URL branch 

할 거라고 :

# note 3 dots in next 3 commands 
gitk HEAD...FETCH_HEAD 
    # shows all commits on both sides since the "fork" point 
gitk --cherry-pick HEAD...FETCH_HEAD 
    # as above but skips identical patches so you really see the differences 
git log --graph --boundary --left-right --cherry-pick --decorate HEAD...FETCH_HEAD 
    # I have a nice alias for this; it's the text mode eqvt of the above 

을 나는 때때로 "tig"를 사용하지만,이 특정 유스 케이스는 (모두보고 쪽)은 tig에 의해 잘 서비스되지 않습니다. 당신은 (나는 여전히 3 개 버전을 선호하지만, 더 밀접하게 실제 질문을 일치 할 수 있습니다) 두 개의 점으로 끌어 내릴 경우

그러나 여기

tig HEAD..FETCH_HEAD 

을 할 수 있습니다 편의를위한 별칭 :

관련 문제