Git 合并 - 已经是最新的:硬重置?
Git merge- Already up-to-date: hard reset?
我正在使用 Git 作为 Django/ Python 项目的版本控制,我最近接手了该项目的开发,之前没有使用过它。
最近,我从master
分支创建了一个新分支,以修复错误(显然,在我的本地机器上进行开发,目的是一旦我推送到服务器已修复错误)。
我一直在做开发工作的分支叫做 dateReceived
,我最近修复了我创建这个分支来处理的特定错误。
完成工作后,我尝试将 dateReceived
合并回我的本地 master
,但是有一些冲突似乎破坏了我的本地 master
分支,并且我无法解决它们,所以我本地 master
上的版本不再有效。
我将本地 master
恢复到我从服务器上的实时版本创建的备份,方法是检查我在开始解决此错误之前所做的 commit
,当一切其他还在工作。这意味着在我再次提交/分支并从那里开始工作之前,我曾短暂地处于 'detached head' 状态。那时我不再处于 'detached head' 状态。
所以,在实时服务器上,我现在有原始的 master
分支,它工作正常 - 除了我在本地处理的错误,在我的开发机器上,我有两个分支: master
,它与实时服务器上的版本是最新的(错误仍然存在),dateReceived
,它工作正常(错误已修复)。
如果我检查我的本地 master
分支,并在我的浏览器中从 localhost:800/.../.../concept
查看该站点,我可以看到当我尝试在该页面上执行该特定功能时该错误仍然存在网站的。
但是,如果我检查我的本地 dateReceived
分支,并在我的浏览器中从 localhost:8000/.../.../concept
查看该站点,我可以看到当我尝试执行该特定功能时错误已被修复在网站的那个页面上。
如果我现在尝试在我的本地计算机上再次将 dateReceived
合并到 master
(准备好将我的本地 master
分支推送到服务器,一旦它是最新的错误固定)使用命令:
git merge dateReceived
从我的 master
分支,我收到一条消息:
Already up-to-date
但显然不是,因为该错误在 master
中仍然存在,但已在 dateReceived
中修复。
如果我运行:
git diff dateReceived
在我的 master
分支中,显示了 master
和 dateReceived
之间的差异列表 - 非常清楚,Git 可以看出两者之间存在差异两个分支...
我在以下位置发现了类似的问题:Git merge reports "Already up-to-date" though there is a difference
并且接受的答案似乎表明我试图合并的分支是我当前分支的父分支,我猜这可能是在我破坏本地 master
后恢复提交时发生的。
似乎解决这个问题的方法是 hard reset
,但我对此非常谨慎,因为据我所知,它将完全删除更改等,之后无法恢复我做...
这实际上是解决我遇到的问题的唯一方法吗 master
在尝试将另一个分支合并到其中时说它已经是最新的,即使我实际上可以看到不是,或者还有什么我可以做的吗?
hard reset
的潜在风险是什么?我怎样才能将这些风险降到最低?我还能做些什么来解决这个 git merge
问题,以便我可以将 dateReceived
合并到 master
中以便将固定版本推送到服务器?
the accepted answer seems to suggest that the branch I am trying to merge is a parent of my current branch
我相信这要么是真的,要么您当地的 master
分支发生了其他事情,导致状态不佳。不管出了什么问题,您都应该安全地将其重置为遥控器上的版本,该版本似乎工作正常(减去一个错误)。尝试以下操作:
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 中的每个冲突文件,甚至在任何文本编辑器中检查。我的猜测是你将能够通过它们。然后,进行合并提交,希望你的错误应该得到解决。
我正在使用 Git 作为 Django/ Python 项目的版本控制,我最近接手了该项目的开发,之前没有使用过它。
最近,我从master
分支创建了一个新分支,以修复错误(显然,在我的本地机器上进行开发,目的是一旦我推送到服务器已修复错误)。
我一直在做开发工作的分支叫做 dateReceived
,我最近修复了我创建这个分支来处理的特定错误。
完成工作后,我尝试将 dateReceived
合并回我的本地 master
,但是有一些冲突似乎破坏了我的本地 master
分支,并且我无法解决它们,所以我本地 master
上的版本不再有效。
我将本地 master
恢复到我从服务器上的实时版本创建的备份,方法是检查我在开始解决此错误之前所做的 commit
,当一切其他还在工作。这意味着在我再次提交/分支并从那里开始工作之前,我曾短暂地处于 'detached head' 状态。那时我不再处于 'detached head' 状态。
所以,在实时服务器上,我现在有原始的 master
分支,它工作正常 - 除了我在本地处理的错误,在我的开发机器上,我有两个分支: master
,它与实时服务器上的版本是最新的(错误仍然存在),dateReceived
,它工作正常(错误已修复)。
如果我检查我的本地 master
分支,并在我的浏览器中从 localhost:800/.../.../concept
查看该站点,我可以看到当我尝试在该页面上执行该特定功能时该错误仍然存在网站的。
但是,如果我检查我的本地 dateReceived
分支,并在我的浏览器中从 localhost:8000/.../.../concept
查看该站点,我可以看到当我尝试执行该特定功能时错误已被修复在网站的那个页面上。
如果我现在尝试在我的本地计算机上再次将 dateReceived
合并到 master
(准备好将我的本地 master
分支推送到服务器,一旦它是最新的错误固定)使用命令:
git merge dateReceived
从我的 master
分支,我收到一条消息:
Already up-to-date
但显然不是,因为该错误在 master
中仍然存在,但已在 dateReceived
中修复。
如果我运行:
git diff dateReceived
在我的 master
分支中,显示了 master
和 dateReceived
之间的差异列表 - 非常清楚,Git 可以看出两者之间存在差异两个分支...
我在以下位置发现了类似的问题:Git merge reports "Already up-to-date" though there is a difference
并且接受的答案似乎表明我试图合并的分支是我当前分支的父分支,我猜这可能是在我破坏本地 master
后恢复提交时发生的。
似乎解决这个问题的方法是 hard reset
,但我对此非常谨慎,因为据我所知,它将完全删除更改等,之后无法恢复我做...
这实际上是解决我遇到的问题的唯一方法吗 master
在尝试将另一个分支合并到其中时说它已经是最新的,即使我实际上可以看到不是,或者还有什么我可以做的吗?
hard reset
的潜在风险是什么?我怎样才能将这些风险降到最低?我还能做些什么来解决这个 git merge
问题,以便我可以将 dateReceived
合并到 master
中以便将固定版本推送到服务器?
the accepted answer seems to suggest that the branch I am trying to merge is a parent of my current branch
我相信这要么是真的,要么您当地的 master
分支发生了其他事情,导致状态不佳。不管出了什么问题,您都应该安全地将其重置为遥控器上的版本,该版本似乎工作正常(减去一个错误)。尝试以下操作:
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 中的每个冲突文件,甚至在任何文本编辑器中检查。我的猜测是你将能够通过它们。然后,进行合并提交,希望你的错误应该得到解决。