2012-03-27 1 views
7

내 자식 저장소 ~ 2,000 커밋이 있습니다. 교육 목적으로 나는 git rebase -i으로 놀고있다. 멱등 원의 갈등으로 멱등 원의 자식 리베이스가 실패합니까?

내가 git rebase -i first-commit을 입력

( first-commit 초기에 대한 태그 인의 repo에 커밋)와 (즉, 모든 pick <hash> 그대로두고) 전혀 아무 것도 변경하지, 자식은 내 역사의 재생을 시작하지만, 충돌을 인용 커밋의 수십에 실패합니다. 이게 뭐야? 왜 내 역사 전체를 재생하지 않는 것일까 요?

답변

6

오픈 소스 프로젝트에서 다시 만들려고했는데 비슷한 결과가 나왔다. 리베이스 대화 형을 사용하여 첫 번째 커밋 맨 위에 리베이스 할 때 충돌이보고되었다.

두 번째로 실행했고 동일한 커밋에서 발생했음을 알았습니다. 성공하지만 옵션 -p와 함께 다시 REBASE를 실행

* 843f5df (HEAD, tag: new-tag) API change for lttng_destroy_session prototype 
* 90192ee Merge branch 'master' 
|\ 
| * 4dbd54a update loglevel printout 
| * e4baff1 listing and activation of loglevel by number 
* | 76d45b4 Add support for UST enable all tracepoints 
* | 6181537 Cleanup lttng enable event command 
|/ 
* 13dce3b loglevels: allow enable/disable 
* 81afa34 Add loglevel to event list 
* 57ab763 ABIs now support 256 char event names 

했다 :

-p, --preserve-merges 
      Instead of ignoring merges, try to recreate them. 

      This uses the --interactive machinery internally, but combining it with the --interactive option explicitly is generally not a 
      good idea unless you know what you are doing (see BUGS below). 

자식 REBASE이 변경됩니다

git clone git://git.lttng.org/lttng-tools.git 
git tag first-commit fac6795 
git rebase -i first-commit 

Could not apply e4baff1... listing and activation of loglevel by number 
git rebase --abort 

충돌이 병합 지점 근처에 무슨 일이 벌어지고 보인다 더 선형적인 역사. 병합 시점이 병합되었을 때 병합이 발생하면 병력이 병합되기 때문에 해결해야합니다.