【问题标题】:Local changes lost after aborting merge in GIT在 GIT 中中止合并后本地更改丢失
【发布时间】:2019-07-31 14:06:34
【问题描述】:

我正在开发视觉工作室并使用 git。中止提交后,我丢失了所有本地更改。我所做的步骤是:

  1. 使用“Pull”选项拉取了分支,出现了一些冲突。
  2. 手动解决冲突并接受合并。
  3. 合并进程卡住了(我不知道为什么)。
  4. 中止合并过程。此时,我的所有本地更改都在待定更改选项卡中。
  5. 我关闭了 Visual Studio 并重新打开了解决方案,现在所有本地更改都丢失了。

有什么方法可以让我恢复我的更改。我用谷歌搜索但没有发现任何有用的东西。

【问题讨论】:

  • 一般来说,答案是否定的:Visual Studio 应该应用与git pull 相同的规则,即您应该首先提交。如果你已经提交,你可以取回你的文件。由于 VS 没有这样做,可能是 VS 有自己的非 Git 方式来恢复您的文件,但 Git 本身没有。
  • @torek 这应该是一个答案。
  • @Caleb:我没有也没有使用 VS,所以我不能说它真正做了什么,或者如何配置它来做更好的事情,如果是这样的话甚至可能。 git pullgit merge 代码 用于 允许您合并未提交的更改,但结果证明这是一个错误,并且在相对早期的 Git 中被禁止。为什么 VS 没有(如果和什么时候没有),我无法回答。

标签: git git-merge merge-conflict-resolution


【解决方案1】:

这就是为什么在拉取之前,为了安全起见,我总是更喜欢进行提交。

为了保持一致(除非您在 Mac 上激活了Time Machine),您可以安装插件local-history:它会为您保存每个修改文件的状态。

关于git merge --abortman page does mention

第二个语法 ("git merge --abort") 只能在合并导致冲突后运行。
git merge --abort 将中止合并过程并尝试重建预合并状态强>。

但是,如果在合并开始时有未提交的更改(特别是如果在合并开始后进一步修改了这些更改),git merge --abort 在某些情况下将无法重建原始(合并前)更改。

因此:

警告:不鼓励运行 git merge 并进行重要的未提交更改:虽然可能,但它可能会使您处于在发生冲突时难以退出的状态。

【讨论】:

  • 根据我的重新搜索并与我的前辈讨论后,我知道 Abort in GIT 将丢弃所有本地更改,基本上如果您中止合并 GIT 将带您回到它拥有的最新 GIT @VonC​​pan>
  • @WaleedNaveed 我同意。我已使用 git merge 手册页的相关部分编辑了答案。
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
相关资源
最近更新 更多