我在尝试在GIT上推送项目时遇到以下问题。
推送它我收到此错误消息:
$ git push origin master
To https://bitbucket.org/MyAccount/my-project.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'https://MyAccount@bitbucket.org/MyAccount/my-projec.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
所以看来,如果我做错了断言,请纠正我,在我的远程存储库中有一些我没有在我的本地存储库中进行的更改,它建议我执行拉动来获取这些更改。
这对我来说是一个问题,因为本地版本是我的应用程序的最后一个确定版本,我不能冒险从远程存储库覆盖一些旧的和错误的(或由某人制作的)。
我是否可以指定推送本地内容而不考虑远程更改?或者我如何检查上次本地提交和远程内容之间的区别?
答案 0 :(得分:3)
是的,正如您所理解的那样,这是因为远程master
分支具有新版本(可能由您的同事推送)。你不能忽视新版本,除非你强制推动,这将导致新版本丢失。
你应该将新版本从远程版本拉到本地版本,并在新版本的顶部重新设置未删除的提交,并将冲突文件保留为本地版本,如果在git pull期间出现冲突,则可以使用该命令
git pull origin master --rebase -X theirs
您可以使用跟踪分支来检查远程是否有新版本。 master
分支通常会跟踪origin/master
(您可以git branch –vv
查看)。然后你可以使用git status
,git将在本地主分支和远程分支之间进行比较。