有时您想切换分支,但是您正在修改当前项目的代码,您不想在没做完就切换分支,这时, Git stash可以使您做到这一点。 git stash命令使您可以在不提交当前分支的情况下切换分支。
下图演示了有关存储库和工作目录的存储的属性和作用。
Stashing会使您的工作目录处于混乱状态,并暂时将其保存以备将来使用。 git stash提供了许多选项。下面列出了一些有用的选项:
让我们通过实时场景来了解它,我在两个不同分支的两个文件中对项目GitExample2进行了更改,因此,我们可以将其存储为当前状态(current status)。为了stash,让我们看一下存储库的当前状态。要检查存储库的当前状态,请运行git status命令。 git status命令用作:
语法:
$ git status
输出:
从上面的输出中,您可以看到存储库中有两个未跟踪的文件 design.css 和 newfile.txt 。要临时保存它,我们可以使用git stash命令。
语法:
$ git stash
输出:
在给定的输出中,使用git stash命令保存工作。我们可以检查存储库的状态。
如您所见,我的工作只是停留在当前位置。现在,目录已清理。此时,您可以在分支之间切换并对其进行处理。
在Git中,要用消息存储更改,请运行以下命令:
语法:
$ git stash save ""
输出:
上面的存储将与消息一起保存
要检查存储的存储,请运行以下命令:
语法:
$ git stash list
输出:
在上述情况下,我已保存一个存储,显示为" stash@{0}:WIP on test :0a1a475 CSS file"。
如果我们有一个以上的存储,那么它将分别显示具有不同存储ID的所有存储。考虑以下输出:
它将显示索引为 stash@{0}:stash@{1}:的所有存储,依此类推。
您可以使用git stash命令重新应用刚刚stash的更改。要应用提交,请使用git stash命令,然后是apply选项。它用作:
语法:
$ git stash apply
输出:
上面的输出恢复了最后的存储。现在,如果您要检查存储库的状态,它将显示对该文件所做的更改。考虑以下输出:
从上面的输出中,您可以看到存储库已还原到存储之前的先前状态。它将输出显示为" Changes not staged for commit"。
如果存在多个存储,则可以使用" git stash apply"命令,然后使用存储索引ID来应用特定的提交。
语法:
$ git stash apply <stash id>
考虑以下输出:
如果我们没有指定存储,Git将获取最新的存储并尝试应用它。
我们可以追踪Stashing处及其变化。要在存储之前和存储操作之后查看文件中的更改,请运行以下命令:
$ git stash show
上面的命令将显示存放的文件以及对其进行的更改。考虑以下输出:
上面的输出说明有两个文件被stash,并对它们执行了两次插入,我们可以准确跟踪对文件进行的更改。要显示文件的更改内容,请执行以下命令:
语法:
$ git stash show -p
在这里,-p代表部分存储。给定的命令将显示编辑后的文件和内容,请考虑以下输出:
上面的输出显示了具有更改内容的文件名。它的作用与git diff命令相同。 git diff 命令还将显示确切的输出。
Git允许用户使用git stash pop命令重新应用以前的提交。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 <stash id>
假设我的队列中有两个存储空间,并且我不想删除最近的存储空间,但是我想删除较旧的存储空间。然后,将其操作为:
$ git stash drop stash@{1}
考虑以下输出:
在以上输出中,提交 stash @ {1} 已从队列中删除。
git stash clear 命令允许一次删除所有可用的存储。要删除所有可用的存储,请按以下命令操作:
语法:
$ git stash clear
它将删除存储库中存在的所有存储。
在上面的输出中,所有存储都被删除了。 git stash list命令为空,因为存储库中没有可用的存储。
如果您在某个分支上藏了一些工作,然后继续在那个分支上工作。然后,它可能在合并过程中产生冲突。因此,最好将工作存储在单独的分支上。
git stash branch命令允许用户将工作存储在单独的分支上,以避免冲突。该分支的语法如下:
语法:
$ git stash branch <Branch Name>
上面的命令将创建一个新分支,并在此分支上转移已保存的工作。考虑以下输出:
在以上输出中,将保存的工作转移到新创建的分支测试中。它将避免master分支上的合并冲突。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)