GitHub 更新被拒绝,因为当前分支的尖端落后于它的远程分支
GitHub updates were rejected because the tip of current branch is behind its remote counterpart
我想我已经掌握了 GitHub 的基础知识 - 我了解在我的本地机器上初始化存储库、提交、推送、拉取、克隆等。但是当涉及到分支等时,我完全丢失。
现在我正在尝试推送我的最新版本的项目,但我做不到。以下为真:
网站上的存储库是我的,我是这个项目的唯一合作者;
这个网站是我的作品集。我只创建过 master 分支,但有一个 "developing" 分支不是我创建的,但我假设这是在 GitHub 页面上创建投资组合时的默认分支。
这个项目之前推过好几次了,一直都是问题
正如我所说,我正在尝试推送我的最新版本。这是发生了什么:
我查看了我所在的分支,它说我在 "master"。我添加、提交并尝试通过我的终端推送。它询问我的用户名和密码,我将它们输入,然后 returns:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/...(my portfolio address)...io.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
然后我尝试拉,并收到了这个:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
我不明白这个。在分支机构后面到底意味着什么?我以为我明白这一点,但显然我不明白。而且就算拿到了,自己的支线又怎么会落后于自己呢?我从来没有推到任何其他分支!
根据评论,听起来你把这里弄得一团糟,你将不得不以某种方式清理。不过,解决眼前问题的方法:
There is no tracking information for the current branch.
是 Git 告诉你做的:
git branch --set-upstream-to=origin/<branch> master
特别是,您显然希望将 origin/master
设置为 master
的上游:
git branch --set-upstream-to=origin/master master
现在所有三个命令——git pull
、1 git merge
和 git rebase
——都会知道你想保留你的 master
与您 Git 对其他 Git 的 master
.
的记忆同步
你的 Git 在某些点(当你告诉它时)连接到 origin
,找出 他们 在 他们的主人,把需要的东西都带来,并让你的origin/master
记住这一点。主要联系人是你 运行ning git fetch
或 git fetch origin
(如果你省略了 origin
,Git 确定你要使用哪个遥控器,或者猜测 origin
如果所有其他方法都失败了)。
更新记忆后,您可以将自己的记忆(您的 master
)与您的 Git 记得他们的记忆(您的 origin/master
)进行比较。如果是时候这样做,您可以 git merge
或 git rebase
您的主人,使用他们的(您的记忆)合并或变基。
您可能会遇到合并冲突!这些都是正常的:它们只是意味着 你 改变了一些文件,他们(不管他们是谁)改变了 相同 文件,并且你们都触摸了该文件的相同 行 ,但是你和他们对 做了不同的事情线。 Git 不知道是你比他们聪明,还是他们比你聪明,还是怎样。它只是将 both 更改放入您的文件并让您清理混乱。您现在必须编辑冲突文件,将 right 行放入其中,并将它们保存回工作树;然后git add
和git commit
所有合并的最终结果。
(如果你使用 git rebase
而不是 git merge
,你仍然会遇到合并冲突,但是一旦你解决了它们并 git add
-ed 文件,你应该 运行 git rebase --continue
而不是 git commit
。请参阅有关合并和变基的许多其他 SO 问题和答案。)
我建议避免使用 git pull
,因为它做的太多了:它首先为您 运行s git fetch
,然后为您 运行s git merge
。 (或者它 运行 对你 git rebase
而不是 git merge
,如果你这么说的话。)现在,在 git fetch
之后,你经常想要 运行 这两个命令之一...但您不一定要 运行 它 马上 。而且,您有 两个 命令可以尝试:您怎么知道您想要哪一个? 和 如果事情出错了——他们确实出错了——你怎么知道要寻找哪个命令的帮助?如果 you 运行 merge or rebase yourself,你就有了所有这些的答案。这就是为什么我说:忘掉 git pull
,坚持使用 git fetch
和你喜欢的任何其他第二个命令。
我想我已经掌握了 GitHub 的基础知识 - 我了解在我的本地机器上初始化存储库、提交、推送、拉取、克隆等。但是当涉及到分支等时,我完全丢失。
现在我正在尝试推送我的最新版本的项目,但我做不到。以下为真:
网站上的存储库是我的,我是这个项目的唯一合作者;
这个网站是我的作品集。我只创建过 master 分支,但有一个 "developing" 分支不是我创建的,但我假设这是在 GitHub 页面上创建投资组合时的默认分支。
这个项目之前推过好几次了,一直都是问题
正如我所说,我正在尝试推送我的最新版本。这是发生了什么:
我查看了我所在的分支,它说我在 "master"。我添加、提交并尝试通过我的终端推送。它询问我的用户名和密码,我将它们输入,然后 returns:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/...(my portfolio address)...io.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
然后我尝试拉,并收到了这个:
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> master
我不明白这个。在分支机构后面到底意味着什么?我以为我明白这一点,但显然我不明白。而且就算拿到了,自己的支线又怎么会落后于自己呢?我从来没有推到任何其他分支!
根据评论,听起来你把这里弄得一团糟,你将不得不以某种方式清理。不过,解决眼前问题的方法:
There is no tracking information for the current branch.
是 Git 告诉你做的:
git branch --set-upstream-to=origin/<branch> master
特别是,您显然希望将 origin/master
设置为 master
的上游:
git branch --set-upstream-to=origin/master master
现在所有三个命令——git pull
、1 git merge
和 git rebase
——都会知道你想保留你的 master
与您 Git 对其他 Git 的 master
.
你的 Git 在某些点(当你告诉它时)连接到 origin
,找出 他们 在 他们的主人,把需要的东西都带来,并让你的origin/master
记住这一点。主要联系人是你 运行ning git fetch
或 git fetch origin
(如果你省略了 origin
,Git 确定你要使用哪个遥控器,或者猜测 origin
如果所有其他方法都失败了)。
更新记忆后,您可以将自己的记忆(您的 master
)与您的 Git 记得他们的记忆(您的 origin/master
)进行比较。如果是时候这样做,您可以 git merge
或 git rebase
您的主人,使用他们的(您的记忆)合并或变基。
您可能会遇到合并冲突!这些都是正常的:它们只是意味着 你 改变了一些文件,他们(不管他们是谁)改变了 相同 文件,并且你们都触摸了该文件的相同 行 ,但是你和他们对 做了不同的事情线。 Git 不知道是你比他们聪明,还是他们比你聪明,还是怎样。它只是将 both 更改放入您的文件并让您清理混乱。您现在必须编辑冲突文件,将 right 行放入其中,并将它们保存回工作树;然后git add
和git commit
所有合并的最终结果。
(如果你使用 git rebase
而不是 git merge
,你仍然会遇到合并冲突,但是一旦你解决了它们并 git add
-ed 文件,你应该 运行 git rebase --continue
而不是 git commit
。请参阅有关合并和变基的许多其他 SO 问题和答案。)
我建议避免使用 git pull
,因为它做的太多了:它首先为您 运行s git fetch
,然后为您 运行s git merge
。 (或者它 运行 对你 git rebase
而不是 git merge
,如果你这么说的话。)现在,在 git fetch
之后,你经常想要 运行 这两个命令之一...但您不一定要 运行 它 马上 。而且,您有 两个 命令可以尝试:您怎么知道您想要哪一个? 和 如果事情出错了——他们确实出错了——你怎么知道要寻找哪个命令的帮助?如果 you 运行 merge or rebase yourself,你就有了所有这些的答案。这就是为什么我说:忘掉 git pull
,坚持使用 git fetch
和你喜欢的任何其他第二个命令。