推送时,我收到 "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中列出的错误,现在一切又运行顺利了。
我有一个特定的文件,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中列出的错误,现在一切又运行顺利了。