6
は、次のような問題を検討しているとして、残りを保つ/ Gitの歴史をコミット:我々は、我々が必要とするオープンソース スカッシュ最初のN
- プライベートプロジェクト歴史に資格証明書を取り除くために
- 資格情報には、いくつかのマージと
- 複雑な歴史、などの要求 を引っ張らない単一のファイルではなくコードであります私が何をしたいか0
:
スカッシュ任意のルートまでのすべてのコミットは大きなものにクリーン状態でコミットは「コミットイニシャル」。
私は:
git rebase -i --root
そして、最初は一緒にコミットスカッシュ:
pick Initial commit \
fixup dirty1 |
fixup dirty2 | Squash these to one, to remove credentials.
fixup dirty3 |
fixup clean1 /
pick clean2
pick clean3
...
...
私はすべてをリベースし、すべてが、その後、再び、マージの競合を解決する必要があります。
N + 1コミット後のマージ競合を含めて、履歴全体を解決することなく最初のN個のコミットをスパーシングすることはできますか。
残念ながら、履歴全体を書き直す方法はありません。これは、clean2が新しい親(squashedコミット)を取得すると、そのハッシュが変更されるためです。つまり、clean3には新しい親があり、その親にはハッシュなどが変更されます。 –
これは問題ありません。私はちょうど手動ですべてのマージ競合を再度解決する必要はありません。 – MaxNoe
私はあなたの質問をupvotedしましたが、私は歴史の後続のコミットごとに競合の解決に対処しなければならないと思います。私はそれを使ったことはありませんが、これはhttps://www.kernel.org/pub/software/scm/git/docs/git-rerere.html –