热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GitStash使用指南及解决GitStashPop冲突的方法

使用`gitstash`可以将当前未提交的修改保存到一个临时存储区,以便在后续恢复工作目录时使用。例如,在处理中间状态时,可以通过`gitstash`命令将当前的所有未提交更改推送到一个新的储藏中,从而保持工作目录的整洁。此外,本文还将详细介绍如何解决`gitstashpop`时可能出现的冲突问题,帮助用户高效地管理代码变更。


1. stash的当前修改


git stash会保存所有未提交的更改(包括转移和非转移),以便以后恢复当前工作目录。


例如,在以下中间状态下,使用git stash命令推送新的存储会清理当前的工作目录:


$ git状态


On branch master


Changes to be committed:


new file: style.css


Changes not staged for commit:


modified: index.html


$ git stash


savedworkingdirectoryandindexstatewiponmaster :5002 d 47 ournewhomepage


headisnowat 5002 d 47 ournewhomepage


$ git状态


On branch master


nothing to commit,工作树清除


注意,stash是本地的,不会通过git push命令上载到git server。


在实际的APP应用程序中,建议在每个stash中添加用于记录版本的消息,并使用git stash save而不是git stash命令。 例如以下所示。


$ git stash save 'test-cmd-stash '


savedworkingdirectoryandindexstateonautoswitch : test-cmd-stash


HEAD目前位于296 E8 D4 removeunnecessarypostionresetinonresumefunction


$ git状态列表


stash @ {0} : onautoswitch : test-cmd-stash


2 .重新应用缓存状态


可以使用git stash pop命令恢复以前缓存的工作目录,如下所示:


$ git状态


On branch master


nothing to commit,工作树清除


$ git stash pop


On branch master


Changes to be committed:


new file: style.css


Changes not staged for commit:


modified: index.html


dropped refs/stash @ {0} (32 B3 aa1 d 185 dfe6d 57 B3 C3 b 32 CBF 3e 380 cc6a ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )


此命令删除缓存堆栈中的第一个stash,并将相应的更改应用到当前工作目录。


您也可以使用git stash apply命令多次将缓存堆栈中的stash应用于工作目录,但不会删除stash副本。 命令的输出如下。


$ git状态应用程序


On branch master


Changes to be committed:


new file: style.css


Changes not staged for commit:


modified: index.html


3 .查看现有的stash


可以使用git stash list命令。 典型的输出如下。


$ git状态列表


stash @ {0} : wipon master :049 d 078 addedtheindexfile


stash @ {1} : wipon master : c 264051 revert ' added file _ size '


stash @ {1} : wipon master :21 d 80 a5 addednumbertolog {2}


使用git stash apply命令时,可以按名称指定要使用的stash。 默认情况下,将使用最近的stash@{0}。


删除静态


可以使用git stash drop命令在后面加上stash名称。 例如以下所示。


$ git状态列表


stash @ {0} : wipon master :049 d 078 addedtheindexfile


stash @ {1} : wipon master : c 264051 revert ' added file _ size '


stash @ {1} : wipon master :21 d 80 a5 addednumbertolog {2}


$ git stash drop stash@{0}

>Dropped stash@{0} (364e91f3f268f0900bc3ee613f9f733e82aaed43)

或者使用git stash clear命令,删除所有缓存的stash。

5. 查看指定stash的diff

可以使用git stash show命令,后面可以跟着stash名字。示例如下:

$ git stash show

index.html | 1 +

style.css | 3 +++

2 files changed, 4 insertions(+)

在该命令后面添加-p或--patch可以查看特定stash的全部diff,如下:

$ git stash show -p

diff --git a/style.css b/style.css

new file mode 100644

index 0000000..d92368b

--- /dev/null

+++ b/style.css

@@ -0,0 +1,3 @@

+* {

+ text-decoration: blink;

+}

diff --git a/index.html b/index.html

index 9daeafb..ebdcbd2 100644

--- a/index.html

+++ b/index.html

@@ -1 +1,2 @@

+

6. 从stash创建分支

如果你储藏了一些工作,暂时不去理会,然后继续在你储藏工作的分支上工作,你在重新应用工作时可能会碰到一些问题。如果尝试应用的变更是针对一个你那之后修改过的文件,你会碰到一个归并冲突并且必须去化解它。如果你想用更方便的方法来重新检验你储藏的变更,你可以运行 git stash branch,这会创建一个新的分支,检出你储藏工作时的所处的提交,重新应用你的工作,如果成功,将会丢弃储藏。

$ git stash branch testchanges

Switched to a new branch "testchanges"

# On branch testchanges

# Changes to be committed:

# (use "git reset HEAD ..." to unstage)

#

# modified: index.html

#

# Changes not staged for commit:

# (use "git add ..." to update what will be committed)

#

# modified: lib/simplegit.rb

#

Dropped refs/stash@{0} (f0dfc4d5dc332d1cee34a634182e168c4efc3359)

这是一个很棒的捷径来恢复储藏的工作然后在新的分支上继续当时的工作。

7. 暂存未跟踪或忽略的文件

默认情况下,git stash会缓存下列文件:

添加到暂存区的修改(staged changes)

Git跟踪的但并未添加到暂存区的修改(unstaged changes)

但不会缓存一下文件:

在工作目录中新的文件(untracked files)

被忽略的文件(ignored files)

git stash命令提供了参数用于缓存上面两种类型的文件。使用-u或者--include-untracked可以stash untracked文件。使用-a或者--all命令可以stash当前目录下的所有修改。

至于git stash的其他命令建议参考Git manual。

git stash //保存当前工作进度,会把暂存区和工作区的改动保存起来。

git stash save 'message.....'

git stash show //查看刚才暂存的修改

git stash list //查看暂存区的所有暂存修改

git stash pop //取出最近一次暂存并删除记录列表中对应记录

git stash pop stash@{1} //恢复指定的进度到工作区。stash_id是通过git stash list命令得到的

git stash apply stash@{X} //取出相应的暂存不删除记录列表中对应记录

git stash drop stash@{X} //将记录列表中取出的对应暂存记录删除

git stash drop [stash_id] //删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度

git stash clear //删除所有存储的进度。


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 探讨如何在职业生涯中脱颖而出,研究表明刻意练习而非单纯的经验或天赋是关键。文章分析了为什么一些人即使有多年经验也未能成为专家,而另一些人则能在短时间内达到卓越水平。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 百度服务再次遭遇技术问题,疑似DNS解析故障
    近日晚间,百度多项在线服务出现加载异常,包括移动端搜索在内的多个功能受到影响。初步迹象表明,问题可能与DNS服务器解析有关。 ... [详细]
author-avatar
手机用户2502880437
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有