Git做奇怪的事情

时间:2020-07-29 10:36:16

标签: node.js git heroku

我是一个相对较新的开发人员。我最近制作了一个应用程序,并使用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 pullgit pull heroku master。我会以某种顺序几次执行这五个命令(对问题的不清楚,很抱歉,昨天发生了)。然后,当我曾经做过git push heroku master时,它没有给出任何错误。所以我转到我的网站,这给了我一个应用程序错误。当我回去检查文件时,发现它们已被修改。

不知何故,>>>>>>>HEAD和几个等号以及另一个看起来像哈希的奇怪组合都在文件周围。除此之外,它似乎还添加了我先前删除的一些代码。

这是一场灾难。最后,我在终端中输入git diff,并将200行代码修改为以前的状态,以检查终端中的差异。

现在,在花了一些时间之后,我已经成功部署了它。我想知道是什么原因造成的,如果再次发生,该如何解决。预先感谢。

1 个答案:

答案 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历史记录中没有差异。 (如果其他人也在分支上工作,则可能会发生这种情况。)