我有一个远程 git 存储库和一个我使用的本地存储库。每当我在本地进行任何更改时,我都会将它们推送到远程。然后我有时会在远程文件上执行“git commit”以存储远程文件上的更改。
我根本不直接编辑远程存储库。我只是提交更改。我是一名单一开发人员,没有其他人参与该存储库。
为什么我会收到一个错误,据我所知,这意味着我必须先拉?
我不想拉动,因为远程存储库文件已过时,它将丢失我的本地更改。这真的很烦人,为什么会发生这种情况?我怎样才能修复而不需要拉取或重新创建存储库? (正如你所看到的,这有点像版本控制风格的颠覆类型)
编辑-错误:
To ssh://...
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'ssh://...'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
您应该做的是将远程存储库创建为裸存储库。裸存储库只是 git 存储库,没有当前签出(也就是说,它就像只是 git 存储库的内容).git
dir 在常规 Git 存储库中,因此它包含对象和引用,但它没有文件层次结构的索引或工作副本)。如果您尝试推送到非裸存储库,工作副本将与提交的内容不同步,并导致您在此处看到的各种问题。
您可以使用创建一个裸存储库git init --bare repo.git
。或者您可以使用以下命令将现有存储库克隆为裸存储库git clone --bare original-repo new-repo.git
.
如果您想在服务器上签出存储库的副本,则需要在服务器上创建一个新的非裸存储库,然后从您推送到的裸存储库拉入该存储库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)