2017-04-06 4 views
0

をコミットマージを元に戻すと履歴のクリア、私はこのことについて多くのことをreadedが、私は解決するかどうかはわかりません、私は台無しにしたくない、製造またはマスターブランチGitのすべての最初の

これが私です状況:

enter image description here

Bassicallyは、今私は、masterブランチで約200コミットをしました、私はマスターブランチの履歴をクリアに保つために、コミット一つだけにそれらを変換する必要があります。事前に おかげ

PD:このすべては、私はあなたが残しておきたいことを、あなたにぴったりを理解していれば/操作/マージがすでに

+0

でリモート/マスターに取って代わるだろう二度と思いますか? –

+0

ヒストリの一部として199回のコミットをすべて1回マージする必要がありますか?あるいは、1つのリビジョンを1つのリビジョンにまとめたいのですか?その場合、 '' 'git merge --squash'''を使用することを検討してください。 – eftshift0

+0

私はちょうどこの問題を編集しています。 – mauriblint

答えて

1

を押され、変更のみ、最新の/最後のmaster分岐履歴にコミット?

「はい」の場合は、それに従います。 git logにコミットが1つしかない新しいmasterが作成されます。 作業ツリーは同じですが、master履歴は削除されます(最新のコミットのみを保持します)。

安全のために、あなたの masterブランチが

$ git branch master.bac  # new branch called master.bac = master 

コピー

$ git log # copy the latest commit (top commit) 

戻る1へmasterのブランチの最新のコミットハッシュコミットしていない、コミットの歴史を持つ新しいorphan(新しいブランチを作成

まずバックアップ) ブランチ。

$ git checkout HEAD~1     # back to one commit 
$ git checkout --orphan orphan-branch 

orphan-branchにマスターの(あなたが前にコピーした)最新のコミットをチェリーピック/取ります。

$ git cherry-pick <commit-hash> 

は今、orphan-branchブランチはgit logに一つだけコミットしています。 orphan-branch歴史リモートへ

$ git checkout master 
$ git log     # should show only one commit 

フォースプッシュの歴史を持つ新しいローカルmasterブランチを作成してローカルmaster支店

$ git log 
$ git branch -D master 

を削除します。 注:は、それはあなたのローカル/マスターどのようにコミットhash`を--mixed `gitのリセットしてから` Gitのcommit`について

$ git push -f origin HEAD # replace your remote/master with local/master 
関連する問題