清理存储点

我们可以使用 git stash drop 删除存储:

git stash drop stash@{1}
Dropped stash@{1} (17e2697fd8251df6163117cb3d58c1f62a5e7cdb)

如果我们使用 git stash clear 它将删除所有隐藏:

git stash clear

隐藏未跟踪或者忽略的文件

git stash 将存储已添加到索引中的更改(暂存更改)以及对 Git 当前跟踪的文件所做的更改(未暂存更改)。
它不会将尚未暂存和忽略文件的新文件存储在工作副本中。
在这些情况下, git stash -u 选项(或者 --include-untracked)有助于存储未跟踪的文件。

git stash -u

我们也可以在运行 git stash 时使用 -a 选项(或者 --all)来添加对忽略文件的更改。

git stash -a

重新应用我们保存的更改

git stash pop 从存储中删除更改并将它们重新应用到工作副本。

如果我们想重新应用更改并将它们保留在存储中,另一种方法是运行 git stash apply:

git status
On branch master
nothing to commit, working tree clean
git stash pop
On branch master
Changes to be committed:
new file: style.css
Changes not staged for commit:
modified: index.html
Dropped refs/stash@{0} (32b3aa1d185dfe6d57b3c3cc3b32cbf3e380cc6a)
Git stash

暂存你的工作

git stash 获取未提交的暂存和未暂存更改,将它们保存以供进一步使用,然后从工作副本中返回它们。
首先,我们可以运行 git status 以便查看脏状态。

然后运行 git stash 来存储更改:

git status
On branch master
Changes to be committed:
new file: style.css
Changes not staged for commit:
modified: index.html
$git stash
Saved working directory and index state WIP on master: 5002d47 our new homepage
HEAD is now at 5002d47 our new homepage
$git status
On branch master
nothing to commit, working tree clean

多个存储点

我们可以多次运行 git stash 以创建多个 stash,然后运行 git stash list 查看它们。
默认情况下,stash 被标识为“WIP”——正在进行中。
它位于分支的顶部,并提交我们从中创建存储的提交。

git stash list
stash@{0}: WIP on master: 5002d47 our new homepage
stash@{1}: WIP on master: 5002d47 our new homepage
stash@{2}: WIP on master: 5002d47 our new homepage

用 git stash save "message" 添加一些上下文是很好的

默认情况下,git stash pop 将重新应用上次创建的 stash:stash@{0}

我们可以像这样选择要重新应用的存储:

git stash pop stash@{3}

查看存储差异

使用 git stash show 查看 stash 的摘要:

git stash show
index.html | 1 +
style.css | 3 +++
2 files changed, 4 insertions(+)

我们还可以使用 -p 或者 --patch 选项查看存储的完整差异:

git stash show -p
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..d92368b
--- /dev/null
+++ b/style.css
@@ -0,0 +1,3 @@
+* {
+ text-decoration: blink;
+}
diff --git a/index.html b/index.html
index 9daeafb..ebdcbd2 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
+<link rel="stylesheet" href="style.css"/>

部分存储

Git 允许选择是否要存储单个文件、一堆文件或者文件中的单个更改。
git stash-p 遍历工作副本中的每个大块(Git 中的一个更改)并询问我们是否要存储它:

git stash -p
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..d92368b
--- /dev/null
+++ b/style.css
@@ -0,0 +1,3 @@
+* {
+ text-decoration: blink;
+}
Stash this hunk [y,n,q,a,d,/,e,?]? y
diff --git a/index.html b/index.html
index 9daeafb..ebdcbd2 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,2 @@
+<link rel="stylesheet" href="style.css"/>
Stash this hunk [y,n,q,a,d,/,e,?]? n

Hunk指令

命令描述
/搜索regex的hunk。
?打印帮助。
n不要困扰着亨克。
a删除这个hunk,所有后来的人都在文件中。
d不要删除这个hunk或者文件中的任何后来的人。
e手动编辑当前的HUNK
q退出(所选的Hunks将藏起)
s将HUNK分成较小的声音。
y藏起来。

从 stash 创建一个分支

我们可以使用 git stash branch 创建一个新分支以将隐藏更改应用于它:

git stash branch add-stylesheet stash@{1}
Switched to a new branch 'add-stylesheet'
On branch add-stylesheet
Changes to be committed:
new file: style.css
Changes not staged for commit:
modified: index.html
Dropped refs/stash@{1} (32b3aa1d185dfe6d57b3c3cc3b32cbf3e380cc6a)

定义

git stash 命令搁置我们对工作副本所做的更改,以便我们可以做另一项工作,然后返回并重新应用它们。

日期:2020-06-02 22:16:34 来源:oir作者:oir