Git での特定の変更のステージング

Git での特定の変更のステージング
Git

Git での部分的なコミットの効率的な管理

Git はバージョン管理のための強力なツールですが、ファイルに加えた変更のサブセットのみをコミットしたい場合があります。この必要性は、複数の機能やバグ修正に同時に取り組んでいて、明確化してプロジェクト管理を改善するためにそれらを個別のコミットに分割したい場合によく発生します。

この記事では、Git でコード変更の特定の行を選択的にステージングしてコミットする方法を説明します。経験豊富な開発者でも、Git の初心者でも、ファイルの変更の一部のみをコミットする方法を学ぶと、ワークフローが大幅に強化され、コミット履歴をクリーンで意味のあるものに保つことができます。

指示 説明
git add -p どの変更をステージングするかを対話的に選択できます。それぞれの変更が表示され、それをステージングするかどうかを選択できます。
git commit -m 段階的な変更をメッセージとともにコミットします。確認して選択した変更のみがコミットされるようにします。
git status 作業ディレクトリとステージング領域の現在の状態を表示し、どの変更がコミットのためにステージングされているかを確認するのに役立ちます。
git reset HEAD <file> ステージング領域から変更をステージング解除し、誤ってステージングした場合に変更を削除できるようにします。
Stage Hunk GUI ツールでは、このオプションを使用すると、変更のブロック (塊) を一度にステージングできます。
Stage Selected Lines GUI ツールでは、このオプションを使用すると、diff ビューから個々の行をステージングできます。

Git での部分コミットをマスターする

上記の例で提供されているスクリプトは、Git で変更を選択的にステージングしてコミットする方法を示しています。これは、複数の変更を含む複雑なプロジェクトを管理する場合に貴重なスキルです。最初のスクリプトはコマンド ライン インターフェイスを使用し、 git add -p 指示。このコマンドを使用すると、開発者はどの変更をステージングするかを対話的に選択できます。各変更を個別に提示することで、「y」(はい)、「n」(いいえ)、「s」(変更をさらに分割する)などのオプションを使用してステージングするかどうかを選択できます。これは、ファイルに複数の変更があるが、サブセットのみをコミットしたい場合に特に便利で、コミットがクリーンで焦点が絞られていることが保証されます。

必要な変更をステージングした後、 git commit -m コマンドを使用して、これらの変更をメッセージとともにコミットします。段階的な変更をレビューすることが重要です。 git status、作業ディレクトリとステージング領域の現在の状態を示します。誤ってステージチェンジをしてしまうと、 git reset HEAD <file> コマンドを使用してステージングを解除できます。グラフィカル インターフェイスを好む人のために、GitKraken や Sourcetree などのツールには、同じ結果を達成するための「Stage Hunk」や「Stage Selected Lines」などのオプションが用意されています。さらに、VS Code と GitLens 拡張機能を使用すると、特定の行のインライン ステージングが可能になり、プロセスがより直観的かつ視覚的になります。

Git を使用した変更の選択的なステージング

コマンド ライン インターフェイス (CLI) スクリプト

git add -p
# This command allows you to interactively select which changes to stage.

# You'll be presented with each change and can choose 'y' to stage this change,
# 'n' to skip, 's' to split the change into smaller parts, and more options.

# Example:
# $ git add -p
# diff --git a/file.txt b/file.txt
# --- a/file.txt
# +++ b/file.txt
# @@ -1,5 +1,9 @@

Git を使用して選択した変更をコミットする

コマンド ライン インターフェイス (CLI) スクリプト

git commit -m "Commit message for partial changes"
# This command commits the changes you have staged interactively.

# Ensure you've reviewed the changes before committing.
# Use 'git status' to check what changes have been staged:
# $ git status
# On branch main
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
# modified:   file.txt

Git GUI を使用した変更の選択的なステージング

グラフィカル ユーザー インターフェイス (GUI) 方式

# Open your Git GUI client, e.g., GitKraken, Sourcetree, or Git GUI.
# Locate the file with changes you want to stage partially.

# View the file's diff. Most GUI clients allow you to select specific
# lines or hunks to stage by clicking checkboxes or using context menus.

# Stage the selected changes. This typically involves right-clicking
# the selected lines and choosing an option like 'Stage Hunk' or 'Stage Selected Lines'.

# After staging the desired changes, commit them with an appropriate message.

選択的ステージングのための Git 拡張機能の使用

VS コード拡張

# Install the GitLens extension in VS Code.
# Open the file with changes in VS Code.

# In the source control panel, you'll see the list of changes.
# Click on the file to view its diff.

# Use the inline staging buttons provided by GitLens to stage specific lines.
# Hover over the left gutter to see the '+' button for staging individual lines.

# Once you've staged the desired lines, commit the changes via the source control panel.

Git での部分コミットの高度なテクニック

ファイルの変更の一部のみを Git にコミットするもう 1 つの側面には、パッチ ファイルの使用が含まれます。パッチ ファイルを使用すると、適用する変更を表すファイルを作成し、このパッチをリポジトリに適用できます。パッチ ファイルを作成するには、 git diff コマンドを実行すると、出力がファイルにリダイレクトされます。例えば、 git diff > changes.patch 作業ディレクトリ内に相違点を含むパッチ ファイルが作成されます。その後、このパッチ ファイルを手動で編集して、コミットしたい変更のみを含めることができます。

パッチ ファイルを入手したら、次のコマンドを使用して適用できます。 git apply 指示。この方法は、他の開発者と共同作業する場合、または変更を適用する前に確認したい場合に特に便利です。もう 1 つの高度なテクニックは、 git stash を使用したコマンド -p オプション。これにより、次のように対話的に変更を隠しておくことができます。 git add -pただし、コミットのために変更をステージングする代わりに、後で使用できるように変更を隠します。これは、変更をコミットせずに一時的に保存する場合に便利で、作業を柔軟に管理できます。

Git の部分コミットに関するよくある質問

  1. ファイル内の特定の行だけをステージングするにはどうすればよいですか?
  2. 使用 git add -p コマンドを使用して、ステージングするラインを対話的に選択します。
  3. 間違ったセリフを演出したらどうなるでしょうか?
  4. を使用してラインのステージを解除できます。 git reset HEAD <file> 指示。
  5. 部分的なコミットに GUI ツールを使用できますか?
  6. はい、GitKraken や Sourcetree などのツールを使用すると、特定の行または変更の塊をステージングできます。
  7. 変更を加えたパッチ ファイルを作成するにはどうすればよいですか?
  8. 使用 git diff > changes.patch パッチファイルを作成するコマンドです。
  9. パッチファイルを適用するにはどうすればよいですか?
  10. 使用 git apply コマンドを使用してパッチ ファイルをリポジトリに適用します。
  11. 使用するメリットは何ですか git stash -p?
  12. これにより、変更を対話的に隠しておくことができ、コミットせずに作業を柔軟に管理できるようになります。
  13. コミットする前に変更を確認するにはどうすればよいですか?
  14. 使用 git status そして git diff 変更をステージングしてコミットする前に変更を確認するためのコマンド。
  15. VS Code を使用して変更を部分的にコミットできますか?
  16. はい、VS Code で GitLens 拡張機能を使用すると、エディターから特定の行を直接ステージングできます。

Git での変更の要約

Git で部分的なコミットを処理すると、プロジェクトの履歴が明確で管理しやすくなります。対話型のステージング コマンドを使用すると、各コミットにどの変更を含めるかを正確に選択できます。これは、変更の論理的な順序を維持するのに役立ち、無関係な変更が乱雑になるのを避けます。さらに、GitKraken や VS Code の GitLens 拡張機能などのツールは、特定の行またはコードの塊をステージングするためのグラフィカル インターフェイスを提供することで、このプロセスを簡素化します。パッチ ファイルの作成や適用などの高度な方法により柔軟性がさらに高まり、リポジトリにコミットする前に変更をより効果的にレビューおよび管理できるようになります。

Git の部分コミットに関する最終的な考え方

ファイルの変更の一部のみを Git にコミットする機能を習得することは、効果的なバージョン管理のために不可欠です。これにより、コミット履歴を正確かつ意味のあるものに保ち、各コミットが作業の論理単位を表すことが保証されます。インタラクティブなステージング コマンドとツール、およびパッチ ファイルなどの高度なテクニックを使用することで、変更をより適切に管理し、チームとより効率的に共同作業することができます。このアプローチにより、ワークフローが改善されるだけでなく、コードベースの全体的な品質と保守性も向上します。