如何将更改从一个 Git 暂存区移动到另一个

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Git stash 是一项强大的功能,它允许你临时保存本地更改而无需提交它们。在本教程中,你将学习如何将暂存的更改从一个 stash 移动到另一个 stash,从而能够更好地组织和管理你的 Git 工作流程。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git(("Git")) -.-> git/CollaborationandSharingGroup(["Collaboration and Sharing"]) git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") git/DataManagementGroup -.-> git/restore("Revert Files") git/CollaborationandSharingGroup -.-> git/pull("Update & Merge") git/CollaborationandSharingGroup -.-> git/push("Update Remote") git/CollaborationandSharingGroup -.-> git/remote("Manage Remotes") subgraph Lab Skills git/stash -.-> lab-415014{{"如何将更改从一个 Git 暂存区移动到另一个"}} git/restore -.-> lab-415014{{"如何将更改从一个 Git 暂存区移动到另一个"}} git/pull -.-> lab-415014{{"如何将更改从一个 Git 暂存区移动到另一个"}} git/push -.-> lab-415014{{"如何将更改从一个 Git 暂存区移动到另一个"}} git/remote -.-> lab-415014{{"如何将更改从一个 Git 暂存区移动到另一个"}} end

理解 Git Stash

什么是 Git Stash?

Git Stash 是 Git 中的一项强大功能,它允许你临时保存本地更改而无需提交它们。当你需要切换到不同的分支或从远程仓库拉取最新更改,但又不想丢失当前分支上已完成的工作时,这一功能特别有用。

何时使用 Git Stash?

你可以在以下场景中使用 Git Stash:

  • 切换分支:当你需要切换到不同的分支,但有尚未准备好提交的本地更改时。
  • 拉取更新:当你需要从远程仓库拉取最新更改,但有尚未准备好提交的本地更改时。
  • 试验代码:当你想要尝试新功能或试验一些代码,但在对结果满意之前不想提交更改时。

如何使用 Git Stash?

要使用 Git Stash,你可以按以下步骤操作:

  1. 暂存你的更改:运行以下命令将本地更改保存到 stash 中:
    git stash
  2. 切换到不同的分支:现在你可以切换到不同的分支或从远程仓库拉取最新更改。
  3. 恢复你暂存的更改:当你准备好回到之前的工作时,可以使用以下命令应用暂存的更改:
    git stash apply
    这会将最新的 stash 应用到当前分支。

Stash 管理

Git Stash 提供了几个命令来帮助你管理暂存的更改:

  • git stash list:列出你创建的所有 stash。
  • git stash show:显示特定 stash 中所做的更改。
  • git stash drop:从列表中删除特定的 stash。
  • git stash clear:从列表中删除所有 stash。

通过了解 Git Stash 的基础知识,你可以有效地管理本地更改,并在不同任务或分支之间切换而不会丢失工作。

转移暂存的更改

将暂存的更改移动到另一个分支

有时,你可能想将暂存的更改移动到不同的分支。当你暂存了一些更改,但后来意识到这些更改应该应用到另一个分支时,这会很有用。以下是操作方法:

  1. 暂存你的更改:
    git stash
  2. 切换到目标分支:
    git checkout target-branch
  3. 将暂存的更改应用到目标分支:
    git stash apply

现在,你暂存的更改已被转移到目标分支。

将暂存的更改应用到多个分支

你也可以将暂存的更改应用到多个分支。当你有一组更改想要应用到几个分支时,这会很有用。

  1. 暂存你的更改:
    git stash
  2. 将暂存的更改应用到第一个分支:
    git checkout branch1
    git stash apply
  3. 将暂存的更改应用到第二个分支:
    git checkout branch2
    git stash apply
  4. 对于你想应用更改的任何其他分支,重复步骤3。

转移有冲突的暂存更改

如果在将暂存的更改应用到不同分支时出现冲突,你可以手动解决。如下所示:

  1. 暂存你的更改:
    git stash
  2. 切换到目标分支:
    git checkout target-branch
  3. 应用暂存的更改:
    git stash apply
  4. 解决出现的任何冲突,然后添加已解决的文件:
    git add resolved-file1 resolved-file2
  5. 继续应用 stash:
    git stash apply --continue

通过了解如何在分支之间转移暂存的更改,你可以有效地管理工作流程,并确保你的更改应用到正确的位置。

实用的 Stash 管理

Stash 命名和引用

当你暂存更改时,Git 会自动为每个 stash 分配一个唯一标识符。不过,你也可以为 stash 赋予更具描述性的名称,以便于跟踪。方法如下:

git stash save "My feature changes"

然后,你可以通过索引或所分配的自定义名称来引用你的 stash:

git stash apply stash@{2}
git stash apply "My feature changes"

Stash 分支

Git Stash 还允许你基于暂存的更改创建一个新分支。当你想单独处理一组特定的更改时,这会很有用。方法如下:

git stash branch new-feature

此命令将创建一个名为 new-feature 的新分支,并将最新的 stash 应用到该分支上。

Stash 清理

在工作过程中,你的 stash 列表可能很快就会变得杂乱。为了保持 stash 的有序性,你可以使用以下命令:

git stash list  ## 列出所有 stash
git stash drop stash@{0}  ## 删除最新的 stash
git stash clear  ## 删除所有 stash

此外,你可以配置 Git 以自动清理旧的 stash:

git config --global stash.autoStash true
git config --global stash.maxStashSize 10

这些设置将在合并或变基之前自动暂存你的更改,并在列表中最多保留 10 个 stash。

通过掌握这些实用的 stash 管理技巧,你可以保持 Git 工作流程的有序和高效,确保你的更改易于访问和管理。

总结

在本指南结束时,你将对 Git stash 有扎实的理解,并能够在不同的 stash 之间高效地转移你的更改。这些知识将帮助你维护一个干净且有条理的 Git 仓库,使协作、审查和管理项目的版本控制变得更加容易。