1

履歴でコミットを分割する方法を学ぼうとしています。このページをガイドとして使用します: http://git-scm.com/docs/git-rebase.html#_splitting_commits 2 つのコミットがあるので、git rebase -i <hashOfTheCommit>^. commit の行を から に変更pickeditます。次に、入力しgit reset HEAD^ます。ここまでは順調ですね。file1ここで、新しいディレクトリに を追加するというコミットによって導入された変更があります。

ファイルの内容は基本的に次の 2 行です。

commit line1

commit line2 

したがって、このコミットを 2 つのコミットに分割し、それぞれに 1 行追加します。しかし、入力した後git add -p file1、応答しか得られずNo changes.、ファイルはインデックスに追加されません。パッチ モードに入ることが期待されますが、そうはなりません。

4

2 に答える 2

0

このタスクには GUI を使用することもできます (コマンド ラインとして自動化することはできませんが、場合によっては機能する可能性があります)。

分割したいコミットへの分岐点を作成し、その分岐をチェックアウトするだけです (この分岐を splitcommitと呼びましょう)。GUI ( git gui) を開き、[Ammend last commit] を選択します (コミットの説明テキスト ボックスの上にあります)。そのオプションを選択すると、問題のコミットを作成している場合と同じ状況になるため、ファイルを選択し、必要な行をステージング/ステージング解除できます (ファイルの内容を示すボックスの行を選択し、必要に応じてステージング/ステージング解除をクリックします)。

準備ができたら、コミットをクリックします。これによりコミットが変更され、ステージングを解除した行は、インデックスに追加されていない変更として表示されます。その後、それらの行で新しいコミットを作成できます (ブランチsplitcommitに追加されます)。新しい分割されたコミットで元のブランチの履歴をやり直したい場合は、そのブランチをチェックアウトして、ブランチsplitcommitにリベースします。

それほど単純ではありませんが、非常に複雑なプロセスではなく、高度な Git コマンドを使用する必要はありません。

于 2013-07-03T14:20:21.637 に答える