当我试图将我的代码推送到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拉)

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

我将提供一个例子和一张图片来解释。让我们假设你最后一次从原点/分支抽取是在提交b。你已经完成并提交了一些工作(提交C)。与此同时,其他人已经完成了他们的工作,并将其推到原点/分支(提交D)。这两个分支之间将需要合并。

——提交C / / / origin/branch:提交A ------提交B ----提交D

因为您是想要推送的人,Git会强制您执行合并。为此,您必须首先从原点/分支获取更改。

本地分支:——提交C——提交E / / / / / / origin/branch:提交A ------提交B ----提交D

在完成合并之后,您现在可以通过推送您的更改将原点/分支快进到Commit E。

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

其他回答

我也遇到过类似的问题,结果是我保持分支保持最新的工作流程出了问题。我正在做以下事情:

在我当地的'master'中

git fetch upstream
git merge upstream/master --ff-only

然后回到我当地的分行

git rebase master

这适用于以前的git流,但不适用于github。git rebase是导致同步问题的问题(我承认这是我不得不接受的,但没有完全理解),不幸的是,git push -f可能是最简单的选择。不好的。

我的新流程是直接使用git merge来更新分支,如下所示:

在我当地的分行

git fetch upstream
git merge upstream/master

没有快进,因为我将在本地分支中做出改变。

正如你可能知道的那样,我不是git专家,但是我被可靠地告知这个工作流可能会避免我遇到的特定问题。

我已经在GIT存储库中解决了这个问题。在这种情况下,不需要重新设置或强制提交。使用以下步骤解决此问题-

local_barnch> git branch --set-upstream to=origin/<local_branch_name> 

local_barnch>git pull origin <local_branch_name>

local_barnch> git branch --set-upstream to=origin/master

local_barnch>git push origin <local_branch_name>

希望能有所帮助。

我遇到了同样的问题,结果是我在一个不同的(本地)分支上,而不是我认为的,正确的本地分支在远程提交时落后了。

我的解决方案:签出正确的分支,从其他本地分支中选择提交,git拉和git推

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

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

git push -f origin <branch>

原点是远程回购的名称。

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

我在我的教程《如何使用GitHub:初学者教程》中提到了这一点。

当你在GitHub上创建一个新的存储库时,GitHub可能会要求你创建一个自述文件。如果你直接在GitHub上创建自述文件,那么你需要首先在“推送”请求成功之前发出“拉”请求。 这些命令将“拉”远程存储库,将其与当前文件合并,然后将所有文件“推”回GitHub:

git pull https://github.com/thomas07vt/MyFirstRepo.git master

git push https://github.com/thomas07vt/MyFirstRepo.git master