协慌网

登录 贡献 社区

无法推送到 GitHub - 一直说需要合并

我是GitHub 的新手。今天,当我尝试将代码推送到 GitHub 时遇到了一些问题。

Pushing to [email protected]:519ebayproject/519ebayproject.git
To [email protected]:519ebayproject/519ebayproject.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to '[email protected]: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 diff 的区别 ),并且想要进行强制推送,请在-f 中使用push 命令

git push -f origin <branch>

其中origin是您的远程存储库的名称。

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

消息告诉您,

合并远程更改(例如 “git pull”)

使用git pull将最新的更改从远程存储库拉到本地存储库。在这种情况下,因为您已经对本地存储库进行了更改,所以提取更改将需要合并。

我将提供一个示例和一张图片进行解释。假设您从起点 / 分支的最后一次拉拔是在 CommitB。您已经完成并完成了一些工作(Commit C)。同时,其他人也完成了他们的工作并将其推到起点 / 分支(Commit D)。这两个分支之间需要合并。

local branch:                         --- Commit C 
                                    /
                                   /
                                  /
origin/branch: Commit A ------ Commit B ---- Commit D

因为您是要推送的人,所以 Git 会强迫您执行合并。为此,您必须首先从原点 / 分支拉出更改。

local branch:                         --- Commit C -- Commit E
                                    /               /           
                                   /               /             
                                  /               /               
origin/branch: Commit A ------ Commit B ---- Commit D

完成合并后,现在将允许您通过推送更改将源 / 分支快速转发到 CommitE。

Git 要求您自己处理合并,因为合并可能会导致冲突。

您是否在推送之前更新了代码?

推送任何内容之前,请使用git pull origin master

我假设您使用origin作为遥控器的名称。

您需要先进行推送,然后再进行推送(以防其他人已经在github.com上更新了代码),才能使本地存储库处于最新github.com 。这有助于在本地解决冲突。