0

鲜为人知但功能强大的 Git 技术

 2 years ago
source link: https://os.51cto.com/article/712240.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
5522c5194af4ccba6c20260b47255d6b48700d.jpg

Stashing 允许您保留对存储库所做更改的副本,而无需创建提交。

如果您正在切换上下文,这非常有用,尤其是当您在同一个项目的不同错误或任务之间来回切换时。

git stash 的基本操作

在处理并行工作时,您可以使用 git stash 来简化您的工作流程。想象一下,您正在处理一项长期运行的任务,并在本地工作副本中进行了更改。然后,出现紧急情况,您必须立即处理。

stashing 更改的标准工作流程是:

  1. 进行本地更改
  2. 存储本地更改
  3. <其他作品>
  4. 重新应用隐藏的更改

当您使用git stash [push]命令存储更改时,git 将重置为 HEAD。然后,您可以继续处理您需要的任何事情,提交到存储库,就好像您从未进行过原始更改一样。

一旦你首先完成了任何让你偏离轨道的事情,使用git stash pop应用你的更改并将它们从存储中删除。您还可以使用 git stash apply 应用您的更改并将它们保存在存储中。如果您想快速将更改应用到多个分支,这可能很有用。

使用多个 Stash

如果您真的很忙,您可能会发现自己同时处理多项任务,并且您可能需要将它们全部隐藏起来。别担心, git stash 就是为此而构建的。

每次使用 git stash push 时,都会保存另一组更改。使用git stash list显示您已隐藏的所有内容。你会看到有点像这样的东西:

stash@{0}: WIP on main: 2fba62e first commit
stash@{1}: WIP on main: 2fba62e first commit

这些消息不是很有用,但是您可以通过在存储时添加自定义消息来为自己留下一些线索:

git stash push -m "third"

当您现在列出时,您会看到您的自定义消息:

stash@{0}: On main: third
stash@{1}: WIP on main: 2fba62e first commit

显示记录变更的差异

要找出存储中发生的变化,请使用 git stash show。如果没有进一步的参数,它将显示最新存储的差异摘要,如下所示:

$ git stash show
README.md | 3 +++
1 file changed, 3 insertions(+)

您还可以传递存储 id 来查询特定条目:

git stash show stash@{0}

从 Stash 创建一个分支

您可能会认为存储中的更改非常重要,以至于它们应该放在自己的分支中。如果是这样,请使用分支命令从存储中创建一个新分支:

git stash branch

同样,默认情况下这将适用于最近的存储,但如果需要,您可以提供存储 id。Git 从存储库中的同一点创建新分支作为存储。然后它将存储中的更改应用到您的工作副本。

清理 Stash

没有“git unstash”命令。如果要删除存储条目,请使用 drop:

git stash drop

同样,这默认为最新的,但您可以提供一个存储 ID。如果您决定要摆脱 Stash 的所有内容,请使用以下命令:

git stash clear

使用 git stash 进行临时轻量级提交

Git 存储库远没有完整存储库强大。但是它们本身仍然提供许多有用的功能。如果您经常发现自己需要在工作中切换分支,那就请使用 stashes。

Stashing 只是 git 的一小部分,它是一个提供很多东西的程序。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK