git stash -如何在未提交版本之间切换

o3imoua4  于 2023-01-07  发布在  Git
关注(0)|答案(1)|浏览(133)
  • [git新手在这里]*

假设我正在处理一个新文件,我正在编写下面的故事:

Version1: A guy walks into a bar
          [here I tell my story]

在这一点上,我喜欢我写的东西,但我希望做一些修改,所以我把我的修改如下:

$git stash save -u 'version1: a guy walks'

我收到以下消息:

Saved working directory and index state On dev_story: version1: a guy walks

接下来,我做了一个更改:

Version2: A nice dude walks into a bar
          [here I tell a slighly different story]

然后再藏起来

$git stash save -u 'version2: a dude walks'

收到的消息:

Saved working directory and index state On dev_story: version2: a dude  walks

查看我的藏匿清单,我看到:

$ git stash list
stash@{0}: On dev_story: version2: a dude walks
stash@{1}: On dev_story: version1: a guy walks

我想把我的作品展示给一个朋友,并讨论版本1和版本2。
当我尝试应用stash@{0}时,它没有显示我尝试过的"一个家伙走...":

$ git stash show stash@{0}  //new line no error

$ git stash apply stash@{0} 

test/story.txt already exists, no checkout
error: could not restore untracked files from stash
dgsult0t

dgsult0t1#

$git stash显示stash@{0}//新行没有错误
Git在这里什么也没显示,因为你的文件未被跟踪。git stash show不会显示未被跟踪的文件,除非你用-u请求。

$ git stash show -u stash@{0}
test/story.txt | 1 +
1 file changed, 1 insertion(+)

$ git stash show -u -p stash@{0}
diff --git a/test/story.txt b/test/story.txt
new file mode 100644
index 0000000..f5d91d3
--- /dev/null
+++ b/test/story.txt
@@ -0,0 +1 @@
+A nice dude walks into a bar
$ git stash apply stash@{0} 

test/story.txt already exists, no checkout
error: could not restore untracked files from stash

你已经有一个修改过的test/story.txt文件,因为你隐藏的修改 * 会创建一个新文件 *,所以git会保护你不被它覆盖。
请参阅Stashing and Cleaning了解更多关于隐藏的信息。
总的来说,我发现隐藏很容易变得混乱,忘记里面有什么或它适用于什么。暂时隐藏更改是有用的。如果要隐藏更长时间,我建议使用提交和分支。
如果你需要保存一些未完成的工作,提交并记录为"wip"(进行中的工作),然后amend the commit later (see Changing the Last Commit.如果你想有两个不同的版本,创建一个分支;这是他们擅长的。树枝很便宜。

相关问题