2017-12-08 14 views
0

100個のファイルを変更したコミットがあります。私はそのコミットをファイル名で1つのコミットで100個のコミットに分割したいと思っています。すべてのファイルを手作業で処理することなく、単一のコミットをファイル名で複数のコミットに分割します。

現在、私はereset HEAD^1で編集したいコミットの後にgit add && git commit -m <filename>という文字列を付けます。これは、複数のファイルで面倒になります。

好ましくは、スクリプトを使用しないbashの1行です。また、それは記憶のために十分に読みやすいはずです。


更新:

git reset HEAD^ --soft 
git diff --cached --name-only --relative | while read f; do git commit -m "$f" -- "$f"; done 
とElpieKayのソリューションを使用して終了
+0

ファイル名を指定すると、コミットするルールは何ですか? 1ファイルにつき1つのコミット? – ElpieKay

+0

はい、ファイルごとにコミットします。 – Jaakko

+0

コミットメッセージはどうですか?すべて同じですか? – ElpieKay

答えて

0

それが最後のコミットとコミットIDがabc123であると仮定します。

は、何かがうまくいかない場合は、復元するためにgit reset abc123 --hardを実行

git reset abc123 --hard 
git reset abc123^ --soft 
git diff --cached --name-only | while read f;do git commit -m "$f" -- "$f";done 

を試してみてください。

+0

間違ったコマンドが使用されたために更新されました。 – ElpieKay

+0

私はgitのルートにいませんが、 'git diff --cached --name-only -relative'はそれを解決すると思います。 '--relative''の修正の後、私が読めるようにしたいのです。ありがとうございました! – Jaakko

+0

私は最初の 'git reset abc123 --hard'を使用しませんでした。そしておそらく 'git reset HEAD^--soft'はもっと一般的な解決策でしょうか? – Jaakko

関連する問題