Git Stash如何帮助您处理多个分支

在Git中处理多个分支时,很容易意外地开始在错误的分支上工作,然后才意识到需要切换到另一个分支。 有时您可能正在使用某个功能,而当有人要求您修复紧急错误而您需要跳到另一个分支时,您还没有准备好提交更改。 这是Git的stash命令有用的地方。

创建和应用隐藏条目

存放使我们可以将未提交的更改的副本保存在当前工作分支上。

git stash命令以最简单的形式创建一个存储项。 要在以后重新应用隐藏的更改,我们可以使用git stash apply

创建一个存储:

git stash

将隐藏条目应用于当前的工作分支:

git stash apply

我们可以将隐藏条目应用到其他分支–不必是我们从中创建隐藏的分支。

隐藏未跟踪的文件

默认情况下, git stash将仅存储跟踪的文件。 如果我们要创建或应用包含未跟踪文件 (例如,先前尚未暂存的文件或.gitignore中的文件)的隐藏条目,则可以在我们的目录中添加-u (或--include-untracked )标志命令:

创建一个包含未跟踪文件的隐藏条目:

git stash -u

要应用包括未跟踪文件的隐藏条目:

git apply -u

多个隐藏条目

git stash apply会将您创建的最后一个stash条目应用于当前工作分支。 但是可以同时存储多个存储,并分别应用它们。 要列出所有存储项,请使用git stash list 。 这将显示一个看起来像这样的列表:

git stash list
stash@{0}: WIP on my-branch: ca96af0 Commit message 3
stash@{1}: WIP on my-branch: 03af20c Commit message 2
stash@{2}: WIP on my-branch: 216b662 Commit message 1

默认情况下,存储条目的名称为WIP(进行中的工作),后跟分支,并提交创建存储条目的提交。 如果我们有多个存储项,这可能不是很有用–很难知道我们将应用哪些更改! 取而代之的是,我们可以使用自定义消息来保存存储,因此更容易了解其含义:

git stash save 'my brand new stash'

现在,当我们列出存储项时,我们将看到自定义消息,而不是通用消息:

git stash list
stash@{0}: On my-branch: my brand new stash
stash@{1}: WIP on my-branch: ca96af0 Commit message 3
stash@{2}: WIP on my-branch: 03af20c Commit message 2
stash@{3}: WIP on my-branch: 216b662 Commit message 1

要应用列表中的特定存储项,我们可以使用apply命令对其进行引用:

git stash apply stash@{2}

(用我们希望使用的任何隐藏引用替换最后一部分。)

随后的存储条目将添加到存储列表的开头。 最新的存储将具有参考stash@{0}

存储列表可以包含来自不同分支的存储条目,这些条目可以分别应用于项目中的其他分支。

应用与弹出

应用存储条目会将副本保留在存储列表中-因此我们可以将同一存储条目应用于多个分支。 如果我们在应用git stash list后运行git stash list ,我们将看到应用的存储仍然存在。

列出我们目前所有的藏匿处:

git stash list

如果要在应用时从列表中删除隐藏条目,则可以使用pop而不是`apply:

git stash pop

这与apply相似,在默认情况下它将弹出最后一个存储项,或者我们可以弹出单个存储:

git pop stash@{2}

如果您知道不需要在其他任何分支上应用存储条目,并且希望保持存储列表的整洁美观,则弹出可能是一个好主意。

创建一个带有存储的新分支

我们可以将branch用于新分支,并应用最新的存储条目:

git stash branch

这基本上是以下操作的快捷方式:

git checkout -b my-new-branch
git stash apply

同样,如果您希望应用其他条目,则可以引用特定的存储条目:

git stash branch stash@{2}

删除和清除藏匿处

保持干净的存储并删除我们不再需要的存储条目是一个好主意,尤其是在分支之间移动时。 如果我们只有很少的藏匿处而不是数百个藏匿处,那么生活将会简单得多! 另外,一旦提交了更改,我们实际上并不需要这些存储。

我们可以使用drop命令从存储列表中删除单个存储。 与popapply ,默认情况下,这将影响最新的存储项。 如果您要定位特定的存储,则可以将其传递给存储参考:

git stash drop stash@{2}

另外,我们可以一次清除所有存储项:

git stash clear

翻译自: https://css-irl.info/how-git-stash-can-help-you-juggle-multiple-branches/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值