学习Git:尽管配置正确,远程拒绝我的推送?

时间:2016-09-11 09:28:19

标签: git merge-conflict-resolution

我刚刚学习Git所以请耐心等待我。我在本地写了一些代码,现在我想把它推到我的远程服务器(origin)。我收到这个错误:

  

! [拒绝]主人 - > master(先获取)

     

错误:无法将某些引用推送到'ssh://website@host.website.com:2200 / home / user'

     

更新被拒绝,因为遥控器包含您本地没有的作品。这通常是由另一个存储库推送

引起的

遥控器为v 2.4.1并具有此设置(git config --list的输出):

core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
receive.denycurrentbranch=updateInstead

最后是否意味着我应该被允许在不引发错误的情况下覆盖嫌疑人?

我基本上都在寻找最简单的设置:我不在服务器上开发,而且我是唯一一个可以访问它的人,所以我想要开发机器推动赢得的任何东西。

我看到this answer关于使远程存储库裸露,但说明是要删除文件夹中的所有内容,.git。这对我不起作用,因为那里的文件不属于我的项目,但我不想移动

如果我登录远程存储库并执行git status,我会看到

  

未跟踪文件:(使用“git add ...”包含将要提交的内容)

     

...(长文件列表)

     

没有添加到提交但未跟踪的文件存在(使用“git add”跟踪)

附录

我刚刚做了:

$ git push --force origin master
stdin: is not a tty
Counting objects: 3801, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (3674/3674), done.
Writing objects: 100% (3801/3801), 6.95 MiB | 37.00 KiB/s, done.
Total 3801 (delta 2450), reused 0 (delta 0)
error: Untracked working tree file 'cacert.pem' would be overwritten by merge.
To ssh://website@host.website.com:2200/home/user
 ! [remote rejected] master -> master (Could not update working tree to new HEAD)
error: failed to push some refs to 'ssh://website@host.website.com:2200/home/'

我想我可以删除该文件的服务器副本并再试一次?这两个文件具有相同的内容(它是复制/粘贴作业)

1 个答案:

答案 0 :(得分:1)

  

我不希望本地从遥控器导入任何我希望本地文件覆盖远程文件的更改

问题在于,如果您不想git pull,那么您需要:

git push --force

但这不仅会覆盖文件,它会覆盖您提交的远程提交的近期历史记录,因此请确保这确实是您想要的。

  

遥控器已设置receive.denycurrentbranch=updateInstead。这不意味着我的推送应该只更新远程主分支吗?

它允许推送到非裸仓(see more here关于" push-to-deploy"),但错误信息与此无关。
这是关于远程方面的提交,你不在本地。

通常,您pull --rebase可以在更新的已获取远程分支上重播您的更改。 然后你推。