ワーキングディレクトリーにあるファイルとステージングエリアにあるファイルの差分を作成し、編集した差分をステージングエリアのファイルに適用する
「ワーキングディレクトリー」にあるファイルと「ステージングエリア」にあるファイルの差分を作成し、ユーザーが編集した差分を「ステージングエリア」にあるファイルに適用します。以前紹介した「ワーキングディレクトリーにあるファイルとステージングエリアにあるファイルの差分を作成し、ステージングエリアのファイルに適用する」と同じことができますが、こちらの方法はより直接的です。
対話的に差分の編集や適用を行いたい場合は、「ワーキングディレクトリーにあるファイルとステージングエリアにあるファイルの差分を作成し、ステージングエリアのファイルに適用する」を参考にしてください。
差分適用時の注意事項
差分を適用する際、ユーザーは差分を自分で編集し、より高度な差分を適用することができます。しかし差分が適用されるのは、「ステージングエリア」にあるファイルであり、「ワーキングディレクトリー」にあるファイルには差分は適用されません。
複雑な差分の適用は、「ステージングエリア」にあるファイルと「ワーキングディレクトリー」にあるファイルの相違点が大きくなり、後で混乱の元になりうるため、ユーザーが把握できる範囲内で作業を行ってください。
例えば差分適用後、「ワーキングディレクトリー」にあるファイルを「ステージングエリア」に追加すると、差分を適用した「ステージングエリア」のファイルは「ワーキングディレクトリー」にあるファイルで上書きされてしまいます。
結果、適用した差分が失われてしまいます。
コマンドの実行例
ここでは例として、「master.txt」ファイルに対して、差分の適用作業を行います。1.ステージングエリアにあるファイルの中身
「ステージングエリア」にある「master.txt」ファイルの中身は、以下のようになっています。2.ワーキングディレクトリーにあるファイルの中身
「ワーキングディレクトリー」にある「master.txt」ファイルの中身は、以下のようになっています。3.ワーキングディレクトリーの状態
「ワーキングディレクトリー」の状態を見ると、以下のようになっています。「master.txt」ファイルは、編集されたファイルであることが分かります。
「ワーキングディレクトリー」と「ステージングエリア」にある「master.txt」ファイルの中身が異なっていることが分かります。
4.コマンドの実行
コマンドのオプションは、以下のオプションを指定します。ショートオプション | ロングオプション |
---|---|
-e | --edit |
「端末」から、以下のコマンドを実行します。
コマンドの詳細は、「ステージングエリアにファイルを追加するコマンドの説明」を参考にしてください。
ポイントは、赤字の箇所です。
git add --edit master.txt
5.差分の表示と編集
「ワーキングディレクトリー」にあるファイルと「ステージングエリア」にあるファイルの差分が作成され、その差分が表示されます。「-」は、「ステージングエリア」のファイルに存在するが、「ワーキングディレクトリー」のファイルに存在しない行を表しています。
「+」は、「ステージングエリア」のファイルに存在していないが、「ワーキングディレクトリー」のファイルに存在している行を表しています。
必要に応じて差分を編集します。
ただし「#」による差分の無効化はできません。
代わりに行を削除してください。
6.差分の保存
差分を編集したら、ファイルを上書き保存します。もし差分の適用を中止したい場合は、差分を全て削除し空にしてファイルを保存してください。
テキストエディターを終了します。
7.差分の適用
差分の適用が行われます。問題がなければ、特にメッセージは表示されません。
8.ステージングエリアにあるファイルの中身
「ステージングエリア」にある「master.txt」ファイルの中身は、以下のようになっています。差分が適用されています。
9.ワーキングディレクトリーの状態
「ワーキングディレクトリー」の状態を見ると、以下のようになっています。「ワーキングディレクトリー」にあるファイルと「ステージングエリア」にあるファイルの中身が一致していないため、「ワーキングディレクトリー」にあるファイルは引き続き編集済みになっています。
差分の適用に失敗した場合は
差分の適用に失敗した場合は、エラーメッセージが表示され、差分の適用は行われません。1.差分の編集例
以下のように、差分を編集します。2.差分の適用
差分を適用すると、以下のようにエラーメッセージが表示されます。エラーがある行の行番号も表示されます。