git stash 和 git commit 使用场景的区分

292 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情 关于git stash和git commit,它们都是日常进行项目开发时经常会用到的指令,今天结合日常的使用来详细说明一下:

git

首先对还不太了解git的掘友们介绍一下git是什么,git,分布式版本控制系统,开源的,可以有效、高速地处理从很小到非常大的项目版本管理。
具体场景

  • 将项目中某个文件恢复到之前任意版本
  • 整个项目恢复到之前任意版本
  • 比较各个版本之间差异
  • 查看最近出现的bug是谁提交代码导致
  • 当然还有一个作用就是协同开发
    那么git里面指令那么多,到底哪一个指令最为重要和核心呢?我个人有一点浅见,我认为是commit,之所以说commit是最重要的,是因为所有概念都是围绕它来展开的,比如分支它仅仅是commit序列的集合载体,而在执行merge的时候,也是针对一个个commit进行合并;执行reset时,也是reset至某个commit;而rebase它的base指的就是commit,所以commit就是git中最核心的概念。后文中也会对git commit进行一些补充。

git commit

对于git commit,大家应该是再熟悉不过了,我们每一个任务都是要经历先git add保存到暂存区,然后git commit将暂存区的内容保存到本地git仓库,最后git push推送到远程。在这个过程中git commit是最重要的,因为每一个commit会生成一个哈希值,这个值是唯一的,即commit_id。commit_id在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里。
所以,在我们日常的工作中,一个任务,我们可以将这个任务拆分成一个一个模块来进行开发,开发完一个模块就可以像git commit -m “完成了xx功能”这样提交一次,然后等整个任务全部开发完成再git push,这样的话,既让开发过程变得逻辑清晰,也方便后续维护。

git stash

工作场景:当你正在某一个分支上进行开发,此时突然给了你一个任务,并且给了你一个新分支要求紧急开发,所以你必须要放下目前正开发到一半的需求,切换到另一个分支上去先行解决这个紧急任务,但是此时你开发到一半的内容并不想提交......
那么这个时候你就需要用到git stash和与之相对应的git stash pop指令了:
git stash:将所有未提交的内容(包括工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录 (使用git stash保存当前修改,然后就可以切换到别的分支进行开发了)
git stash pop:将当前stash中的内容弹出,并应用到当前分支对应的工作目录中(当别的任务开发完毕,重新切换到该分支继续开发时使用git stash pop恢复之前修改的内容)

end

以上就是我在工作中得出的git commit和git stash使用心得,希望能对大家有所帮助!