2016-05-01 5 views
1

1つのファイルをリベースして、すべての変更を1回のコミットで行うにはどうすればよいですか?私は仕事をするだろうgit rebaseの任意のオプションを把握することはできません。Gitで1つのファイルをリベースするには?

+0

'git rebase -i'(対話モード)を使用して、1つのコミットに必要なすべてのコミットをスクラッシュできます。 'git rebase -i'を実行すると、コミットをスクラッシュするのに必要なヘルプが表示されます。 – RaviTezu

答えて

2

あなたが正しくしたいことを理解している場合は、リポジトリ履歴のコミットの範囲から、指定したファイルに対するすべての変更を削除する必要があります(コミットには他のファイルへの変更も含まれます)(a) - 指定されたファイルへの変更を、履歴の上に1つのコミットとして追加します(b)。

Gitは実際にはファイル単位ではなく、リポジトリ単位で動作するので、gitでこれを行うのは簡単ではありません。

は、私はあなたのためにコミットの範囲から問題のファイルへの変更を削除するには(b)は、その後、git filter-branchまたはbfg repo cleanerのためのパッチを作成するためにgit diff <begin> <end> -- <file>の組み合わせを必要とすると思う(A)。

+0

さて、reflogは、プレフィルタブランチの状態だけでなく、元のrefs doやそれらが呼び出される方法を保存します。パッチを作成する必要はありません。フィルターブランチやbfgの後では、クリーンアップ前にファイルのバージョンをチェックしてコミットするだけです – Vampire

関連する問題