有时您想切换分支,但您正在处理当前项目的不完整部分。您不想提交未完成的工作。Git 存储允许您这样做。在git的藏匿命令允许你切换分支不提交当前分支。
下图展示了存储库和工作目录的属性和作用。
一般来说,stash 的意思是“把东西安全地存放在一个隐蔽的地方”。Git 中的 stash 意义也相同;Git 暂时安全地保存您的数据,无需提交。
Stashing 处理您工作目录的凌乱状态,并暂时保存以供进一步使用。git stash 提供了许多选项。下面给出了一些有用的选项:
- Git 存储
- Git 存储保存
- Git 存储列表
- Git 存储应用
- Git 存储更改
- Git 藏匿流行
- Git 藏匿处
- Git 存储清除
- Git存储分支
藏匿工作
让我们通过一个实时场景来理解它。我在来自两个不同分支的两个文件中对我的项目 GitExample2 进行了更改。我处于混乱状态,我还没有完全编辑任何文件。所以我想暂时保存它以备将来使用。我们可以把它藏起来保存为它的当前状态。要存储,让我们看看存储库的当前状态。要检查存储库的当前状态,请运行 git status 命令。git status 命令用作:
句法:
$ git status
输出:
从上面的输出中,您可以看到存储库中有两个未跟踪的文件design.css和newfile.txt可用的状态。为了暂时保存它,我们可以使用 git stash 命令。git stash 命令用作:
句法:
$ git stash
输出:
在给定的输出中,工作使用 git stash 命令保存。我们可以检查存储库的状态。
如您所见,我的作品只是藏在当前位置。现在,目录已被清理。此时,您可以在分支之间切换并对其进行处理。
Git Stash Save(使用消息保存Stash):
在 Git 中,更改可以与消息一起存储。要使用消息存储更改,请运行以下命令:
句法:
$ git stash save "<Stashing Message>"
输出:
上述藏匿处将与一条消息一起保存
Git 存储列表(检查存储的存储)
要检查存储的存储,请运行以下命令:
句法:
$ git stash list
输出:
在上面的例子中,我做了一个 stash,它显示为“ stash@ {0}: WIP on the test: 0a1a475 CSS file ”。
如果我们有多个 stash,那么它将分别显示所有具有不同 stash id 的 stash。考虑以下输出:
它将显示索引为stash@ {0}: stash@ {1}:等的所有stash。
Git 存储应用
您可以使用 git stash 命令重新应用刚刚隐藏的更改。要应用提交,请使用 git stash 命令,后跟 apply 选项。它被用作:
句法:
$ git stash apply
输出:
上面的输出恢复了最后的存储。现在,如果您要检查存储库的状态,它将显示对文件所做的更改。考虑以下输出:
从上面的输出中,您可以看到存储库已恢复到 stash 之前的状态。它将输出显示为“更改未暂存以进行提交”。
如果有多个 stash,您可以使用“git stash apply”命令后跟 stash 索引 id 来应用特定的提交。它被用作:
句法:
$ git stash apply <stash id>
考虑以下输出:
输出:
如果我们不指定一个 stash,Git 会使用最新的 stash 并尝试应用它。
Git 存储更改
我们可以跟踪存储及其变化。要在存储之前和存储操作之后查看文件中的更改,请运行以下命令:
句法:
$ git stash show
上面的命令将显示隐藏的文件和对它们所做的更改。考虑以下输出:
输出:
上面的输出说明有两个文件被隐藏,并且对它们执行了两次插入。
我们可以准确地跟踪对文件所做的更改。要显示文件的更改内容,请执行以下命令:
句法:
$ git stash show -p
这里,-p 代表部分存储。给定的命令将显示编辑过的文件和内容,请考虑以下输出:
输出:
上面的输出显示了内容已更改的文件名。它的作用与 git diff 命令相同。在git的差异命令也将显示精确的输出。
Git Stash Pop(重新应用隐藏的更改)
Git 允许用户使用 git stash pop 命令重新应用以前的提交。弹出选项从存储中删除更改并将它们应用于您的工作文件。
git stash pop 命令与 git stash apply 非常相似。这两个命令之间的主要区别是 stash pop 命令,它在应用后从堆栈中删除 stash。
句法:
$ git stash pop
上面的命令会将之前的提交重新应用到存储库。考虑以下输出。
输出:
Git Stash Drop (Unstash)
在GIT中藏匿降命令用于从队列中删除一个存储。通常,它会删除最近的存储。在使用 stash drop 命令之前应该小心,因为一旦应用就很难撤消。
恢复它的唯一方法是在删除存储后不关闭终端。stash drop 命令将用作:
句法:
$ git stash drop
输出:
在上面的输出中,最近的存储( stash@ {0})已从给定的三个存储中删除。stash list 命令列出队列中所有可用的 stash。
我们还可以从队列中删除特定的存储。要从可用的 stash 中删除特定的 stash,请在 stash drop 命令中传递 stash id。它将被处理为:
句法:
$ git stash drop <stash id>
假设我的队列中有两个可用的 stash,并且我不想删除最近的 stash,但我想删除旧的。然后,它将被操作为:
$ git stash drop stash@{1}
考虑以下输出:
在上面的输出中,提交stash@ {1}已从队列中删除。
Git 存储清除
在git的藏匿明确命令允许一次删除所有可用的藏匿处。要删除所有可用的存储,请操作以下命令:
句法:
$ git stash clear
它将删除存储库中存在的所有存储。
输出:
上面的输出中的所有存储都被删除了。git stash list 命令为空,因为存储库中没有可用的存储。
Git 存储分支
如果您在特定分支上存储了一些工作并继续在该分支上工作。然后,它可能会在合并过程中产生冲突。因此,最好将工作存储在单独的分支上。
git stash branch 命令允许用户将工作存储在单独的分支上以避免冲突。该分支的语法如下:
句法:
$ git stash branch <Branch Name>
上面的命令将创建一个新分支并转移其上的隐藏工作。考虑以下输出:
输出:
在上面的输出中,隐藏的工作被转移到一个新创建的分支测试。它将避免 master 分支上的合并冲突。