2013-04-16 5 views
3

나는 ~ 4000 커밋을 가진 단일 브랜치 자식 저장소를 가지고있다. 작성한 날짜에 따라 커밋을 그룹화하려고합니다. cdef 커밋 하나 등등 하나에 모든 (섭씨) - 게이드를 저지 및 병합 - 같은 모든 abcd 나는이 커밋 역사를 좀하고 싶습니다Git에서 하나의 커밋을 병합하기

abcd 2013-4-1 12:10 
abce 2013-4-1 13:27 
... 
cdef 2013-4-1 18:16 
cdeg 2013-4-2 09:23 
... 
gade 2013-4-2 18:20 
fdeg 2013-4-3 09:42 
... 

예를 들어, 아래의 커밋을 부여. 나는 rebase를 사용하려고 시도했다.

git reset --hard cdef 
git rebase -i abcd 

모든 커밋을 스쿼시 할 수 없어서 다음과 같은 오류 메시지가 나타났다.

"Cannot 'squash' without a previous commit" 

나는 한 번에 한 커밋을 시도했지만, 효과가 있었지만 너무 오랜 시간이 걸렸지 만 분명히 실현 가능하지 않았습니다.

작성 날짜에 따라 커밋을 병합하려면 어떻게해야합니까?

답변

5

마크가 최초의 "오류 복구"와 같은 "바꾸어 말하다"로 매일하고 나머지 커밋 :

reword xxxxxx First commit from 2013-04-01 
squash xxxxxx another commit from 2013-04-01 
squash xxxxxx another commit from 2013-04-01 
reword xxxxxx First commit from 2013-04-02 
etc 

이는 매일 새로운 커밋 메시지를 작성하라는 메시지를 표시합니다.

시간 단위로 커밋을하는 것은 거의 항상 입니다. 할 일이 있습니다. git bisect과 같은 도구가 올바르게 작동하려면 저장소의 각 커밋이 "한입 크기"변경을 나타내야합니다.

+0

+1이 답변은 날짜별로 그룹화 커밋이 절대적으로 잘못된 것이라고 지적했기 때문입니다. – Christopher

+0

@duskwuff 답장을 보내 주셔서 감사합니다. ? L 트는 데이터 구조의 변경 사항을 추적 할 수 있도록 증 분식 데이터를 백업하는 자동화 된 서비스에 속합니다. 서비스 자체 만이 주어진 시간에 하나의 업데이트를 업데이트하고 커밋합니다. 다른 지사는 없으며 공동 작업자가 참여합니다. 문제는, 많은 커밋들이 때때로 다른 머신에서 실행되는 "git pull"을 일으키고 저장소 자체의 "git gc"는 메모리 오류로 인해 죽는다는 것입니다. 여전히 잘못된 선택 사항입니까? – hinoglu

관련 문제