Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
崩溃的合并:git如何在使用merge签出期间处理未提交的更改?_Git_Git Merge_Git Checkout - Fatal编程技术网

崩溃的合并:git如何在使用merge签出期间处理未提交的更改?

崩溃的合并:git如何在使用merge签出期间处理未提交的更改?,git,git-merge,git-checkout,Git,Git Merge,Git Checkout,因此,在git签出--merge过程中发生了硬崩溃 它使存储库处于一种混乱的状态,而未提交的文件似乎已经不见了,尽管不是100%确定 事后看来,也许我应该先隐藏或提交未提交的更改——但话说回来,那个命令的意义何在 所以问题是,如果有人知道Git在这种情况下对未提交的更改做了什么?它们是永久丢失还是存放在某个临时位置?如果只是在这个过程中把它们存储在内存中,那么我想试图从某个地方把它们挖出来是失败的 查看文档,他们似乎没有详细说明流程本身。我无法100%肯定地回答git是否会存储工作树的备份副本;

因此,在git签出--merge过程中发生了硬崩溃

它使存储库处于一种混乱的状态,而未提交的文件似乎已经不见了,尽管不是100%确定

事后看来,也许我应该先隐藏或提交未提交的更改——但话说回来,那个命令的意义何在

所以问题是,如果有人知道Git在这种情况下对未提交的更改做了什么?它们是永久丢失还是存放在某个临时位置?如果只是在这个过程中把它们存储在内存中,那么我想试图从某个地方把它们挖出来是失败的


查看文档,他们似乎没有详细说明流程本身。

我无法100%肯定地回答git是否会存储工作树的备份副本;但我可以说,我还没有观察到它会这样做,我没有发现任何文档表明它会这样做,如果这样做的代价太高,我会有点惊讶。希望具有代码级知识的人能够提出一些更明确的建议,但就目前的情况而言,我想说,不幸的是,您的工作可能更倾向于确认工作文件副本中的数据是否丢失,如果丢失,则从上次提交的状态复制更改

不是要当星期一早上的四分卫,但是

我考虑任何结账,而没有承诺的变更可能有风险;代码>签出--合并更多,因为您明确告诉git您希望它绕过其正常警告,并将更改合并到未提交的工作文件中。而崩溃是最糟糕的情况;一个我们认为像原子一样的操作可能被中断了

当然,在那个特定的时刻发生崩溃是一种侥幸,而且在导致此类数据丢失之前,
checkout--merge
可能会在许多实例上节省一点时间/精力


不过,就我个人而言,我喜欢git的一个事实是,一旦发生了什么事情,它就提供了非常有力的保证,防止数据丢失;提交和分支都足够“轻量级”,可以随意使用临时的。因此,当我看到为数不多的几个命令为我提供了一点节省,以换取我可能丢失数据的微小机会时,我选择避免它。这并不意味着这是唯一正确的选择,但如果你要冒险,那么你就要冒险。

我很肯定这些文件会在某个地方。我想你的本地回购协议正在运行?你可以。它应该使您能够找到任何“悬而未决”的提交。我想这是很难复制的,因为它涉及到使用--merge签出期间的崩溃。问题是simpel已经足够了——git在这个过程中对未提交的更改做了什么?(如果没有丢失——一种恢复的方法会很有帮助)@Liam我已经尝试过“fsck——失物招领”并浏览了输出。这和你的建议不同吗?老实说,不是100%确定。试一试,看看你能得到什么。我认为这是一样的(或至少相似的)@Liam,这是公平的。不过,我确实希望有人能提供一些见解——因为我不想花太多时间去寻找可能永远丢失的东西——这也是我来这里的原因。数据似乎在工作副本中丢失了,但我不是100%确定。你对我问题的回答大多是猜测。根据我的经验,Git不仅仅是硬删除内容-签出-合并应该“更新”它能做的任何事情,否则会产生冲突-这不一定会产生额外的成本。我认为关于实际过程的一些事实在这里是有序的。它是否能批量处理内存中的修改?然后再覆盖文件?那么是的,它很可能会永远丢失。@darune:我的答案有一些猜测,因为你的问题没有什么根据(这就是为什么没有其他人会给出“更好”的答案)。然而,你却以此为借口,认为答案的事实部分也有问题,而事实并非如此。“根据[你的]经验,Git不仅仅是硬删除内容”?数据库的管理方式几乎是正确的,但在工作树中它根本不是正确的,一些命令告诉它这样做,而bc能够从被中断的文件重写中恢复是一个文件系统问题(大多数fs不这样做)。