2016-06-10 3 views
0

다음 git 로그를 고려하십시오. 커밋은 날짜순으로 정렬됩니다. 그러나 다른 사람보다 분명히 오래되었지만 여전히 맨 위에 나타나는 한 가지 커밋이 있습니다.이 오래된 git 커밋이 맨 위에 나타나는 이유는 무엇입니까?

commit f9afb9e89918faaff09686ce1df4a36f12e82693 
Author: Kshitiz Sharma 
Date: Fri May 20 11:59:00 2016 +0100 

    Deleted tags 

commit f3b90300799878178c09841ccac7ffcd4c9cc4d9 
Author: Kshitiz.Sharma 
Date: Fri Jun 10 13:00:32 2016 +0000 

    Refactor some code 

    git-svn-id: svn://1.1.1.1/[email protected] ca623f4c-c864-0410-95d3-a40aa24e21c6 

commit c98ad952b84403908ba656ab2f18af9a18a4f95c 
Author: Kshitiz.Sharma 
Date: Wed Jun 8 14:35:29 2016 +0000 

    Handle nullpointer exception 

    git-svn-id: svn://1.1.1.1/[email protected] ca623f4c-c864-0410-95d3-a40aa24e21c6 

왜 그렇습니까?

답변

2

커밋 날짜는 순서를 지정하지 않습니다.

  1. A는
  2. A는 다른 지점에서 줄기 수 커밋 세트 가짜 일이있을 수 있습니다 커밋과 merge (보통 git log 사용하여 도입 된 수 커밋에서 오래된 순서 세 가지 상황을 만들 수 있습니다 병합을 표시하지 않음).
  3. A는합니다 (커밋의 그래프에 주위 커밋으로 이동하지만, 그대로 원래 날짜 잎)을 많이하지 당신이 git-svn을 사용하는 사실에 의해 판단

rebase에 의해 주변에 이동되었을 수 있습니다 커밋 리팩토링의 경우 숫자 3의 경우 일 것입니다.

2

위 커밋이 SVN 리포지토리에 전달되지 않았습니다. 그것은 자식에만 존재합니다. 다른 커밋은 (git-svn-id에 의해 입증 된 것처럼 git svn dcommit을 사용하여) SVN으로 보내졌습니다.

git svn rebase으로 SVN의 최신 변경 사항을 가져 오면 git-svn은 커밋을 재정렬하고 로컬 항목을 (선형) SVN 기록 위에 올려 놓습니다. 즉, 문자 그대로 rebases은 SVN이 알지 못하는 모든 커밋을 의미합니다.

리베이스는 히스토리를 재 배열합니다. 커밋 날짜는 변경되지 않습니다.

관련 문제