기록은 날짜를 기반으로하지 않으며 근원 그래프를 기반으로합니다. 예를 들어, 역사는 다음과 같을 수 있습니다 :
branchA
↓
* -- * -- * -- * -- *
\
* -- * -- *
↑
branchB
그 *
의 각각은 당신의 역사에 커밋 나타내지 만 실제 날짜는 그래프의 위치에 완전히 무관하다. 의는 (나중에 더 큰 숫자가 생성)은 생성 된 상대 시간을 표시하는 숫자 별을 교체하자
branchA
↓
1 -- 2 -- 4 -- 5 -- 8
\
3 -- 6 -- 7
↑
branchB
이 각 지점에 완벽하게 벌금과 (시간 기준) "선형"역사는 . branchA
의 기록을 기록하면 8, 5, 4, 2, 1
이됩니다. branchB
의 경우 7, 6, 3, 2, 1
이 표시됩니다. 당신이 branchA
에 branchB
을 리베이스 경우
자, 힘내 branchB
에 그 커밋을 다시 작성하고 branchA
에 적용됩니다. 다시 쓰는 동안 Git 은 기본적으로으로 작성 시간을 그대로 유지합니다 (그러나 커밋 시간은 현재 시간으로 재설정됩니다).
branchA
↓
1 -- 2 -- 4 -- 5 -- 8 -- 3' -- 6' -- 7'
↑
branchB
이 (여기 '
들이 원래의 것과 다른 커밋이 실제로 있음을 의미하지만, 그들은 같은 내용과 저자의 시간을 할) : 그래서 당신은 다음과 같은 결과를 얻을 것입니다.
로그를 branchB
으로 보면 다음과 같이 표시됩니다. 7', 6', 3', 8, 5, 4, 2, 1
. 그리고 그것은 정확히 "시간의 역설"이 나오는 곳입니다 : 완벽하게 선형의 역사가 있습니다 (그래프는이 섹션에서 선형입니다). 그러나 커밋은 반드시 원래 작성된 순서대로 수행되지는 않습니다.
Rebasing은 완전히 커밋을 재설정해서는 안되기 때문에 원래 작성자 정보 (누가했는지, 언제 작성했는지)가 그대로 유지됩니다.