我开了个藏宝箱,合并发生了冲突。与被列为重复的问题不同,我已经在我想保留的目录中有一些未提交的更改。我不只是想让合并冲突消失,还想让我的目录恢复到弹出窗口之前的状态。

我尝试了git合并-abort,但git声称没有合并正在进行中。是否有一种简单的方法来中止弹出,而不破坏我原来在目录中的更改?


当前回答

使用git reflog列出在git历史中所做的所有更改。复制一个动作id,输入git reset ACTION_ID

其他回答

使用git reflog列出在git历史中所做的所有更改。复制一个动作id,输入git reset ACTION_ID

简单的一行

我总是用

Git重置—合并

我不记得它曾经失败过。


注意:git重置——合并将丢弃任何阶段性更改。此外,正如@Saroopashree Kumaraguru在评论中指出的那样,隐藏的内容不会丢失,以后可以重新应用。

尝试使用if跟踪文件。

git rm <path to file>
git reset  <path to file>
git checkout <path to file>

如果你只有存储的更改,试试下面的一行。它删除了当前的每个局部更改。

Git checkout -f

好吧,我想我已经设法找到了一个工作流程,可以让你回到你需要的地方(就像你没有做流行一样)。

事先做个备份!!我不知道这是否适用于你,所以复制你的整个回购以防它不起作用。

1)修复合并问题,并通过选择所有来自补丁的更改来修复所有冲突(在tortoisemerge中,这显示为一个)。REMOETE(他们的))。

git mergetool

2)提交这些更改(它们已经通过mergetool命令添加)。给它一个“合并”的提交消息或其他你记得的东西。

git commit -m "merge"

3)现在你仍然会有你最初开始的本地未分阶段的变化,从补丁中重新提交(我们可以稍后摆脱这个)。现在提交未分阶段的更改

git add .
git add -u .
git commit -m "local changes"

4)反转补丁。这可以通过以下命令来完成:

git stash show -p | git apply -R

5)提交以下更改:

git commit -a -m "reversed patch"

6)取消patch/unpatch提交

git rebase -i HEAD^^^

从中删除带有“merge”和“reversed patch”的两行。

7)找回你的unstancing changes,并撤销“local changes”的提交

git reset HEAD^

我已经运行了一个简单的例子,它让你回到你想要的地方-直接在隐藏之前被弹出,与你的本地变化和隐藏仍然可用的弹出。