私はしばらくプライベートレポに取り組んでおり、GitHubにリリースしようとしています。Git - 1つの統合コミットで新しいリモートにプッシュ
問題は私がたくさんのコミットをたくさん持っていることです。衛生上の理由から、GitHubには1つだけのコミットが必要です。
ヒストリを押すことなくプッシュするにはどうすればよいですか?すなわち、マスター全体を単一のコミットに統合する
ダグ
私はしばらくプライベートレポに取り組んでおり、GitHubにリリースしようとしています。Git - 1つの統合コミットで新しいリモートにプッシュ
問題は私がたくさんのコミットをたくさん持っていることです。衛生上の理由から、GitHubには1つだけのコミットが必要です。
ヒストリを押すことなくプッシュするにはどうすればよいですか?すなわち、マスター全体を単一のコミットに統合する
ダグ
git rebaseを調べます。対話モード。
通常、1つはgit rebase --interactive HEAD~n
を使用します(nはnoです)。 1つにマージしたいコミットの数。しかし、あなたの場合、履歴全体を1つのコミットに盛り込みたいので、親なしのリベース(最初のコミットまで)は不可能です。git reset
とgit commit --amend
を使用する必要があります。
は、ここにあなたが何をすべきかです:
git log --oneline
。最初のコミットのSHAを探します。fe7d5d1
であるとします。実行git reset fe7d5d1
。これにより、ブランチがinital commitにリセットされます。git add .
を使用してすべての変更をステージングします。git commit --amend -m "Initial commit"
。git log --oneline
で今すぐコミットが1つだけであることを確認してください。注意:書き換えることはありません/スカッシュ/リベースは、すでにリモートレポにプッシュしているコミットします。
bitbucketでプライベートレポに全履歴をプッシュしても、現在の状態(つまりリベース済み)をgithubにプッシュしたいのですが? – Doug
すでに他の人に伝えられている履歴を書き換えることは決してありません。あなたのケースでは、プライベートレポにアクセスできるのであれば、リベースするのが安全です。 –
GitHubリポジトリの履歴を書き換えたり、BitBucketの履歴を保存することはできません。つまり、すべての現在の変更を1つのコミットとして「コミット」しますか? – Doug