Git Stash 命令详解
简介
在项目开发过程中,常常需要在同一分支上开发多个功能或修复多个漏洞,但有时您需要由于某些原因切换分支或返回到稳定的代码状态。这就是 Git stash 命令发挥作用的地方。Git stash 命令可以暂时保存当前分支上未提交的修改,并在需要时恢复它们。
Git Stash 命令的基本用法
命令格式
Git stash 命令的格式如下:
git stash [save [<message>]]
save [<message>]
:可选参数,可用于将描述文本附加到保存的更改上。
基本用法示例
在进行任何更改之前,使用 git stash
命令暂时保存当前分支上未提交的更改。例如:
$ git stash
Saved working directory and index state WIP on master: b0027b0 add new function
成功保存更改后,使用 git stash list
命令查看当前分支上所有被保存的更改。例如:
$ git stash list
stash@{0}: WIP on master: b0027b0 add new function
要恢复保存的更改,请使用 git stash apply
命令。例如:
$ git stash apply stash@{0}
使用 git stash apply
命令后,恢复的更改将返回到工作目录。但是,在暂存之前执行的文件删除或修改操作将不会被恢复,因此需要特别注意。
如果要直接还原保存的更改并将其合并到当前分支中,可以使用 git stash pop
命令。例如:
$ git stash pop stash@{0}
使用 git stash pop
命令后,恢复的更改将被直接合并到当前分支中。
不同情况下的示例
在实际开发中,有许多特殊情况需要使用 git stash
命令来保存和恢复更改。
保存更改但不在当前分支上
如果要修改的代码不在当前分支上,请使用 git stash --patch
命令将更改保存。例如:
$ git stash --patch
这样,所有更改都可以被保存并返回到主分支以执行其他操作。
保存更改并切换到另一个分支
如果您需要在执行其他操作之前切换分支,则可以使用 git stash -u
命令。例如:
$ git stash -u
$ git checkout other-branch
$ # do something
$ git checkout master
$ git stash pop
这样,在切换分支时将会被保存更改。
保存更改但保留未跟踪的文件
如果需要保存更改但保留未跟踪的文件,请使用 git stash --keep-index
命令。例如:
$ git stash --keep-index
这样,更改将被保存而不会存储未跟踪的文件。
储存特定的变更
如果你只需要储存某个特定文件或特定因素的变更,可以使用git stash push <path>
命令。例如:
$ git stash push filename
$ git stash push -p hunk
这样,就可以有选择性地储存变更。
恢复已删除的文件
如果一个文件已经被修改并提交,后来又被删除了,可以使用git stash branch <branchname> <stash>
命令来恢复已删除的文件。例如:
$ git stash branch new-branch stash@{0}
这将创建一个新分支,其中包括储存的变更,并从新分支恢复已删除的文件。这个命令也可以用于恢复其他变更,不仅限于文件已被删除的情况。
结论
在项目开发过程中,使用git stash
命令可以方便地储存和恢复未提交的变更,特别适用于多点修改和频繁地分支切换。通过本文,读者可以学习到Git stash命令的基本用法及其在不同情况下的用法。我们希望这篇文章对读者有所帮助。