Git - Stash命令

Git - Stash命令 首页 / Git入门教程 / Git - Stash命令

有时您想切换分支,但是您正在修改当前项目的代码,您不想在没做完就切换分支,这时, Git stash可以使您做到这一点。 git stash命令使您可以在不提交当前分支的情况下切换分支。

下图演示了有关存储库和工作目录的存储的属性和作用。

Git Stash


Stashing会使您的工作目录处于混乱状态,并暂时将其保存以备将来使用。 git stash提供了许多选项。下面列出了一些有用的选项:

  • Git stash
  • Git stash save
  • Git stash list
  • Git stash apply
  • Git stash changes
  • Git stash pop
  • Git stash drop
  • Git stash clear
  • Git stash branch

让我们通过实时场景来了解它,我在两个不同分支的两个文件中对项目GitExample2进行了更改,因此,我们可以将其存储为当前状态(current status)。为了stash,让我们看一下存储库的当前状态。要检查存储库的当前状态,请运行git status命令。 git status命令用作:

语法:

$ git status

输出:

Git Stash

从上面的输出中,您可以看到存储库中有两个未跟踪的文件 design.css newfile.txt 。要临时保存它,我们可以使用git stash命令。 

语法:

$ git stash

输出:

Git Stash

在给定的输出中,使用git stash命令保存工作。我们可以检查存储库的状态。

Git Stash

如您所见,我的工作只是停留在当前位置。现在,目录已清理。此时,您可以在分支之间切换并对其进行处理。

Git Stash Save

在Git中,要用消息存储更改,请运行以下命令:

语法:

$ git stash save ""

输出:

Git Stash

上面的存储将与消息一起保存

Git Stash List

要检查存储的存储,请运行以下命令:

语法:

$ git stash list

输出:

Git Stash

在上述情况下,我已保存一个存储,显示为" stash@{0}:WIP on test :0a1a475 CSS file"。

如果我们有一个以上的存储,那么它将分别显示具有不同存储ID的所有存储。考虑以下输出:

Git Stash

它将显示索引为 stash@{0}:stash@{1}:的所有存储,依此类推。

Git Stash Apply

您可以使用git stash命令重新应用刚刚stash的更改。要应用提交,请使用git stash命令,然后是apply选项。它用作:

语法:

$ git stash apply

输出:

Git Stash

上面的输出恢复了最后的存储。现在,如果您要检查存储库的状态,它将显示对该文件所做的更改。考虑以下输出:

Git Stash

从上面的输出中,您可以看到存储库已还原到存储之前的先前状态。它将输出显示为" Changes not staged for commit"。

如果存在多个存储,则可以使用" git stash apply"命令,然后使用存储索引ID来应用特定的提交。

语法:

$ git stash apply <stash id>

考虑以下输出:

Git Stash

如果我们没有指定存储,Git将获取最新的存储并尝试应用它。

Git Stash Changes

我们可以追踪Stashing处及其变化。要在存储之前和存储操作之后查看文件中的更改,请运行以下命令:

$ git stash show

上面的命令将显示存放的文件以及对其进行的更改。考虑以下输出:

Git Stash

上面的输出说明有两个文件被stash,并对它们执行了两次插入,我们可以准确跟踪对文件进行的更改。要显示文件的更改内容,请执行以下命令:

语法:

$ git stash show -p

在这里,-p代表部分存储。给定的命令将显示编辑后的文件和内容,请考虑以下输出:

Git Stash

上面的输出显示了具有更改内容的文件名。它的作用与git diff命令相同。 git diff 命令还将显示确切的输出。

Git Stash Pop

Git允许用户使用git stash pop命令重新应用以前的提交。pop选项将更改从存储中删除,并将其应用于您的工作文件。

git stash pop命令与git stash apply非常相似。这两个命令之间的主要区别是stash pop命令,该命令在应用了存储后将其从堆栈中删除。

语法:

$ git stash pop

上面的命令将先前的提交重新应用于存储库。考虑以下输出。

Git Stash

Git Stash Drop(Unstash)

git stash drop 命令用于从队列中删除存储。通常,它会删除最新的存储。使用stash drop命令之前应格外小心,因为一旦应用它就很难撤消。

还原它的唯一方法是在删除存储区后不关闭终端。 stash drop命令将用作:

语法:

$ git stash drop

输出:

Git Stash

在上面的输出中,从给定的三个存储中删除了最新存储(stash@{0})。 stash list命令列出了队列中所有可用的存储。

我们还可以从队列中删除特定的存储。要从可用存储区中删除特定存储区,请在存储区放置命令中传递存储区ID。它将被处理为:

语法:

$ git stash drop <stash id>

假设我的队列中有两个存储空间,并且我不想删除最近的存储空间,但是我想删除较旧的存储空间。然后,将其操作为:

$ git stash drop stash@{1}

考虑以下输出:

Git Stash

在以上输出中,提交 stash @ {1} 已从队列中删除。

Git Stash Clear

git stash clear 命令允许一次删除所有可用的存储。要删除所有可用的存储,请按以下命令操作:

语法:

$ git stash clear

它将删除存储库中存在的所有存储。

Git Stash

在上面的输出中,所有存储都被删除了。 git stash list命令为空,因为存储库中没有可用的存储。

Git Stash Branch

如果您在某个分支上藏了一些工作,然后继续在那个分支上工作。然后,它可能在合并过程中产生冲突。因此,最好将工作存储在单独的分支上。

git stash branch命令允许用户将工作存储在单独的分支上,以避免冲突。该分支的语法如下:

语法:

$ git stash branch <Branch Name>

上面的命令将创建一个新分支,并在此分支上转移已保存的工作。考虑以下输出:

Git Stash

在以上输出中,将保存的工作转移到新创建的分支测试中。它将避免master分支上的合并冲突。

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

邱岳的产品实战 -〔邱岳〕

Go语言从入门到实战 -〔蔡超〕

许式伟的架构课 -〔许式伟〕

透视HTTP协议 -〔罗剑锋(Chrono)〕

Swift核心技术与实战 -〔张杰〕

如何看懂一幅画 -〔罗桂霞〕

Spring编程常见错误50例 -〔傅健〕

如何读懂一首诗 -〔王天博〕

超级访谈:对话汤峥嵘 -〔汤峥嵘〕

好记忆不如烂笔头。留下您的足迹吧 :)