2013-07-30 2 views
1

나는 다소 혼란 스럽습니다. 힘내 내 현재 지점 및 원격 지점 사이에 차이가 있습니다힘내 기는 파일의 차이점을 보여 주지만, 병합하지 않을 것입니다.

  1. 내 현재 지점 및 원격 지점이의

하나 사이에 차이가 없다는 것을 모두 말해되어 나타납니다 거짓말 (또는이 시나리오를 잘못 이해하고 있음). 이게 뭐야 ??

(~/hbb.vm) debian $ git diff ..stage/master --name-only 
sites/all/libraries/attachment_email/attachment_email.php 
sites/all/modules/redirect/redirect.module 
sites/all/modules/redirect/redirect.test 
sites/all/themes/HBB/css/elements.css 
sites/all/themes/HBB/templates/node--enterprise_blog.tpl.php 

(~/hbb.vm) debian $ git merge stage/master 
Already up-to-date. 

답변

3

병합 명령은 반대를 현재 브랜치가 stage/master 지점에서 커밋이 모두 포함되어 있음을 말하는 것이 아니라. 현재 분기에 stage/master에없는 변경 사항이 포함되어 있으며 diff 명령에 반영된 변경 사항은 입니다. 위의 저장소로

a-b----c 
    \ 
    d--e 

나는 경우 eb가 가 제대로 일을 최신 상태로 상태 것이다 병합하려고, 체크 아웃. 그러나 내 현재 상태와 같은 점 사이의 차이점을 요구, 차이가 존재합니다 가능성이 높습니다 (보장되지, ed 또는 둘 모두 e에서 변경 사항을 되돌릴 수 있고 d이 비어 커밋 될 수있다).

지금까지 diff 명령이 다소 잘못되었습니다. .. 브랜치의 앞에는 이라는 이름이 커밋 범위 ( HEAD..stage/master에 해당)로 해석되지만 diff는 범위가 아닌 개별 커밋에서 작동합니다. 이것은 다소 일반적인 실수이므로 diff는 약간 으로 조정되었지만 여전히 오도 된 결과를 줄 수 있습니다. 이 경우에는 쇼 변화는 오히려 가 에 의해 반사 된 상태로 stage/master에서 상태를 가지고 일어난 것을 변화보다 stage/master에 현재 상태에서 이동 할 가능성이 을 필요로하는 변화를 보여주는 기대하는 것과 반대합니다 현재 지점의 팁. 후자는 당신이 기대하는 것일 가능성이 큽니다 .

+0

조금 더 많은 정보를 보여주는'git diff' 방법이 있습니까? 파일이 삭제되었거나 수정되었는지 그리고 어떤 분기가 있습니까? – doub1ejack

+0

@ doub1ejack : 그것은 새로운 질문으로 더 잘 물어볼 것입니다. 그렇게되면 더 많은 관심을 끌 것이며 의견보다 더 잘 대답 할 수 있습니다. – qqx

+0

사실, 나는 게으르다. [죄송합니다] (http://stackoverflow.com/questions/17996220/looking-for-more-info-from-my-git-diff-command). '..branch_name'에 당신의 요점에 대해 또 다른 [질문 오픈] (http://stackoverflow.com/questions/17996531/why-cant-i-do-git-diff-on-this-specific-commit)이 있습니다. 감사. – doub1ejack

1

1을 가정 할 때 정확합니다. (HEAD)와 stage/master 사이에 차이가 있습니다. 4. 3

  1. git diff ..stage/master
  2. git diff HEAD..stage/master
  3. git diff stage/master..
  4. git diff stage/master..HEAD

1 2 짧은 손, 3 :

이들의 모든

당신이 말해 단지 1의 역방향 diff입니다.

git diff stage/master @qqx는 작업 트리와 stage/master 사이의 차이점을 알려줍니다. (1 또는 3에 비해 커밋되지 않은 변경 사항이 표시됩니다.)

생각이 잘못되었습니다. 2 : HEADstage/master 사이에는 차이가 없습니다.

git merge stage/master은 에 아직 들어 있지 않은 (또는 병합 된) 커밋이 없습니다 (stage/master)는 것을 알려줍니다.

  • git log ...stage/master --cherry-pick

그리고 당신이 stage/master 합병 한 후이는 DIFF의 원인이 that're 커밋의 당신을 말할 수 있습니다 :

이것은 또한 당신이 말할 수

  • git log stage/master... --cherry-pick
관련 문제