git - 将“混合”脏分支拆分为多个干净分支
问题描述
有一段时间我的 git 工作流程很糟糕——我对同一主题 A、主题 B 和主题 C 进行了更改,dirtybranch
实际上也在混合提交中进行了更改。
我想清除它,以便我有一个干净的branchA
,branchB
和branchC
其中的每一个,以便我以后可以对上游发出单独的合并请求。
我已经创建了分支A,使用git cherry-pick --no-commit master..dirtybranch
然后简单地手动删除了关于subjectB和C的更改。虽然它不优雅,但我可以对主题B和C做同样的事情,尽管它看起来更复杂(因为它们是混合的在代码中更紧密)。
因此我的问题是:
- 是否有更优雅(即更简单)的方法来执行此操作,尤其是当您需要逐行浏览文件以选择要保留的更改时(gui?)?我知道例如。meld 或 kdiff 但我不知道如何在这里应用它们。
- 由于我已经“挑选出”主题 A into 的更改,有没有办法从into
branchA
中挑选更改。“除了”我已经进行的更改?(同样,-> “除了”和)dirtybranch
branchB
branchA
dirtybranch
branchC
branchA
branchB
解决方案
我已经创建了 branchA,使用了 git cherry-pick --no-commit master..dirtybranch,然后简单地手动删除了有关 subjectB 和 C 的更改。
类似的方法将git reset
回到dirtybrach
从master
. 在那里,您可以创建一个新的branchA
,使您的所有更改保持未暂存和未提交。如果我混淆了我的提交并希望将更改重组为新的提交,我通常会这样做。
要将更改分成不同的分支,您可以找到并提交所有更改branchA
,存储其余更改,返回 master,创建branchB
,应用存储(为您提供除来自dirtybranach
之外的所有更改branchA
),查找并提交更改branchB
,然后整个事情再次为branchC
。
这解决了你的第二点。至于让整个事情尽可能简单的 GUI,我只能推荐GitKraken,它有一种非常舒适的方式来选择你想要暂存的文件的大块甚至单行。
推荐阅读
- google-analytics - 在子域上使用 Google Analytics
- python - 序列化`tf.Module`s的推荐方法是什么?
- javascript - 检测到 javascript 想要打开一个新选项卡并强制网页在同一个选项卡中打开新 url(或至少拦截 URL)
- excel - Word for Mac - 调用 Excel.Application.Workbooks 时出错。打开运行时错误 -2146959355 (80080005)
- c# - Xamarin Forms:从 iOS 自定义渲染器调用共享代码中的方法
- c# - 手动注册对象的替代方法
- arrays - 是否可以同时定义数组并将其分配给对象的属性?
- sql - 用于为项目添加书签的 SQL 数据库设计
- amazon-web-services - HelloWorld 未从 STDIN 读取事件
- python - Wand - 用偏移量右对齐文本