用git stash暂存修改

2023-10-20 03:36
文章标签 修改 git 暂存 stash

本文主要是介绍用git stash暂存修改,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

git stash命令用于保存当前工作目录的临时状态,包括暂存区和已修改但未暂存的文件。它会将这些修改保存在一个临时区域(即“堆栈”)中,让你能够回到一个干净的工作目录,可以进行其他操作。等到你完成其他任务后,可以再回到之前的状态,继续之前的开发。

使用场景

切换分支: 当你正在开发一个功能或修复一个bug,但需要切换到另一个分支来处理其他任务时,使用git stash可以将当前的修改保存起来。这样你可以切换到其他分支并开始另一个任务,而无需提交或放弃你当前的修改。

合并代码: 在进行代码合并操作之前,你可能需要切换到目标分支并更新代码。使用git stash可以保存当前分支的修改,然后切换到目标分支并执行更新操作。完成后,你可以切换回原分支,并使用git stash pop来恢复之前的修改。

临时修复问题: 如果你遇到一个紧急的问题,需要快速切换到其他分支进行修复,但又不想丢失当前的修改,可以使用git stash将修改保存起来。然后你可以切换到修复分支,并在修复完成后再回到原分支恢复之前的修改。

多任务处理: 在开发过程中,你可能会同时处理多个任务或功能。当你想切换到另一个任务时,可以使用git stash将当前任务的修改保存起来,然后切换到另一个任务并开始工作。完成后,你可以回到之前的任务并使用git stash pop来恢复修改。

代码审查: 在进行代码审查时,你可能需要将修改保存起来,以便在审查过程中进行对比和讨论。使用git stash可以暂时保存你的修改,并切换到源代码分支进行对比和审查。

以下是git stash命令的用法和一些常见的选项:

  1. git stash save "message" 这将保存当前的工作目录状态到一个新的stash,并添加一条可选的消息来描述这个stash的内容。

  2. git stash list 查看当前保存的所有stash列表,每个stash都有一个唯一的标识符和对应的描述信息。

  3. git stash show [stash] 查看某个特定stash的变更内容。默认情况下,会显示最新的stash。

  4. git stash apply [stash] 将某个stash的变更应用到当前工作目录。这个stash不会从stash列表中移除。如果不指定stash,默认会应用最新的stash。

  5. git stash pop [stash] 与git stash apply类似,但在应用完stash后会将该stash从stash列表中删除。

  6. git stash drop [stash] 删除某个stash,从stash列表中移除。如果不指定stash,默认会删除最新的stash。

  7. git stash clear 删除所有的stash,慎用,它会清除所有保存的stash记录。

  8. git stash branch <branch_name> [stash] 创建一个新分支并将某个stash中的变更应用到新分支上。这样可以在一个干净的环境中继续开发。

  9. git stash -p 交互式地选择要保存的修改,即对每个修改进行确认。

  10. git stash -ugit stash --include-untracked 保存除了未跟踪的文件(Untracked files)外的所有修改。

  11. git stash --keep-indexgit stash --no-keep-index 默认情况下,git stash会保存所有已暂存的修改,使用--keep-index选项可以只保存未暂存的修改。

  12. git stash --all 保存所有的修改,包括暂存区和未暂存的修改,以及未跟踪的文件。

示例用法

  1. 保存当前的修改到stash,并添加描述信息:

git stash save "Work in progress on feature XYZ"
  1. 查看当前所有的stash列表:

git stash list
  1. 应用某个特定的stash:

git stash apply stash@{2}
  1. 创建一个新分支并将某个stash应用到新分支上:

git stash branch new-feature-branch stash@{1}
  1. 交互式地选择要保存的修改:

git stash -p

请记住,git stash是一种临时保存修改的方法,并不应该被滥用。它主要适用于短期的临时任务和临时保存修改的情况。

注意在应用某个特定的 stash 恢复修改内容时,最好确保你当前的工作目录是干净的(没有未提交的修改),这样可以避免一些潜在的冲突和问题。另外,git stash是一个非常有用的命令,但不应该滥用它。如果可能,最好尽量完成当前的修改并提交它们,而不是经常性地使用stash来处理分支切换。

补充:

  1. 多次使用git stash save: 如果在进行了一些修改后,再次使用git stash save保存工作目录的状态,它将创建一个新的stash,并将当前的修改堆叠在之前的stash之上。后续使用git stash apply或git stash pop时,可以选择应用特定的stash。

  2. 解决冲突: 在应用stash的时候,如果与当前分支的其他修改发生冲突,需要解决这些冲突。解决冲突后,使用git add命令来标记冲突已解决,然后使用git stash drop命令删除stash。

  3. git stash和git clean的区别: git stash只保存已修改但未暂存的文件和已暂存的文件,不保存未跟踪的文件(Untracked files)。如果你需要清除所有未跟踪的文件,可以使用git clean命令。

  4. 恢复单个文件: 如果只想恢复某个特定的文件而不是整个stash,可以使用git restore命令。例如:

git restore --source=stash@{1} -- <file_path> 这会将stash@{1}中的指定文件还原到当前工作目录。

  1. 临时储存当前工作目录: git stash并不是唯一的方法来临时储存当前工作目录的修改。你也可以使用git commit来提交当前的修改,然后再切换到其他分支或进行其他操作。当你需要回到之前的状态时,使用git stash或git reset等命令来撤销这个临时提交。

  2. 删除多个stash: 如果你想删除多个stash,可以使用git stash drop命令多次来删除它们,或者使用git stash clear命令一次性删除所有stash。

  3. 使用git stash的场景: git stash在临时保存工作目录状态方面非常有用,特别是在需要频繁切换分支或处理紧急任务时。它可以保护当前的修改,并帮助你保持工作目录的整洁。

总结:git stash是Git中一个强大而实用的命令,可以在开发过程中帮助你临时保存和恢复修改,从而更高效地处理分支切换和其他任务。但仍然建议在可能的情况下,尽量将修改提交到版本控制中,以保持代码的完整性和可追溯性。

“git stash只保存已修改但未暂存的文件和已暂存的文件,不保存未跟踪的文件(Untracked files)。” 请问这句话中 未跟踪的文件是什么? 它与未暂存的文件、已暂存的文件有什么不同

在Git中,有三种类型的文件状态:

  1. 已暂存的文件(Staged Files): 已暂存的文件是指在你运行git add命令后,将修改的文件添加到暂存区(Stage/Index)的文件。这些文件的修改已经被Git记录,并准备好在下次提交时包含在版本历史中。

  2. 未暂存的文件(Unstaged Files): 未暂存的文件是指已经被Git跟踪,但其修改尚未添加到暂存区的文件。这些文件的修改不会包含在下次的提交中,除非你先将它们添加到暂存区。

  3. 未跟踪的文件(Untracked Files): 未跟踪的文件是指尚未被Git跟踪的文件。这些文件既没有被添加到Git的版本控制中,也没有被列入Git的索引(暂存区)。未跟踪的文件可能是新创建的文件,或者是已存在但未被Git跟踪的文件。

与这些文件状态相对应,git stash命令的默认行为是只保存已修改但未暂存的文件和已暂存的文件,而不保存未跟踪的文件。这意味着在执行git stash命令时,未跟踪的文件不会被包含在stash中。

如果你希望git stash也保存未跟踪的文件,可以使用git stash --include-untracked选项或简写形式git stash -u。这样,git stash将保存除了未跟踪的文件外的所有修改,包括已暂存的文件和未暂存的文件。

总结

已暂存的文件是在暂存区中的修改,准备包含在下次提交中。

未暂存的文件是已被Git跟踪但未添加到暂存区的修改,不会包含在下次提交中。

未跟踪的文件是未被Git跟踪的文件,不包含在Git的版本控制中。

git stash默认只保存已修改但未暂存的文件和已暂存的文件,不保存未跟踪的文件。

使用git stash --include-untracked或git stash -u可以保存所有修改,包括未跟踪的文件。

这篇关于用git stash暂存修改的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/244366

相关文章

python修改字符串值的三种方法

《python修改字符串值的三种方法》本文主要介绍了python修改字符串值的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录第一种方法:第二种方法:第三种方法:在python中,字符串对象是不可变类型,所以我们没办法直接

Mysql8.0修改配置文件my.ini的坑及解决

《Mysql8.0修改配置文件my.ini的坑及解决》使用记事本直接编辑my.ini文件保存后,可能会导致MySQL无法启动,因为MySQL会以ANSI编码读取该文件,解决方法是使用Notepad++... 目录Myhttp://www.chinasem.cnsql8.0修改配置文件my.ini的坑出现的问题

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi

取得 Git 仓库 —— Git 学习笔记 04

取得 Git 仓库 —— Git 学习笔记 04 我认为, Git 的学习分为两大块:一是工作区、索引、本地版本库之间的交互;二是本地版本库和远程版本库之间的交互。第一块是基础,第二块是难点。 下面,我们就围绕着第一部分内容来学习,先不考虑远程仓库,只考虑本地仓库。 怎样取得项目的 Git 仓库? 有两种取得 Git 项目仓库的方法。第一种是在本地创建一个新的仓库,第二种是把其他地方的某个