2012-06-03 18 views
5

私はしばらくプライベートレポに取り組んでおり、GitHubにリリースしようとしています。Git - 1つの統合コミットで新しいリモートにプッシュ

問題は私がたくさんのコミットをたくさん持っていることです。衛生上の理由から、GitHubには1つだけのコミットが必要です。

ヒストリを押すことなくプッシュするにはどうすればよいですか?すなわち、マスター全体を単一のコミットに統合する

ダグ

答えて

1

git rebaseを調べます。対話モード。

5

通常、1つはgit rebase --interactive HEAD~nを使用します(nはnoです)。 1つにマージしたいコミットの数。しかし、あなたの場合、履歴全体を1つのコミットに盛り込みたいので、親なしのリベース(最初のコミットまで)は不可能です。git resetgit commit --amendを使用する必要があります。

は、ここにあなたが何をすべきかです:

  1. git log --oneline。最初のコミットのSHAを探します。
  2. SHAがfe7d5d1であるとします。実行git reset fe7d5d1。これにより、ブランチがinital commitにリセットされます。
  3. git add .を使用してすべての変更をステージングします。
  4. 次はあなたの最初のコミットを修正します、git commit --amend -m "Initial commit"
  5. git log --onelineで今すぐコミットが1つだけであることを確認してください。

注意:書き換えることはありません/スカッシュ/リベースは、すでにリモートレポにプッシュしているコミットします。

+1

bitbucketでプライベートレポに全履歴をプッシュしても、現在の状態(つまりリベース済み)をgithubにプッシュしたいのですが? – Doug

+1

すでに他の人に伝えられている履歴を書き換えることは決してありません。あなたのケースでは、プライベートレポにアクセスできるのであれば、リベースするのが安全です。 –

+0

GitHubリポジトリの履歴を書き換えたり、BitBucketの履歴を保存することはできません。つまり、すべての現在の変更を1つのコミットとして「コミット」しますか? – Doug

関連する問題