2011-12-21 5 views
0

git을 사용하여 사용자 컨텐트의 변경 사항을 추적하는 CMS가 있습니다. 매일 밤마다 커밋을 한 번씩 완료했습니다. 상상할 수 있듯이, 매일 커밋 한 커밋 로그가 흥미 롭습니다.자동 커밋 리베이스

조금만 정리하고 싶습니다. 커밋 (약 100 개 정도)을 단일 커밋으로 리베이스하면됩니다. 이러한 자동화 된 커밋에 적합한 전략입니까? 두 개 이상의 커밋에서 동일한 파일이 참조되는 경우 충돌이 발생합니까? 100을 1로 리베이스하는 것만 큼 쉽지 않은 것 같습니다.

E : 이들은 내용 변경 사항이며 코드베이스 변경 사항이 아니므로 실제 중요하지 않습니다. 변경 사항을 한 번씩 롤업하여 기록을 정리하는 것이 좋습니다.

+0

음 ... 왜 정확히 원하는가? Git과 다른 VCS의 모든 목적은 변경 사항을 추적하는 것입니다. 100을 1로 굴리면 모든 역사를 잃게됩니다. 역사가 원하는 것이 아니라면 VCS를 사용해서는 안됩니다. – Alec

+0

이것은 내용 변경이므로 코드베이스가 변경되지 않습니다. 나는 둘 다 추적한다. 컨텐츠 변경은 실제로 이들을 결합하는 부분보다 훨씬 덜 가치가 있습니다. 콘텐츠에 대한 기존 정보가 필요하지 않습니다. – Nic

+0

StackOverflow에 오신 것을 환영합니다. 이것은 묻는 질문에 대한 대답이 아닙니다. 질문자가 왜 무언가를하고 싶어하는지에 대한 설명을 요구하는 주석입니다. 대신 주석으로 게시해야합니다. 아직 수행하지 않았다면 [FAQ] (http://stackoverflow.com/faq)를 읽어보십시오. 감사. :) –

답변

0

rebase -i <upstream>을 실행하고 Git이 제공하는 프롬프트에서 100 개의 커밋을 "스쿼시"커밋으로 표시하면 아무런 문제가 없습니다. Git은 각 패치를 하나씩 적용 할 것이고 최종 커밋에서 저장소의 상태를 반영하는 단일 커밋으로 끝날 것이다. "fixup"을 선택하면 같은 일을 할 것이지만 중간 커밋 메시지를 삭제할 것입니다 (이것은 당신이 찾고있는 것과 비슷합니다).

리 베이징 중에 예상치 못한 문제가 발생하는 경우 간단한 git rebase --abort을 사용하면 원래 리포지토리 및 버전 기록으로 복원 할 수 있습니다.

힘내는 매우 효율적이지만, 역사를 잃고 싶지 않다면 git gc을 시도해 볼 수 있습니다. 커밋을 "Packfiles"로 압축하는 등의 "housekeeping"작업을 수행합니다. 사용자 콘텐츠가 날마다 크게 변경되지 않으면 힘내 기는 기록을 매우 단단히 압축 할 수 있어야합니다. git gc --aggressive은 커밋을 더욱 어렵게 만듭니다.

관련 문제