我已经建立了一个远程的非裸露的“主”仓库,并将其克隆到我的计算机上。我进行了一些本地更改,更新了本地存储库,然后将更改推回到远程仓库中。到那时为止一切都很好。
现在,我不得不更改远程仓库中的某些内容。然后,我更改了本地存储区中的某些内容。我意识到不需要更改远程仓库。因此,我尝试git push
从本地存储库到远程存储库,但出现类似以下错误:
为防止丢失历史记录,拒绝了非快进更新,请在合并之前合并远程更改。有关
git push --help
详细信息,请参见的“关于快进的注意事项”部分。
我以为
git push --force
会强制我的本地副本将更改推送到远程副本并使其相同。它确实强制执行更新,但是当我返回到远程仓库并进行提交时,我注意到文件包含过时的更改(主要远程仓库以前具有的更改)。
[我]尝试强制执行,但是当回到主服务器以保存更改时,我得到了过时的暂存。因此,当我提交存储库时,它们是不一样的。当我再次尝试使用git push时,出现了相同的错误。
如何解决此问题?
git push --force
确实是强制推送的另一种有效方法,它将推送分支git push origin master --force
与使用Git的默认设置一样好push.default config settings
,尽管在2.0之前和2.0之后的Git版本中,专门推送的分支有所不同。
git push --force
这些天工作正常,FWIW ...
git push --force-with-lease
效果更好:),除非您期望的状态,否则它将拒绝更新分支。(见developer.atlassian.com/blog/2015/04/force-with-lease)
git push -force
更加谨慎。