Git命令集十三——快照操作

    Git工具中提供了一个stash命令,这个命令的作用是创建快照。快照主要的用途是将当前未更新到缓存区的修改进行入栈保存,创建快照后,Git的状态会变回上一次提交时的状态,这时候我们可以做其他的操作。创建的快照会被保存在栈中,在需要的时候,我们可以恢复快照。举一个小例子,实际开发中,很多情况我们都会从主分支拉出一个新的分支进行新功能的开发,如果我们在开发过程中,有一个紧急的bug需要到主分支中修改,这时候我们常常会将目前为完善的代码先提交到新的分支,然后切回主分支修改bug,之后再回来继续开发。但是如果这个新的分支并不只是你一个人开发,你的不完善的提交很有可能造成别人无法工作,其实你可以使用Git的快照命令,先将自己的修改存成快照入栈保存,回到主分支修改完bug后,在将快照出栈即可。

1.git stash

    将当前未更新到缓存区的修改创建成快照。需要注意,快照是采用栈的方式管理。我们可以入栈多个快照,例如先做一部分修改,创建为快照,之后又进行了修改,再次创建快照。第2次快照并不会覆盖以前的快照,我们可以指定恢复到的快照。

2.git stash list

    打印当前栈中的所有快照。

3.git stash show <stash>

    打印某个快照的修改信息,后面的stash参数指定快照在栈中的位置,命令格式如下:stash@{num},最后入栈的为stash@{0},向前依次为stash@{1}、stash@{2}...。如果不限stash参数,则默认将打印栈顶快照的信息。

4.git stash pop <stash>

    恢复到某个快照版本,如果不加stash参数,则默认会恢复到栈顶的快照版本。这个命令会将恢复的快照从栈中删除掉。

5.git stash apply <stash>

    恢复到某个快照的版本,如果不加stash参数,则默认会恢复到栈顶的快照版本。这个命令和pop的不同之处在于恢复的快照并不会从栈中删除。

6.git stash clear

    清空栈中的所有快照。

7.git stash drop <stash>

    清除栈中的某个快照,如果不设置stash参数,则会默认清除栈顶的快照。