git stash命令学习

gitstash是一个用于保存和恢复工作区状态的Git命令,特别适用于在开发不同分支间切换时。它可以保存当前工作区和暂存区的更改,然后在需要时恢复。常用命令包括gitstash保存状态,gitstashsave添加注释,gitstashpop恢复并删除最新保存,gitstashlist查看所有保存,gitstashapply应用而不删除,gitstashdrop删除指定保存,以及gitstashclear清除所有保存。这些工具帮助开发者高效管理代码变更。

一、介绍

git stash这个命令可以将当前的工作状态保存到git栈,在需要的时候再恢复。

二、使用场景

当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,可以先将自己写好的代码,储存到 git 栈,进行另外一个分支的代码开发。这时候 git stash 命令就派上用场了!

三、常见方法:

1、git stash

保存当前的工作区与暂存区的状态,把当前的修改的保存到git 栈,等以后需要的时候再恢复,git stash 这个命令可以多次使用,每次使用都会新加一个stash@{num},num是编号

2、git stash save ‘注释’

作⽤等同于git stash,区别是可以加⼀些注释, 执⾏存储时,添加注释,⽅便查找

git stash save 'test'

在这里插入图片描述

3、git stash pop

默认恢复git栈中最新的一个stash@{num},建议在git栈中只有一条的时候使用,以免混乱

注:该命令将堆栈中最新保存的内容删除

4、git stash list

查看当前stash的所有内容

5、git stash apply

将堆栈中的内容恢复到当前分支下。这个命令不同于 git stash pop。该命令不会将内容从对堆栈中删除,也就是该命令能够将堆栈的内容多次运用到工作目录,适合用与多个分支的场景

使用方法:git stash apply stash@{$num}

6、 git stash drop

从堆栈中移除指定的stash

使用方法:git stash drop stash@{$num}

7、git stash clear

移除全部的stash

8、git stash show

查看堆栈中最新保存的stash和当前⽬录的差异,显⽰做了哪些改动,默认show第一个存储

<think> 我们正在讨论git stash命令的使用,特别是如何用它来合并代码。根据引用内容,git stash主要用来暂存当前未提交的修改,以便进行其他操作(如拉取代码),然后再将暂存的修改恢复。合并代码时,通常用于避免在拉取远程代码(git pull)时因为本地有修改而导致的冲突。 步骤: 1. 使用`git stash`(或`git stash save "message"`)将当前工作目录和暂存区的修改保存到堆栈中。这样工作区就回到了上一次提交的状态(干净的状态)。 2. 然后执行`git pull`来拉取远程最新代码,此时因为工作区是干净的,所以不会产生冲突(或者冲突在拉取时更容易处理)。 3. 拉取完成后,使用`git stash pop`将之前暂存的修改重新应用到当前工作区。此时,如果暂存的修改与拉取下来的代码有冲突,则需要手动解决冲突。 注意:`git stash pop`在应用最近一次暂存后会将其从堆栈中删除。如果不想删除,可以使用`git stash apply`(默认应用最近一次),然后再手动删除(`git stash drop`)。 另外,如果有多个暂存条目,可以通过`git stash list`查看,然后指定应用某一个,如`git stash apply stash@{1}`。 因此,合并代码的流程如下: 1. 暂存当前修改:`git stash save "暂存说明"`(或直接`git stash`) 2. 拉取远程代码:`git pull` 3. 恢复暂存修改:`git stash pop`(或者`git stash apply`,然后手动删除) 如果在第三步发生冲突,需要手动解决冲突,然后提交。 例子: ``` # 假设我们在feature分支上开发,现在需要拉取远程同分支的更新 git stash git pull origin feature git stash pop ``` 如果在`git stash pop`时出现冲突,git会提示冲突,然后我们需要手动解决冲突,然后使用`git add`和`git commit`提交。 但是注意:`git stash pop`如果成功则自动删除对应的stash,如果失败(即发生冲突)则不会删除,这样我们可以选择解决冲突后再次尝试(或者使用`git stash drop`手动删除)。 另外,引用[2]中提到了使用`git stash apply stash@{id}`来恢复指定的暂存,这在有多个暂存时很有用。 因此,使用git stash合并代码的方法就是通过暂存本地修改->拉取远程代码->恢复本地修改并解决可能冲突的步骤来实现。 </think> ### 使用 `git stash` 命令合并代码的方法 `git stash` 是 Git 中用于临时保存本地修改的强大工具,特别适用于合并代码时解决冲突的场景。以下是详细操作流程: #### 📋 合并代码的标准流程 1. **暂存当前修改** ```bash git stash save "本地修改说明" # 保存未提交的修改到临时堆栈 ``` 此时工作区会恢复到上次提交的干净状态。 2. **拉取远程更新** ```bash git pull origin 分支名 # 例如 git pull origin main ``` 此时可安全拉取远程最新代码,不会因本地修改产生冲突[^1]。 3. **恢复暂存内容并解决冲突** ```bash git stash pop # 恢复最近一次的暂存修改 ``` - ✅ 若无冲突:代码自动合并 - ❗若有冲突:文件会显示冲突标记(`<<<<<<<`,`=======`,`>>>>>>>`),需手动编辑解决 4. **提交合并结果** 解决冲突后执行: ```bash git add . # 添加解决后的文件 git commit -m "合并远程更新并解决冲突" ``` #### ⚙️ 高级应用场景 1. **处理多个暂存条目** ```bash git stash list # 查看所有暂存记录 git stash apply stash@{1} # 应用指定暂存(不删除) git stash pop stash@{1} # 应用后删除该记录 ``` 2. **选择性恢复修改** ```bash git stash push -p # 交互式选择要暂存的代码块 ``` 3. **清理暂存区** ```bash git stash drop stash@{0} # 删除指定暂存 git stash clear # 清空所有暂存记录 ``` #### 💡 最佳实践建议 - 每次暂存时添加说明:`git stash save "添加用户登录功能"` - 优先使用 `git stash pop` 而非 `apply` + `drop`,减少操作步骤 - 冲突解决后立即提交,避免遗忘 - 复杂合并时可配合 `git diff stash@{0} -- path/to/file` 查看差异 > 此方法通过临时隔离本地修改,为拉取远程更新创造"安全空间",是处理协作开发中代码合并的标准方案[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting_1997

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值