推送时,我收到 "overwritten by merge" 错误。我相信这是由 post-update 挂钩引起的。我可以绕过吗?

On push, I receive a "overwritten by merge" error. I believe it is caused by a post-update hook. Can I bypass?

我有一个特定的文件,filename.html,我已经对其进行了一些更改,我想推送提交。所以我进行了更改,添加并提交了它们。每当我按下时,我都会得到以下输出:

Enumerating objects: 9, done. Counting objects: 100% (9/9), done. Delta compression using up to 4 threads Compressing objects: 100% (5/5), done. Writing objects: 100% (5/5), 439 bytes | 439.00 KiB/s, done. Total 5 (delta 4), reused 0 (delta 0) remote: remote: **** Pulling changes into Live [Hub's post-update hook] remote: remote: From /var/git/html remote: * branch master -> FETCH_HEAD remote: error: Your local changes to the following files would be overwritten by merge: remote: filename.html remote: Please, commit your changes or stash them before you can merge. remote: Aborting remote: Updating c987b05..583872c To website.com:/var/git/html.git 76ad8aa..583872c master -> master

我试过 git reset --hard 并且我试过强推。我试过了git push origin master --no-verify。我试图隐藏这些变化。没有成功。

明确地说,我可以对项目中的所有其他文件进行更改和推送提交。只有这个特定的文件,如果我进行更改并提交更改,则不会让我推送。

从我在这里问的另一个问题中,有人告诉我可能是 post-update 钩子导致拉动,这就是错误出现的地方。但是,我一直无法找到解决方法。我没有在这个项目上设置 git,而设置的开发人员已经离开了公司。 git 的设置方式是,在推送时,更改会通过 ftp 推送以更新开发站点。

有没有办法绕过这个钩子以便我可以推送?对于这个我不知道的问题,有更好的解决方法吗?

提前致谢,这个让我难住了。

好吧,经过大量研究和反复试验,我终于修复了它。本质上,git 被设置为在您执行 git push 时更新开发站点。该系统的设置基本上与所描述的相同 here

所以我所做的是我替换了原来的 post 更新挂钩,这是链接文章中描述的那个,用这个:

#!/bin/sh echo echo "**** Pulling changes into Live [Hub's post-update hook]" echo cd /var/www/html || exit unset GIT_DIR git fetch --all git reset --hard hub/master git pull hub master exec git-update-server-info

在这之后我终于能够克服原来post中列出的错误,现在一切又运行顺利了。