git stash的正确用法详解

作者:YunfengWang 时间:2022-11-06 19:10:07 

概述

前段时间突然发现,我之前对git stash的使用都是错误的。

具体说来,我是这么使用的:在远端有新的提交,需要git pull来拉取合并时,发现本地有一些未提交的修改,功能也没实现,不适合做一次commit。这时候我执行git stash隐藏本地的修改,然后执行git pull来拉取远端的更新,在最新代码基础上重新实现stash的那些代码中的功能。

这里的问题是,重新实现stash代码中的那一步,其实完全可以用git stash pop来替代,执行这个命令会在最新代码基础上作用stash的代码,不用再重新实现一遍了(不过这时可能会有代码冲突需要解决)。所以我之前是把git stashgit checkout -- .来用了,也就是抛弃了本地的代码更新,显然是有问题的。

正确流程基本上是这样:

git stash # 或者 git stash push,效果一样
git pull # 可能有冲突需要手动合并
git stash pop # 可能有冲突需要手动合并

下面记录一下 git stash 提供的功能和一些参数。

git stash 具体用法

git stash创建一个新的stash,效果与git stash push 一样,效果如下:

$ git stash
Saved working directory and index state WIP on master: c6771a5 doc: fix error during pre-commiting

增加-u选项可以将未track的文件也隐藏起来。

你可以创建多个stash,最早的stash表示为stash@{0},然后是stash@{1},依次递加。

git stash list 会列出所有的stash:

$ git stash list
stash@{0}: WIP on master: c6771a5 doc: fix error during pre-commiting
stash@{1}: WIP on master: c6771a5 doc: fix error during pre-commiting

git stash show可以查看最新stash中的修改,加上编号可以查看之前版本的修改。

$ git stash show stash@{0}
version.txt | 1 +
1 file changed, 1 insertion(+)

git stash apply 可以应用最新的stash到当前的代码中,同样的,如果加上编号则可以应用之前版本的修改到当前代码。apply执行后记得调用git stash drop 来去除以及应用的stash。 git stash pop效果等于git stash apply + git stash drop

git stash branch会基于老的提交代码创建一个分支,同时把最新的修改也作用过去,这样对于新的提交和老提交代码变化很大的场景比较好,避免在新的提交上apply stash时由于冲突太多造成的合并问题。

git stash clean 会清空所有的stash,且没有任何提示,这意味着你所有隐藏的代码都会被删除,执行此命令前请三思!

来源:https://juejin.cn/post/7190224582974898237

标签:git,stash
0
投稿

猜你喜欢

  • Python实现清理微信僵尸粉功能示例【基于itchat模块】

    2021-10-29 20:45:46
  • python日记(使用TCP实现的对话客户端和服务器)

    2023-01-25 19:42:54
  • Python爬虫实现抓取京东店铺信息及下载图片功能示例

    2022-11-26 21:02:44
  • 详解如何使用Python实现删除重复文件

    2022-08-14 04:33:54
  • HTML和SEO基础知识:H标签全透视

    2010-09-21 16:45:00
  • Golang中的time.Duration类型用法说明

    2024-05-02 16:24:12
  • python爬虫爬取笔趣网小说网站过程图解

    2022-10-06 10:56:50
  • 在ASP中使用SQL语句之11:记录统计

    2007-08-11 13:27:00
  • Mootools 1.2教程(17)——手风琴插件

    2008-12-11 13:39:00
  • python实现udp传输图片功能

    2022-09-24 16:35:01
  • php基于curl实现随机ip地址抓取内容的方法

    2023-11-14 22:29:45
  • PHP版微信小店接口开发实例

    2023-11-10 11:56:06
  • 浅谈javascript的分号[译]

    2009-12-13 10:34:00
  • tornado 多进程模式解析

    2021-01-20 10:56:44
  • oracle数据库中如何处理clob字段方法介绍

    2024-01-17 05:55:41
  • 在Lighttpd服务器中运行Django应用的方法

    2021-08-05 20:19:50
  • MySQL数据库误删回滚的解决

    2024-01-19 16:31:11
  • insert和select结合实现"插入某字段在数据库中的最大值+1"的方法

    2024-01-25 07:52:46
  • Python编程实现使用线性回归预测数据

    2022-03-07 11:28:55
  • Python开发常用的一些开源Package分享

    2022-12-10 22:00:11
  • asp之家 网络编程 m.aspxhome.com