Git贮藏

Git贮藏

贮藏

git stash

git stash 是 Git 中用于临时保存工作目录和暂存区变更的命令,适用于需要切换分支、处理紧急任务或保持工作区“干净”的场景。

git stash

git stash 默认只保存已跟踪文件(Tracked files)的修改和暂存区(Stage)的变更,不会自动保存未跟踪的文件(Untracked files)

使用git stash后,会多出2个提交,index on dev对应已已git add的修改,WIP on dev对应未git add的修改,这2个分支都基于使用git stash时所处的分支对应的最新提交。

git log --oneline --graph --all命令会绘制所有提交的关联关系,所以能看到这2个本应隐藏的提交

如果不加--all选项,则git stash所创建的2个提交不会显示

查看贮藏

查看贮藏条目

git stash list

查看贮藏记录及内容

# 简要
git stash show

# 详细
git stash show -p

# 查看指定贮藏内容
git stash show stash@{0}
git stash show -p stash@{0}

为贮藏备注

git stash push -m "xx"

贮藏指定文件

git stash push -m "xx" filename

该命令并不会仅将指定文件从工作区转移至贮藏区,虽然工作区中的该文件会被删除,但工作区中已经暂存的其他文件全部都会被复制一份到贮藏区,而且不会删除其他文件在工作区中的暂存

贮藏未跟踪的文件

git stash push -m "xx" -u

会将未跟踪(git add . )的文件也贮藏,但不会贮藏在.gitignore中忽略的文件

取出贮藏

可以看到,使用git stash pop命令后,当前的工作区状态又和git stash之前一样了

注意

可以在任意的分支上使用git stash pop命令,这就导致,原本在dev分支的最新提交之上所作的工作,在被贮藏到基于dev的贮藏区后,如果这时候切换了分支,并且使用了git stash pop命令,就会导致这些贮藏会被恢复到其他(当前所在)的分支上

使用这一点,可以跨分支转移一些内容,但也需要注意可能会被转移到不合适的分支(的最新提交)上。

贮藏的取出顺序

贮藏的存入与取出的默认顺序(仅使用git stash pop)类似于栈,先进后出,如下是连续贮藏2次

最后用git stash list命令可以看出,test记录是先贮藏的,但贮藏索引是1,test1记录是后贮藏的,贮藏索引是0,如果连续执行2次git stash pop命令,则第一次取出test1,第二次取出test

取出指定的贮藏

git stash pop stash@{n}

某一条贮藏被取出后,贮藏区里的对应记录内容会被删除

将贮藏取出但不删除

git stash apply #只会取出最新的一次暂存
git stash apply stash@{n}

删除贮藏

# 删除最新的贮藏git stash drop
# 删除指定的贮藏git stash drop stash@{n}

# 删除所有贮藏git stash clear

注意:无论哪种方法删除贮藏,都无法恢复

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
error: Content is protected !!