保留未分阶段的更改,不包括删除?

时间:2018-03-22 12:57:47

标签: git

分支:功能

我进行了很多更改并创建了新功能等...我提交了这些更改并切换回主分支

分支:大师

刷新我的IDE,使打开的文件恢复为Master上的文件,然后对master进行一些安全修复。我提交了这些更改,然后切换回功能分支。

分支:功能

DID NOT 刷新我的IDE以从Feature分支获取文件的当前状态,我的IDE中的文件仍然来自Master。然后我高兴地向这些文件做了很多更改并保存它们。显然,这删除了我最初对Feature分支所做的所有更改。

我没有提交我在第二次访问Feature分支时所做的任何更改,它们都是未分级的,所以如果我在文件上做差异,我可以看到我在第一次访问时创建的所有好东西删除功能分支。

所以我想要的是我在第一次访问功能分支时所做的更改,以及我在第二次访问期间所做的添加合并在一起但没有删除??!?如果这是有道理的。

我以为我可能能够提交第二批更改,然后将第一个提交合并到最后(显然是冲突)以将两组更改合并到一起然后我可以手动修复?这可能吗?

我缺少一个明显的解决方案吗?

1 个答案:

答案 0 :(得分:1)

我不确定你的工具是如何设置的,或者你用什么程序在分支之间切换,但当你说很明显你丢失了第一次访问功能分支时的更改,结果在第二次访问功能分支时没有“刷新IDE”......不,它不是。如果您的工具设置和工作流程都是这样,那么我就称之为根本问题。

现在大多数情况下这是一个单独的问题,所以我们应该继续讨论如何恢复。但是存在一个问题:理解为什么你的工具表现得如此,这对于制定一个安全的恢复程序至关重要。

更改分支的常规方法是签出新分支。假设您在执行此操作时有一个干净的工作树,则应更新索引和工作树以反映新分支。因此,要获得您描述的症状:

1)你正在做一些不同的事情来切换分支,这样你的工作树就不会更新,或者

2)除了git工作树

之外,IDE中还有另一份文件的工作副本

如果你理解并且能够可靠地重现你切换分支时文件的IDE副本的行为保持不变,那么你可以通过

解决这个问题。

1)切换回主人

2)在主人

处创建一个新的临时分支

3)提交更改

4)将临时分支重新定位为要素

5)将临时分支合并为特征

6)删除临时分支

关键是,您想要捕获更改,但它们与主要相关。因此,将它们相对于master进行提交,然后对它们进行rebase - 这将(基本上)对相对于master应用的功能应用相同的更改。