如何只缓存 Git 中的特定文件?


介绍

Git 是开发者用来跟踪代码库更改的流行版本控制系统。Git Stash 允许开发者临时保存对工作目录所做的更改,而无需将其提交到存储库。当开发者需要切换到不同的分支或处理其他功能,但又不想提交未经测试的更改时,此功能非常有用。

使用 Git Stash 时,工作目录中的所有更改都将保存为“缓存”,以后可以检索。这允许开发者同时处理多个功能,而不会将未完成或未经测试的代码与主代码库混合。

Git Stash 的基础知识

Git stash 是一个强大且有用的工具,用于管理 Git 存储库中的更改。它允许您保存工作目录中未提交的更改以供以后使用,而无需将其提交到存储库。当您想要切换分支、从远程存储库拉取更新或只是暂时停止处理特定功能或任务时,这会很有帮助。

使用 git stash 不会在您的存储库中创建任何新的提交;相反,它会创建一个包含您已保存更改的缓存对象。当您准备好检索这些更改时,您可以将缓存应用回您的工作目录,甚至应用到完全不同的分支上。

Git Stash 的工作原理?

运行“git stash”时,Git 会将所有未提交的更改保存到一个匿名的“缓存”对象中。此对象与您的提交和分支分开存储——本质上是创建了一个仅保存临时更改的临时分支。此缓存的内容保存为一系列提交,因此可以一次存储多个缓存。

默认情况下,git stash 将保存当前目录树中所有已修改的已跟踪文件和未跟踪文件。如果需要,用户可以通过指定文件名或使用带有某些选项(例如 --include-untracked 或 --patch)的通配符来选择要包含(或排除)的文件。

如何缓存特定文件?

解释为什么您可能想要缓存特定文件而不是所有更改

在 Git 中,缓存是一种临时保存尚未准备好提交的更改的方法。当您需要切换分支或恢复到以前的状态,但又不想丢失当前进度时,这尤其有用。

但是,有时您可能不想缓存工作目录中的所有文件和更改。例如,如果您同时处理多个功能,并且只想缓存与一项功能相关的更改,则缓存特定文件可以节省时间并使流程更高效。

使用 git stash 命令以及 --patch 或 --keep-index 等选项分步指导如何缓存特定文件

要使用 Git 的内置命令行界面缓存特定文件,请按照以下步骤操作:

  • 打开您的终端并导航到更改所在的存储库。

  • 使用 git status 命令查看哪些文件已修改或创建。

  • 确定应将哪些文件或文件的哪些部分包含在新本地提交(“缓存”)中。

  • 根据应将文件的哪一部分包含在新本地提交(“缓存”)中,使用以下两个选项之一:

    • 如果您只想从一些添加的修改中包含更改行(称为“块”)的某些部分(或“缓存”),请使用 `git add -p`(您将以交互方式遍历每个修改)。

    • 如果您要一起添加(或“缓存”)多个更改,则可以使用 `git add` 来暂存文件。

  • 使用带有所需选项的 git stash 命令。

  • 例如

    • 要仅缓存某些文件中的更改,请使用 `git stash push path/to/file1 path/to/file2`。

    • 要仅缓存文件中的某些部分(“块”)的更改,请使用 `git stash push --patch path/to/file`。

  • 如果需要,您可以在命令之后添加可选消息来描述您的缓存。

  • 通过运行 git status 或 git stash list 来确认您的文件已被缓存。

使用 Git 提供的这些步骤和选项可以帮助您高效地管理和组织您的缓存,同时仍然能够保存工作流程中必不可少的特定文件和更改。

示例和用例

现实世界示例:多任务处理

缓存特定文件的一个常见示例是在同时处理多个功能时。当您处理需要多处更改的大型项目,或同时处理多个较小的项目时,这种情况可能会发生。通过缓存特定文件,您可以确保每个更改集都保持独立和有序。

例如,假设您是一位正在开发新软件应用程序的开发者。您有几项任务要完成,包括向用户界面添加新功能、改进后端代码以及修复现有代码库中的一些错误。

您决定同时完成这些任务以节省时间,而不是一次完成一项任务。为了使您的更改井然有序,并防止由于重叠的工作空间而出现任何问题,您可以使用 Git Stash 来缓存与每个功能相关的特定文件。

现实世界示例:临时删除文件

缓存特定文件还有助于另一个示例,即需要从工作目录临时删除文件而无需完全删除它。假设您的项目中有一个实验性功能,该功能尚未完全测试,但它正在导致项目其他区域出现一些错误。

为了避免在完成更多测试或其他地方进行更多开发(这可能会完全解决这些问题)之前完全删除此文件;您不是使用 `rm -rf file/to/be/removed` 完全删除它,而是使用 `git stash push path/to/directory` 缓存该文件。稍后,当您有时间重新访问该功能并修复出现的任何问题时,您可以轻松地取消缓存特定文件并继续工作。

以这种方式缓存文件是永久删除的安全替代方案,因为它保留了迄今为止所做的工作,同时允许您继续处理项目的其他区域。在这种情况下使用 Git Stash 的好处是显而易见的;它允许开发人员进行实验和创建,而无需担心永久丢失数据或更改。

结论

在本文中,我们探讨了 Git Stash 的基础知识,并学习了如何缓存特定文件。我们研究了了解如何缓存特定文件的重要性,并提供了缓存特定更改必不可少的现实世界示例。

我们还检查了一些高级技术和技巧,以高效地管理缓存。通过了解如何在 Git 中缓存特定文件,开发人员可以更有效地处理大型代码库和复杂项目。

缓存提供了一种强大的方法来临时保存更改而不提交它们,这在同时处理多个功能或任务时尤其有用。借助 Git 的内置缓存和更改管理工具,开发人员可以拥有一个高效的工作流程来管理临时更改。

更新于:2023年6月6日

12K+ 次浏览

启动您的 职业生涯

完成课程,获得认证

开始学习
广告