我是一个相对较新的开发人员。我最近制作了一个应用程序,并使用Heroku对其进行了部署。它有一些错误,所以我修复了它们。昨天我在终端输入了常用命令;即git add .
,git commit -m "Fixed some bugs"
和git push heroku master
。输入最后一条命令时,出现错误提示
Error: failed to push some refs to '<someUr>l'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.
我搜索了此错误,发现此问题here与之类似。所以我按照答案说了做。 git pull
和git pull heroku master
。我会以某种顺序几次执行这五个命令(对问题的不清楚,很抱歉,昨天发生了)。然后,当我曾经做过git push heroku master
时,它没有给出任何错误。所以我转到我的网站,这给了我一个应用程序错误。当我回去检查文件时,发现它们已被修改。
不知何故,>>>>>>>HEAD
和几个等号以及另一个看起来像哈希的奇怪组合都在文件周围。除此之外,它似乎还添加了我先前删除的一些代码。
这是一场灾难。最后,我在终端中输入git diff
,并将200行代码修改为以前的状态,以检查终端中的差异。
现在,在花了一些时间之后,我已经成功部署了它。我想知道是什么原因造成的,如果再次发生,该如何解决。预先感谢。
答案 0 :(得分:1)
某种程度上,
>>>>>>>HEAD
和一些等号以及另一个看起来像哈希的奇怪组合都围绕着文件。
这些是您需要手动解决的合并冲突。
在远程git repo上,您可能具有以下历史记录:
A -> B -> C -> D
但是在本地您只有git历史记录:
A -> B -> C
当您执行git pull时,您本地的git repo将同步到远程git。一切都很好。但是,如果您做了一些工作,则git历史记录如下:
A -> B -> C -> E
现在,如果您进行git pull,它就无法确定D或E是否正确。您需要合并它。这导致:
A -> B -> C -> D -> F
-> E ^
在这里您将看到>>>>>>>HEAD
。
要避免这种情况发生,必须确保在执行git pull时,您没有任何已修改/暂存的文件。 (执行git reset
,这将删除尚未提交给git历史记录的暂存文件。)
而且,您必须确保要开发的本地分支在git历史记录中没有差异。 (如果其他人也在分支上工作,则可能会发生这种情况。)