2011-02-09 18 views
38

大きなファイルに複数の変更を加えた場合、それらをgitを使って別々のコミットに分割することは可能ですか?複数の変更を個別のコミットにgitで分割しますか?

+0

可能な重複[Gitリポジトリを持つ小さなコミットにコミット分割する方法?](http://stackoverflow.com/questions/2118042/how-to-split-a-commit-into-smaller-commits-with-git)。 –

+2

また、変更が既にコミットされているかどうかは不明です。彼らがすでにいくつかのコミットでコミットされている場合、 'rebase --interactive'が行く方法です。そうでなければ、 'git add --patch'を考慮する必要があるオプションの1つです。 –

答えて

64

git add --patchが必要です。これにより、ステージングの変更を選択できます。

+4

なぜdownvote? git add -iは、-iメニューから最初に選択するオプションが 'p'(または5)なので、ハンクスを選択するだけで十分ですパッチ。 –

+8

本当に、別のdownvoteの説明なし? 'git add --patch'に何か問題があると思われる場合は、理由を説明できるように礼儀正しく答えてください。 –

+1

私はdownvotes(私からではありません!)は、この答えは動作しませんどこにすでに約束した人から来たと思います。問題は、変更がコミットされているかどうかを示していません。 – mikemaccana

16

はい、git add -iを使用して、コミットごとにステージングするハンクを選択できます。 git help addを実行し、「インタラクティブモード」にスクロールしてドキュメントを入手できます。

1

Williams answerは完全に有効です。しかし時には手で行うのが簡単です。たとえば、以前に行った変更をコミットする前に、いくつかのサードパーティのライブラリを誤って多くのファイルで更新した場合などです。 git add -p--patchと同じ)を使用すると、これらすべてのファイルを処理する必要があります。だから、この場合は、第2、他のすべての変更をコミットするだけで、あなたがコミットしたいファイルをステージングして行うことがはるかに便利です。

> git add /path/to/your/file.txt 
> git commit -m "my commit message" 
[master a0c5ea6] my commit message 
1 file changed, 2 insertions(+), 1 deletion(-) 
> git add --all 
> git commit -m "updated library xyz" 
+5

実際、' git add -p'では、コマンドラインで特定のファイルを選択することができ、 'g'を使って特定の塊に変換したり、'/'を使って正規表現にマッチする塊を探します。 'add -p'のポイントは、ファイルからハンクを選択することですが、この提案された解決法は、OPが望むものではないファイル全体を追加する必要があります。 –

関連する問題