📜  如何在当前分支中使用 git stash - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:38:39.623000             🧑  作者: Mango

如何在当前分支中使用 git stash - Shell-Bash

在我们的日常开发工作中,经常会遇到需要暂时切换到其他分支开发或者修复紧急bug的情况。但是,如果当前分支上的一些修改还没有提交,直接切换到其他分支就可能会导致代码丢失或冲突。这种情况下,我们可以使用 git stash 命令将修改的工作保存起来,以便稍后再次恢复工作现场。

下面,我将为大家介绍如何在当前分支中使用 git stash 命令。

命令格式

使用 git stash 命令的基本格式如下:

git stash [save [message]]

我接下来将解释各个参数的含义和用法。

操作步骤
1. 暂存修改

首先,我们需要在当前分支上暂存我们的修改。你可以通过以下命令来将修改保存到一个新的 stash 中:

git stash save "message"

其中,message 是一段可选的描述信息,它可以帮助你更好地理解这个 stash 的用途。如果不提供 message 参数,Git 将使用默认消息 "WIP on ..."。在同一个分支上,可以保存多个 stash,这些 stash 会形成一个栈,你可以使用 git stash list 命令查看当前栈中的 stash。

2. 切换到其他分支

在保存当前工作现场之后,你就可以切换到其他分支去做其他工作了。如果你还没有创建需要切换到的分支,可以使用 git checkout -b branchname 这样的命令来创建和切换到新的分支。

3. 恢复暂存

当你需要从当前的 stash 中恢复工作现场时,可以使用以下命令:

git stash apply [stash_id]

其中 stash_id 是可选的,如果有多个 stash,你需要提供 stash 的标识符。如果你不提供 stash_id 参数,Git 将恢复最新的 stash。Git 会尝试应用最新的 stash,并将修改合并到当前分支上。但是请注意,此时可能会发生冲突,特别是当原始的修改与你在其他分支上进行的修改产生冲突时。

如果你希望恢复这个 stash 并在其应用之后从栈中删除,可以使用以下命令:

git stash pop [stash_id]
示例

以下是一个完整的示例,演示如何在当前分支上使用 git stash 命令进行工作现场的保存和恢复:

$ git status
On branch main
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
        modified:   file1.txt
        modified:   file2.txt
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        newfile.txt
$ git stash save "save work in progress"
Saved working directory and index state WIP on main: cea7b37 save work in progress
$ git status
On branch main
nothing to commit, working tree clean
$ git checkout -b newbranch
Switched to a new branch 'newbranch'
$ touch anotherfile.txt
$ git status
On branch newbranch
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        anotherfile.txt
nothing added to commit but untracked files present (use "git add" to track)
$ git stash apply
On branch newbranch
Changes not staged for commit:
        modified:   file1.txt
        modified:   file2.txt
Untracked files:
        anotherfile.txt

no changes added to commit (use "git add" and/or "git commit -a")
结论

现在你已经知道了如何在当前分支中使用 git stash 命令来保存和恢复工作现场了。希望这篇文章能够帮助你更加高效地进行 Git 开发工作。