我正在使用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
分支,显示了master
和master
之间的差异列表 - 很明显,Git可以说两个分支之间存在差异...... < / p>
我在Git merge reports "Already up-to-date" though there is a difference
找到了类似的问题并且接受的答案似乎表明我尝试合并的分支是我当前分支的父分支,我猜可能在我破坏本地dateReceived
后恢复提交时发生了。
似乎解决这个问题的方法是做一个master
,但是我很担心这样做,因为根据我的理解,它会彻底删除更改,等等我无法恢复它...
这实际上是解决我遇到的问题的唯一方法hard reset
说它在尝试将另一个分支合并到它时已经是最新的,即使我实际上可以看到它不是,或者还有什么我可以做的吗?
执行master
的潜在风险是什么?如何最大限度地降低这些风险?我还有什么办法可以解决这个hard reset
问题,以便我可以将git merge
合并到dateReceived
中,以便将固定版本推送到服务器吗?
答案 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中的每个冲突文件,甚至在任何文本编辑器中检查。我的猜测是你将能够通过他们。然后,进行合并提交,希望你的错误得到解决。