2012-08-28 4 views
4

나는 커밋을 비공개로 유지하기를 원하기 때문에 원격 쪽에서 하나의 큰 커밋으로 번들되기를 원합니다. 국지적으로 분리되어 있어야합니다.번들은 커밋/비공개 커밋을 유지합니다.

사용 사례는 예를 들어 정적 블로그에서의 작업입니다. 초안 단계를 커밋하고 로컬에서 추적해야하지만 푸시 할 때만 출시 된 버전 만 게시하고 싶습니다.

git 및/또는 mercurial 용액을 사용할 수 있습니다.

+0

왜 숨기시겠습니까? --no-ff와 병합 한 다음 각 커밋의 첫 번째 부모 만 따르는 것은 어떻습니까? – knittl

답변

4

아이디어는 전용 분기에서 커밋을 수행하는 것이지만 master (또는 푸시하려는 다른 모든 공용 분기)에 git merge --squash (또는 다른 공개 브랜치)으로 커밋해야합니다. 커밋이 커지기 때문에 커밋됩니다.
그런 다음 master을 원격 저장소에 푸시합니다.

페이지의 "In git, what is the difference between merge --squash and rebase?"의욕 2.1에서

+0

참고 : Mercurial에서 squasing 커밋 : http://stackoverflow.com/a/1725638/6309. 더 일반적으로 : http://stackoverflow.com/questions/6937776/abstracting-frequent-local-commits-with-a-push – VonC

+0

나는 이것이 갈 길이라고 생각한다. 각 기사 초안 단계에 대한 로컬 지사를 유지 한 다음 마스터의 릴리스 버전을 '병합 - 스쿼시'합니다. 나중에 필요가 없으면 커밋 초안을 삭제할 수 있습니다. 이것을 실제로 시도해보고 작동하면 답을 수락합니다 :) – schlamar

5

나중에 당신이 "비밀"로 변경 집합을 표시 phases를 사용할 수 있습니다. 이 비밀로 나가는 모든 변경 집합을 표시합니다 :

$ hg phase -f --secret "outgoing()" 

비밀 변경 집합이 밀거나 기본적으로 뽑아, 그래서 그 명령 다음에이 실 거예요 나가는 변경 집합이 될하지 않습니다 - 비밀로 바로 변경 집합을 표시하기 위해 필요에 따라 조정합니다.

또한 원격 저장소에서 변경 집합을 하나의 커밋으로 사용한다고 가정합니다. 이를 위해 histedit extension을 Mercurial 2.3 이상과 함께 번들로 사용할 수 있습니다. --keep 플래그를 사용하면 원래 변경 집합을 접을 때 제거되지 않습니다.

+0

니스, +1, 나는 그 "비밀"특징을 좋아합니다 : 그것은 http://stackoverflow.com/questions/12159662/create- a-commit-save-it-dont-push-it-than-create-some-more-more-commits-push – VonC

+0

네, 멋진 기능입니다. 단계 개념 위에 구축되는 많은 고급 기능이 있습니다. http://hg-lab.logilab.org/doc/mutable-history/html/을 참조하십시오. –

관련 문제