如何使用 Git Stash 暂存特定文件?

linuxoperating systemopen source

简介

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` 命令查看哪些文件已被修改或创建。

  • 确定哪些文件或文件的哪些部分应该包含在新的本地提交("stashed")中。

  • 根据应该包含在新的本地提交中的文件部分,进行相应的操作。 ("stashed"),请使用以下两个选项之一 -

    • 如果您只想将某些修改中的特定部分(称为"代码块")添加到暂存(或暂存)中,请使用 `git add -p`(您将以交互方式逐个修改)。

    • 如果您想将多个更改一起添加(或暂存)中,可以使用 `git add` 来暂存文件。

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

  • 例如:

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

    • 要仅暂存文件中更改的特定部分("hunks"),请使用 `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 内置的暂存和管理更改的工具,开发人员可以高效地管理临时更改。


相关文章


有用资源