2015-05-25 69 views
0

我试图将一个回购推到我的github后,从另一台计算机,即使在拉更新后推小的更改后,不断收到一个错误。这是我在尝试git push origin master时得到的错误:从github无法推送或拉Git回购

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. 

这是怎么回事?

+3

这是告诉你的Git的方式,你必须先'fetch' +'merge'的其他修改(又名'pull')和*然后*'推'。 – GolfWolf

+0

尝试拉动新的更新,然后推。 – NendoTaka

+0

你也可以尝试'git pull --rebase',取决于远程仓库发生的事情以及你的工作流程。 – choroba

回答

1

发生这种情况是因为自上次下载它以来,一些更改已推送到远程分支。您的本地分支未与远程分支保持同步。您必须将它们引入同一级别,然后将本地分支推送到远程存储库。

这可以使用它们中的来完成:

1.取衍合+:

git fetch
git rebase origin/branch_name

有在该方法2层的步骤。您首先获取远程存储库中所做的所有更改。获取之后,您可以使用远程分支重定义您的分支。

2.取+合并

git fetch
git merge origin/branch_name

在此,首先获取所有的变化,但不是垫底,您合并远程修改到你的本地分支。

3.将

git pull

它基本上git fetch随后git merge在单个命令。你可以使用这个命令,git会自动执行提取,然后将远程更改合并到本地分支中。

4.将与再次基于

git pull --rebase origin branch_name

这告诉git的重订,即可以使用,而不是合并。Git将首先获取,然后使用本地更改重新设置远程更改。

完成此操作后,可能会发生一些冲突。解决这些冲突,然后您可以使用以下命令将更改推送到远程存储库。

git push origin branch_name

对于合并VS底垫:When do you use git rebase instead of git merge?

0

自上次下载以来,已对远程代码库(通常称为origin:这是Github存储库的本地别名)进行了一些更改。这意味着您必须使用git fetch下载最新版本的远程代码,并告诉Git将新代码与git merge集成。没有这些别名命令:

git pull 

你必须解决任何冲突,可以从回购的新代码和新的编辑之间产生。然后最后你可以:

git push 

将新的,编辑过的代码发送回远程仓库。