git-checkout - 使用未提交的更改优雅地切换分支
问题描述
并行处理多个功能分支时,我需要先stash
进行commit
本地更改,然后才能切换到另一个分支。我认为 stash 和 commit 对我来说都相当笨拙。有没有更优雅的选择?
为什么stash
笨拙:我在多个分支上工作,并且不时在它们之间切换。有时我最终忘记弹出,或者弹出错误的存储。
为什么commit
笨拙:我的更改正在进行中。它们不完整,不应提交。我最终要做的是首先提交它们(因为我被迫这样做),然后进行软重置,以便我之前的提交回到“本地更改”。或者,有时我让临时提交堆积起来,稍后再进行交互式变基。
我在找什么:就像一个“智能藏匿处”。当我切换到另一个分支时自动存储本地更改,并在我切换回时自动弹出与该分支关联的存储。这可以做到吗?
解决方案
我的解决方案是为进行中的工作创建一个临时提交,并在切换分支之前为每个未提交的工作状态保存,始终使用git commit --amend
. 该--amend
标志允许您创建一个提交来替换当前分支指向的提交(在我们的例子中,一个不严重的、正在进行的提交),而不是在它之上创建额外的提交。每次您使用 提交时--amend
,您的提交消息实际上可能是“NO COMMIT”以提醒自己这一点。然后你就可以忘记 Git 的所有复杂性,而只想像commit --amend
旧的 SAVE 按钮,它可以让你一次又一次地覆盖你以前的文件(非严重提交),而不会留下任何额外的痕迹。
当你已经足够努力并决定这个不严重的、保存状态的提交应该成为一个真正的提交,然后只是git commit
没有--amend
,然后最重要的是,创建下一个不严重的提交,并带有消息“NO COMMIT”
我想这是为那些必须经常在不同分支之间跳转的人节省正在进行的工作的最简单方法。
推荐阅读
- generics - Object Pascal 中的泛型:类型相等
- angular - 基于登录用户类型的导航 - Angular
- powershell - 如何使用powershell重命名文件?
- walmart-electrode - 发生错误:命令失败:./gradlew lib:uploadArchives
- flutter - 小部件库捕获的异常,方法 '>=' 在 null 上调用
- mysql - mysql突然崩溃了。升级_57
- javascript - 为什么 Chrome 会在重定向时阻止打开新标签页?
- c# - 用于替换数据表行中所有出现的字符串的 Lambda 函数
- javascript - 如何在 Javascript + jquery 中创建正则表达式
- node.js - 如何根据变量构建两个 .env 文件