Git merge-已经是最新的:硬重置?

时间:2017-01-05 09:55:10

标签: git version-control merge git-branch git-diff

我正在使用Git作为Django / Python项目的版本控件,我最近接手了这个项目,之前没有使用它。

最近,我从master分支创建了一个新的分支,以便修复一个错误(显然,在我的本地机器上进行开发,我打算在修复后推送到服务器)错误)。

我一直在进行开发工作的分支称为dateReceived,我最近修复了我创建此分支的特定错误。

完成工作后,我尝试将dateReceived与我的本地master合并,但是有一些冲突似乎打破了我的本地master分支,我是无法解决它们,因此我本地master上的版本不再有效。

我将本地master恢复为我从服务器上的实时版本制作的备份,通过查看我在开始处理此错误之前所做的commit,其他一切都是还在工作。这意味着在我再次承诺/分支之前,我处于“独立头”状态,并从那里开始工作。那时我已经不再处于'超级头脑'状态了。

所以,在实时服务器上,我现在拥有原始的master分支,它正常工作 - 除了我在本地工作的bug,在我的开发机器上,我有两个分支:{ {1}},它与实时服务器上的版本(以及错误仍然存​​在的版本)保持同步,以及master,它正常工作(修复了错误)。

如果我签出我的本地dateReceived分支,并在我的浏览器中从master查看该网站,我可以看到当我尝试在该页面上执行该特定功能时该错误仍然存​​在网站。

但是,如果我签出我的本地localhost:800/.../.../concept分支,并在我的浏览器中从dateReceived查看该网站,我可以看到当我尝试执行该特定功能时该错误已得到修复网页。

如果我现在尝试将localhost:8000/.../.../concept再次合并到dateReceived我的本地计算机上(准备好将本地master分支推送到服务器一旦修复了错误)使用命令:

master

来自我的git merge dateReceived 分支,我收到一条消息:

  

已经是最新的

但显然不是,因为该错误仍然存​​在于master中,但已在master中修复。

如果我跑:

dateReceived

来自我的git diff dateReceived 分支,显示了mastermaster之间的差异列表 - 很明显,Git可以说两个分支之间存在差异...... < / p>

我在Git merge reports "Already up-to-date" though there is a difference

找到了类似的问题

并且接受的答案似乎表明我尝试合并的分支是我当前分支的父分支,我猜可能在我破坏本地dateReceived后恢复提交时发生了。

似乎解决这个问题的方法是做一个master,但是我很担心这样做,因为根据我的理解,它会彻底删除更改,等等我无法恢复它...

这实际上是解决我遇到的问题的唯一方法hard reset说它在尝试将另一个分支合并到它时已经是最新的,即使我实际上可以看到它不是,或者还有什么我可以做的吗?

执行master的潜在风险是什么?如何最大限度地降低这些风险?我还有什么办法可以解决这个hard reset问题,以便我可以将git merge合并到dateReceived中,以便将固定版本推送到服务器吗?

1 个答案:

答案 0 :(得分:1)

  

接受的答案似乎表明我尝试合并的分支是我当前分支的父母

我相信这是真的,或者你的本地master分支发生了其他事情,导致状态不佳。无论出了什么问题,你都应该安全地将它重置为遥控器上的版本,这个版本似乎正常工作(减去一个bug)。请尝试以下方法:

git fetch origin                 # update origin/master to the remote
git checkout master              # switch to local master branch
git reset --hard origin/master   # reset local master to origin/master

然后尝试再次进行合并:

git merge dateReceived

如果您遇到合并冲突,请不要惊慌,而是在可能的情况下检查IDE中的每个冲突文件,甚至在任何文本编辑器中检查。我的猜测是你将能够通过他们。然后,进行合并提交,希望你的错误得到解决。