我有一个文件,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
。我试图隐藏这些变化。没有成功。
为了清楚起见,我可以对项目中的所有其他文件进行更改并推送提交。只有这一个特定的文件,如果我做出并提交更改,将不会让我推动。
从我在这里问到的另一个问题,我被告知可能是更新后的钩子导致拉动,这就是错误发生的地方。但是,我无法找到解决办法。我没有在这个项目上设置git,而那个开发者已经离开了公司。 git的设置方式是,当推送时,通过ftp推送更改以更新开发站点。
有没有办法绕过这个钩子,所以我可以推?我不知道这个问题有更好的解决办法吗?
在此先感谢,这个让我难过。
好吧,经过大量的研究和反复试验,我终于解决了这个问题。基本上,当你执行git push
时,git被设置为更新开发站点。该系统基本上与描述here的系统相同
所以我做的是替换了原始的帖子更新钩子,这是链接文章中描述的那个,用这个:
#!/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
在此之后,我终于能够通过原始帖子中列出的错误,现在一切都顺利运行。