在 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 工具中,此选项允许您从差异视图中暂存单独的行。

掌握 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 中仅提交部分文件更改的另一个方面涉及使用补丁文件。补丁文件允许您创建一个表示要应用的更改的文件,然后您可以将此补丁应用到您的存储库。要创建补丁文件,您可以使用 git diff 命令的输出重定向到文件。例如, git diff > changes.patch 将创建一个包含工作目录中差异的补丁文件。然后,您可以手动编辑此补丁文件以仅包含您要提交的更改。

获得补丁文件后,您可以使用 git apply 命令。当与其他开发人员协作或当您想要在应用更改之前查看更改时,此方法特别有用。另一种先进技术是使用 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 statusgit diff 在暂存和提交更改之前检查更改的命令。
  15. 我可以使用 VS Code 部分提交更改吗?
  16. 是的,使用 VS Code 中的 GitLens 扩展允许您直接从编辑器暂存特定行。

总结 Git 中的更改

在 Git 中处理部分提交可确保项目的历史记录保持清晰且易于管理。通过使用交互式暂存命令,您可以准确选择每次提交中要包含的更改。这有助于维持更改的逻辑顺序并避免不相关修改的混乱。此外,GitKraken 和 VS Code 的 GitLens 扩展等工具通过提供用于暂存特定行或代码块的图形界面来简化此过程。创建和应用补丁文件等高级方法进一步增加了灵活性,使您可以在将更改提交到存储库之前更有效地查看和管理更改。

关于 Git 中部分提交的最终想法

掌握在 Git 中仅提交部分文件更改的能力对于有效的版本控制至关重要。它允许您保持提交历史记录精确且有意义,确保每次提交代表一个逻辑工作单元。通过使用交互式暂存命令和工具以及补丁文件等高级技术,您可以更好地管理更改并与团队更有效地协作。这种方法不仅改进了您的工作流程,还提高了代码库的整体质量和可维护性。