Git stash命令

Git stash命令

有时候你想要切换分支,但是你正在进行当前项目的一个未完成的部分工作。你不想要提交一半完成的工作。Git 隐藏允许你这样做。 git stash 命令 允许你在不提交当前分支的情况下切换分支。

下图演示了关于仓库和工作目录的隐藏属性和作用。

Git stash命令

一般来说,stash 的意思是 “将某物安全地存放在隐藏的地方”。在 Git 中,stash 也是一样的意思;Git 会临时保存你的数据,而不会进行提交。

Stash 命令会将你的工作目录的混乱状态进行临时保存,以备将来使用。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 进行了更改。我处于一个混乱的状态,还没有完全编辑任何文件。因此,我想将其暂时保存以备将来使用。我们可以使用 stash 命令将其保存为当前状态。为了进行 stash,让我们先查看仓库当前的状态。使用 git status 命令来检查仓库当前的状态,命令格式如下:

语法:

$ git status

输出:

Git stash命令

从上面的输出中,你可以看到有两个未跟踪的文件 design.cssnewfile.txt 在仓库中可用。为了暂时保存它们,我们可以使用git stash命令。git stash命令的用法如下:

语法:

$ git stash

输出:

Git stash命令

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

Git stash命令

正如您所见,我的工作只是存放在它当前的位置。现在,目录已经清理完毕。此时,您可以在不同的分支之间切换并在它们上工作。

Git Stash Save(使用消息保存工作进度)

在Git中,可以使用消息保存更改。要带有消息保存更改,请运行以下命令:

语法:

$ git stash save ""

输出:

Git stash命令

上述存储将保存一条消息

Git Stash列表(查看存储的存储)

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

语法:

$ git stash list

输出:

Git stash命令

它将显示所有的储藏,并以索引的形式展示: stash@{0}:stash@{1}: 以此类推。

Git Stash应用

通过使用git 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命令

如果我们没有指定一个stash,Git会取最近的stash并尝试应用它。

Git Stash更改

我们可以跟踪stash及其更改。要在stash操作之前和之后查看文件中的更改,请运行以下命令:

语法:

$ git stash show

上述命令将显示存储的文件以及对它们所做的更改。考虑下面的输出:

输出:

Git stash命令

上面的输出显示有两个文件被存储,对其进行了两次插入操作。

我们可以准确追踪文件上所做的更改。要显示文件的更改内容,请执行以下命令:

语法:

$ git stash show -p

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

输出:

Git stash命令

以上输出显示了具有更改内容的文件名。它的作用与git diff命令相同。 git diff 命令也会显示相同的输出。

Git Stash Pop(重新应用存储的更改)

Git允许用户使用git stash pop命令重新应用之前的提交。弹出选项会从stash中移除更改并应用到您的工作文件中。

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

语法:

$ git stash pop

上述命令将重新应用以前的提交到存储库中。请看下面的输出。

输出:

Git stash命令

Git Stash Drop(取消存储)

git stash drop 命令用于从队列中删除一个存储。通常情况下,它会删除最近的存储。在使用存储撤销命令之前应注意谨慎,因为一旦应用就很难撤销。

唯一撤销的方法是在删除存储之后不关闭终端。存储撤销命令用法如下:

语法:

$ git stash drop

输出:

Git stash命令

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

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

语法:

$ git stash drop <stash id>

假设我在我的队列中有两个可用的隐藏区(stash),我不想丢弃最近的隐藏区,但我想删除较早的隐藏区。那么操作如下:

$ git stash drop stash@{1}

考虑以下输出:

Git stash命令

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

Git Stash Clear

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

语法:

$ git stash clear

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

输出:

Git stash命令

所有的储藏(stash)都已在上述输出中删除。git stash list命令为空,因为存储的内容(stash)在仓库中不存在。

Git Stash 分支

如果你在特定分支上贮藏了一些工作并继续在该分支上工作,那么在合并时可能会产生冲突。因此,最好在一个单独的分支上贮藏工作。

git stash branch命令允许用户在一个单独的分支上贮藏工作以避免冲突。该分支的语法如下:

语法:

$ git stash branch <Branch Name>

上述命令将创建一个新的分支,并将存储的工作转移到该分支。考虑下面的输出:

输出:

Git stash命令

在上面的输出中,存储的工作被转移到一个新创建的分支testing。这将避免主分支上的合并冲突。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程