2012-06-03 4 views
5

잠시 동안 개인 레포에서 작업 중이며 GitHub에 공개 할 예정입니다.Git - 단일 통합 커밋을 사용하여 새 리모컨으로 푸시

문제는 많은 커밋이 있고, 위생을 위해서 GitHub에 나타나는 커밋이 하나 뿐인 것입니다.

히스토리를 푸시하지 않고 어떻게 푸시합니까? 즉 전체 마스터를 단일 커밋으로 통합

미리 감사드립니다.

더그

답변

1

git rebase를 살펴보십시오. 대화식 모드.

5

일반적으로 git rebase --interactive HEAD~n을 사용합니다. 여기서 n은 no입니다. 하나에 병합하려는 커밋의 개수. 그러나, 여러분은 전체 역사를 하나의 커밋으로 스쿼시하고, 부모가없는 리베이스 (초기 커밋까지)가 가능하지 않기 때문에 git resetgit commit --amend을 사용해야합니다.

여기에 당신이 무엇을 :

  1. git log --oneline. 초기 커밋의 SHA를 찾습니다.
  2. SHA가 fe7d5d1이라고 가정합니다. 실행 git reset fe7d5d1. 그러면 분기가 원래 커밋으로 다시 설정됩니다.
  3. 이제 모든 변경 사항을 적용하려면 git add .을 사용하십시오.
  4. 다음으로 본인의 커밋을 수정하십시오 (git commit --amend -m "Initial commit").
  5. git log --oneline으로 지금 커밋이 하나만 있는지 확인하십시오.

주의는 : 스쿼시/REBASE 이미 원격의 repo에 밀려 한 커밋/재 작성하지 마십시오.

+1

만약 내가 전체 역사를 bitbucket에서 개인 레포로 푸시했는데 현재 상태 (즉 리베이스 된)를 github으로 푸시하고 싶다면 어떻게해야합니까? – Doug

+1

아이디어는 이미 다른 사람들에게 전파 된 기록을 다시 쓰지 않아야합니다. 귀하의 경우 개인 리포에 대한 액세스 권한 만있는 경우 리베이스 할 수 있습니다. –

+0

GitHub 저장소에 대한 기록을 다시 쓰고 BitBucket에 대한 기록을 유지할 수 없습니까? 즉 모든 현재 변경 사항을 단일 커밋으로 "커밋"합니까? – Doug