git stash
什么是Git Stash
在使用Git进行代码版本管理时,我们经常会遇到需要暂时切换到其他分支的情况。然而,如果当前分支上有一些未提交的修改,切换分支将会导致这些修改丢失或者需要先提交再切换。这时,Git Stash就能派上用场。
Git Stash是Git提供的一个功能强大的命令,用于临时保存当前工作目录的修改,使得我们可以在不提交修改的情况下切换分支。当我们再次切换回来时,可以通过Git Stash将之前保存的修改重新应用到工作目录中。
使用Git Stash的场景
使用Git Stash的场景主要包括以下几种情况:
- 切换分支:当我们需要在当前分支上工作一会儿,但是又需要切换到其他分支进行其他工作时,使用Git Stash可以方便地暂存当前未提交的修改。
- 修复Bug:当我们正在开发一个新功能,并且已经修改了很多代码,此时发现一个紧急Bug需要立即修复。可以使用Git Stash将当前修改暂存起来,切换到修复Bug的分支上进行修复,然后再切换回来将刚才的修改重新应用。
- 多人协作:在多人协作开发中,有时候我们需要将某个未完成的功能暂时提交保存起来,以便其他人能够看到我们的工作进度,同时又不希望这些未完成的修改被合并进主干。这时候可以使用Git Stash暂存这些修改。
Git Stash基本用法
Git Stash提供了一些基本的命令,用以实现对修改的保存、查询和应用。
保存当前修改
我们可以使用git stash save
命令来保存当前未提交的修改。命令的基本用法如下:
git stash save "message"
其中,message
是一个可选的描述信息,用于说明保存的修改。我们可以根据需要进行填写。执行该命令后,Git会将当前的修改暂存起来,并将工作区恢复到干净的状态。
查询保存的修改
我们可以使用git stash list
命令来查询当前分支上保存的所有修改。命令的基本用法如下:
git stash list
该命令会列出保存的修改的列表,并且每个修改都会有一个唯一的stash@{n}
标识符。通过stash@{n}
可以精确定位到某个具体的保存记录。
应用保存的修改
当我们需要重新应用某个保存的修改时,可以使用git stash apply
命令。命令的基本用法如下:
git stash apply stash@{n}
其中,stash@{n}
是我们在git stash list
中查询到的具体的保存记录。执行该命令后,Git会将保存的修改重新应用到工作区,但是并不会将其从保存的记录中移除。
应用并删除保存的修改
如果我们在应用某个保存的修改之后,确定不再需要这个保存记录,可以使用git stash pop
命令。命令的基本用法如下:
git stash pop stash@{n}
执行该命令后,Git会将保存的修改重新应用到工作区,并且从保存的记录中移除。
Git Stash的高级用法
除了基本的用法之外,Git Stash还提供了一些高级的功能,使得我们可以更加灵活地应对不同的需求。
保存包括未暂存文件的修改
默认情况下,git stash save
只会保存已经暂存的文件的修改。如果我们希望将所有的未提交修改都保存,可以添加-u
或者--include-untracked
参数,命令的用法如下:
git stash save -u "message"
保存但不包括未跟踪文件的修改
有时候,我们并不希望将未跟踪文件的修改也保存起来。这时候可以添加-a
或者--all
参数,命令的用法如下:
git stash save -a "message"
保存只包括指定文件的修改
如果我们希望只保存某些指定文件的修改,可以在save
命令后面添加文件路径参数,命令的用法如下:
git stash save -p "message"
该命令会进入交互模式,逐个文件地询问是否需要保存其修改。我们可以通过输入y
或者n
来进行选择。
保存只包括某个文件的修改
如果我们只想保存某个具体文件的修改,可以使用save
命令的-- path
参数,命令的用法如下:
git stash save -- path/to/file "message"
该命令会将path/to/file
路径下的文件的修改保存起来。
清除保存的修改
当我们确认某个保存记录不再需要时,可以使用git stash drop
命令将其删除。命令的基本用法如下:
git stash drop stash@{n}
其中,stash@{n}
是我们在git stash list
中查询到的具体的保存记录。
清除所有保存的修改
如果我们希望一次性删除所有的保存记录,可以使用git stash clear
命令。命令的用法如下:
git stash clear
执行该命令后,Git会清除所有的保存记录。