📅  最后修改于: 2020-12-13 14:02:01             🧑  作者: Mango
有时您想切换分支,但是您正在处理当前项目的不完整部分。您不想做半完成的工作。 Git隐藏可以使您做到这一点。 git stash命令使您可以在不提交当前分支的情况下切换分支。
下图演示了有关存储库和工作目录的存储的属性和作用。
通常,藏匿处的含义是“将物品安全地存储在隐藏的地方” 。 Git中的隐匿感也相同。 Git暂时安全地保存您的数据而无需提交。
存放会使您的工作目录处于混乱状态,并暂时将其保存以备将来使用。 git stash提供了许多选项。下面列出了一些有用的选项:
让我们通过实时场景来了解它。我在两个不同分支的两个文件中对项目GitExample2进行了更改。我处于混乱状态,还没有完全编辑任何文件。因此,我想暂时将其保存以备将来使用。我们可以将其存储为当前状态。为了隐藏,让我们看一下存储库的当前状态。要检查存储库的当前状态,请运行git status命令。 git status命令用作:
句法:
$ git status
输出:
从上面的输出中,您可以看到存储库中有两个未跟踪的文件design.css和newfile.txt的状态。要临时保存它,我们可以使用git stash命令。 git stash命令用作:
句法:
$ git stash
输出:
在给定的输出中,使用git stash命令保存工作。我们可以检查存储库的状态。
如您所见,我的工作只是停留在当前位置。现在,目录已清理。此时,您可以在分支之间切换并对其进行处理。
在Git中,可以通过消息隐藏更改。要用消息存储更改,请运行以下命令:
句法:
$ git stash save ""
输出:
上面的存储将与消息一起保存
要检查存储的存储,请运行以下命令:
句法:
$ git stash list
输出:
在上述情况下,我已存储一个存储,在测试中显示为“ stash @ {0}:WIP:0a1a475 CSS文件”。
如果我们有一个以上的存储,那么它将分别显示具有不同存储ID的所有存储。考虑以下输出:
它将显示索引为stash @ {0}:stash @ {1}:的所有存储库,依此类推。
您可以使用git stash命令重新应用刚刚隐藏的更改。要应用提交,请使用git stash命令,然后是apply选项。它用作:
句法:
$ git stash apply
输出:
上面的输出恢复了最后一个存储。现在,如果您要检查存储库的状态,它将显示对该文件所做的更改。考虑以下输出:
从以上输出中,您可以看到存储库已还原到存储之前的先前状态。它显示输出为“未暂缓进行提交的更改”。
如果存在多个存储,则可以使用“ git stash apply”命令,然后使用存储索引ID来应用特定的提交。它用作:
句法:
$ git stash apply
考虑以下输出:
输出:
如果我们没有指定存储,Git将获取最新的存储并尝试应用它。
我们可以追踪藏匿处及其变化。要在存储之前和存储操作之后查看文件中的更改,请运行以下命令:
句法:
$ git stash show
上面的命令将显示存放的文件以及对其进行的更改。考虑以下输出:
输出:
上面的输出说明有两个文件被隐藏,并对它们执行了两次插入。
我们可以准确跟踪对文件进行的更改。要显示文件的更改内容,请执行以下命令:
句法:
$ git stash show -p
在这里,-p代表部分存储。给定的命令将显示编辑后的文件和内容,请考虑以下输出:
输出:
上面的输出显示了具有更改内容的文件名。它的作用与git diff命令相同。 git diff命令还将显示确切的输出。
Git允许用户使用git stash pop命令重新应用以前的提交。弹出选项将更改从存储中删除,并将其应用于您的工作文件。
git stash pop命令与git stash apply非常相似。这两个命令之间的主要区别是stash pop命令,该命令在应用了存储后将其从堆栈中删除。
句法:
$ git stash pop
上面的命令将先前的提交重新应用于存储库。考虑以下输出。
输出:
git stash drop命令用于从队列中删除存储。通常,它会删除最新的存储。使用stash drop命令之前应格外小心,因为一旦应用它就很难撤消。
还原它的唯一方法是在删除存储区后不关闭终端。 stash drop命令将用作:
句法:
$ git stash drop
输出:
在以上输出中,已从给定的三个存储中删除了最新存储(stash @ {0})。 stash list命令列出了队列中所有可用的存储。
我们还可以从队列中删除特定的存储。要从可用存储区中删除特定存储区,请在存储区放置命令中传递存储区ID。它将被处理为:
句法:
$ git stash drop
假设我的队列中有两个存储区,并且我不想删除最近的存储区,但是我想删除较旧的存储区。然后,将其操作为:
$ git stash drop stash@{1}
考虑以下输出:
在上面的输出中,已将提交stash @ {1}从队列中删除。
git stash clear命令允许一次删除所有可用的存储。要删除所有可用的存储,请按以下命令操作:
句法:
$ git stash clear
它将删除存储库中存在的所有存储。
输出:
在上面的输出中,所有存储都被删除了。 git stash list命令为空,因为存储库中没有可用的存储。
如果您在某个分支上藏了一些工作,然后继续在那个分支上工作。然后,它可能在合并过程中产生冲突。因此,最好将工作存储在单独的分支上。
git stash branch命令允许用户将工作存储在单独的分支上,以避免冲突。该分支的语法如下:
句法:
$ git stash branch
上面的命令将创建一个新分支,并在此分支上转移已保存的工作。考虑以下输出:
输出:
在以上输出中,将保存的工作转移到新创建的分支测试中。它将避免master分支上的合并冲突。