当我试图将我的代码推送到GitHub时,我遇到了一些问题。

Pushing to git@github.com:519ebayproject/519ebayproject.git
To git@github.com:519ebayproject/519ebayproject.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:519ebayproject/519ebayproject.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我还没有在存储库中推入任何东西,那么为什么我需要拉出一些东西呢?


当前回答

您的分支应该在注意到最新合并的更改时立即包含它们,但是您还没有提取最新的更改。

git fetch 

也许这就是所需要的。如果这不起作用,那么你可能需要:

git pull <sharedRepo> <branch> --rebase

如果您没有任何合并冲突,您应该能够成功地推动您的更改。

git push <forkedRepo> <branch>

如果您遇到合并冲突,您无法在GitHub中远程解决。您必须在本地解决它们,然后使用强制标签推动解决方案,因为合并冲突解决方案将更改历史记录。

git push <forkedRepo> <branch> -f

其他回答

另一个解决方案是,如果可以的话,通过再次提交来推进远程的头部。在你把这个高级的头拉到局部子树之后,你将能够再次从它推入。

在我的情况下,我检查了“mybranch”,并做了git pull,所以我不知道为什么推不起作用。最后,我意识到我推错了树枝。我输入的是git push origin master而不是git push origin mybranch。

如果你已经做了git pull,仍然收到这个消息,确保你推的是正确的分支。

这通常发生在git提交并尝试在git拉到其他人已经做了更改的分支x之前进行git推送更改时。

正常的流程如下:

步骤1:git将本地未提交的更改保存在该分支上。

步骤2:git拉origin branch_name -v来拉并合并到本地提交的分支上的更改(给这个合并一些消息,如果有的话修复冲突)。

步骤3:git隐藏弹出隐藏的更改(然后你可以在弹出的文件上提交,如果你想要,或者先推送已经提交的更改(STEP4),然后再将新的提交到文件中。)

步骤4:git推送origin branch_name -v合并后的更改。

将branch_name替换为master(用于主分支)。

这可能导致远程存储库丢失提交;小心使用。

如果你不希望将远程分支合并到本地分支(参见git diff的区别),并且想要强制推送,请使用push命令和-f

git push -f origin <branch>

原点是远程回购的名称。

通常,该命令拒绝更新不是用于覆盖它的本地引用的祖先的远程引用。这个标志禁用检查。这可能导致远程存储库丢失提交;小心使用。

您的分支应该在注意到最新合并的更改时立即包含它们,但是您还没有提取最新的更改。

git fetch 

也许这就是所需要的。如果这不起作用,那么你可能需要:

git pull <sharedRepo> <branch> --rebase

如果您没有任何合并冲突,您应该能够成功地推动您的更改。

git push <forkedRepo> <branch>

如果您遇到合并冲突,您无法在GitHub中远程解决。您必须在本地解决它们,然后使用强制标签推动解决方案,因为合并冲突解决方案将更改历史记录。

git push <forkedRepo> <branch> -f