2012-08-02 2 views
2

리눅스 커널의 git repo가 ​​있습니다. 표준 git 복제본으로 만들었습니다. 그 repo '서버'를 호출하자. 나는 또한 서버의 클론을 만든 '컴퓨터 a'를 가지고있다. 필자는 '컴퓨터 a'를 오랫동안 개발 한 다음 '서버'로 밀어 넣었지만 항상 별도의 지점에 배치했습니다. 얼마 후 나는 서버를 업데이트하고 싶었다, 그래서 git 히스토리가 동일한 지 확인하십시오.

git checkout master 
git pull git://linus/kernel.git 
git push origin master #here origin is 'server' 

그래서 지금 내 서버의 주요 지점 메인 커널의 repo에서없는 마스터의 변화를 가질 수있다 '컴퓨터 A'에서 다음을 달렸다. 그렇다면 어떻게 찾을 수 있습니까? 즉, server/master의 전체 히스토리가 리누스의 master 브랜치와 동일한 지 어떻게 확인할 수 있습니까?

감사

+0

"항상 별도의 지점에"라고 말하면 별도의 지점에서 컴퓨터 A에 대한 * 개발 *을 수행 했습니까? 아니면 master에서 개발 한 다음 * 서버에서 별도의 지점으로 푸시 * 했습니까? –

+0

두 커밋 해시의 커밋 해시를 비교하면됩니다 ('git rev-parse'는 당신의 친구입니다). – knittl

+0

저는 컴퓨터 a에서 개발을했으나 마스터에서는 절대 커밋되지 않았습니다. 나는 어떤 마스터 브랜치에 대해서도 커밋을하지 않았다. 적어도 나는 생각한다. 그게 제가 검증하려고하는 것입니다. (어쩌면 내가 체리 선택 또는 어떤 시점에서 병합을 했나요?) –

답변

1

힘내는 쉽게 에 두 가지의 전체 역사는 동일하다는 것을을 확인하게하십시오 SHA1이 ID를 다음 역사는

  • 다른 동일 일치 커밋 경우

    • , 역사는 다르다

    git cherry 명령은 다음과 같은 커밋을 식별하는 데 도움이 될 수 있습니다. 해시가 다른 경우 업스트림 브랜치에 없습니다.

    또 다른 팁은 업스트림 브랜치를 가져와 로컬 작업과의 병합이 이 아니고이 아닌 경우 git pull --ff-only을 사용하는 것입니다. --ff-only을 사용한 후 SHA1 커밋 ID가 일치하거나 전체 명령이 실패합니다.

  • +0

    그래서 서버/마스터의 최신 SHA1 ID가 최신 리니어/마스터와 일치하면 두 마스터의 전체 기록이 동일합니까? 그것은 체리 피킹이 커밋의 SHA1 id를 변경해야 함을 의미합니다. 나는 결코 눈치 채지 못했다. –

    +0

    네, 맞습니다. –

    관련 문제