在尝试将repo推送到我的github之后,即使在推送更新之后,在从另一台计算机上推送了一个小的更改后,我仍然收到错误。这是我尝试git push origin master
时出现的错误:
To https://github.com/[me]/[project].git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/[me]/[project].git'
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.
这里发生了什么?
答案 0 :(得分:1)
之所以发生这种情况,是因为您上次下载后已将某些更改推送到远程分支。您的本地分支机构与远程分支机构不是最新的。您必须将它们带到同一级别,然后将本地分支推送到远程存储库。
这可以使用其中任何一个来完成:
<强> 1。 Fetch + Rebase:
git fetch
git rebase origin/branch_name
这种方法有两个步骤。您首先获取远程存储库中所做的所有更改。获取后,然后使用远程分支重新分支您的分支。
<强> 2。获取+合并
git fetch
git merge origin/branch_name
在此,您首先获取所有更改,但不是重新定位,而是将远程更改合并到本地分支上。
第3。拉
git pull
在单个命令中基本上是git fetch
后跟git merge
。您可以使用此命令,git将自动执行提取,然后将远程更改合并到您的本地分支。
<强> 4。使用Rebase拉
git pull --rebase origin branch_name
这告诉git使用rebase而不是merge。 Git将首先获取,然后使用您的本地更改来重新定义远程更改。
完成此操作后,可能会发生一些冲突。解决此冲突,然后您可以使用以下命令将更改推送到远程存储库。
git push origin branch_name
对于合并与rebase: When do you use git rebase instead of git merge?
答案 1 :(得分:0)
自上次下载以来,对远程代码库(通常称为git merge
:这是Github存储库的本地别名)进行了一些更改。这意味着您必须使用git pull
下载最新版本的远程代码,并告诉Git将新代码与git push
集成。这些有一个别名命令:
{{1}}
您必须解决来自回购的新代码与新编辑之间可能出现的任何冲突。最后你可以:
{{1}}
将新编辑的代码发送回服务器到远程存储库。