git - 为什么你会隐藏更改而不是创建本地提交或临时分支?
问题描述
我很难理解为什么有人会git stash
在它似乎是一个次等的选择时使用它。
据我所知,git stash
的用例是当您在另一个分支上工作时保存您在一个分支上进行的工作。
通常,当我遇到这种情况时,我会运行它:
$ git add --all
$ git commit -m "WIP: some info about the changes"
去另一个分支工作。当我回到我正在处理的分支时,我可以简单地运行git reset HEAD~1
以返回到我之前的提交并恢复我所在的位置,或者堆叠 WIP 提交直到我完成并压缩它们。
与 using 相比git stash
,这在我看来是更好的选择:
- 我总是可以跑来
git pull --rebase
更新我的分支并将我的 WIP 重新设置在顶部 - 如有必要,我可以在另一个分支上挑选我的 WIP
如果我愿意,我什至可以git checkout -b temporary_branch
在创建我的提交之前运行,以便它位于一个临时分支中,而不是我正在处理的那个:
- 这给了我分支通常的好处,即我可以同时拥有多个 WIP
- 这也让人放心,因为丢失隐藏的更改比提交的更改更容易;如果我公司的政策允许(确实如此),我什至可以推送临时分支,以确保即使我的计算机发生问题我也不会丢失我的更改(而你不能推送存储)
正因为如此,我目前认为绝对没有理由使用git stash
. 所以......我错过了什么?我假设制作 git 的人不会包含这样的命令,如果你已经可以做所有事情而不是简单地没有它
解决方案
例如,你正在尝试一些新的东西并且你破坏了一些东西,
而且你不明白那段代码以前是如何工作的,
所以你隐藏更改,看看正在运行的代码,
在您应用存储并修复它或撤消您的一些更改之后
推荐阅读
- ruby-on-rails - 无法在 Rails 中显示模态内容
- java - 尝试将数据从角度插入到 Spring Boot api 时出现“JSON 解析错误:无法构造实例”错误
- wpf - 将数据网格绑定到组合框 WPF
- pandas - AttributeError:“numpy.ndarray”对象没有属性“iloc”
- ios - 如何在 appdelegate 中获取传递的通知详细信息
- directx - IDXGIFactory 和其他 IDXGIFactory 版本有什么区别?
- c++ - 接口和实现 C++
- r - 使用 R h2o 加载数据集
- nlp - NLP(自然语言处理)如何用任何方法检测问题?
- android - 当我单击底部表中的按钮时,我的应用程序停止