我是GitHub的新手。 今天,当我尝试将代码推送到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.

我尚未在存储库中推送任何内容,那么为什么需要提取内容?


#1楼

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

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

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

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


#2楼

消息告诉您,

合并远程更改(例如“ 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要求您自己处理合并,因为合并可能会导致冲突。


#3楼

将最新更改推送到用于gitweb的裸Git存储库时,遇到了类似的错误。 就我而言,我没有在裸存储库中进行任何更改,因此我只是删除了裸存储库并再次克隆:

git clone --bare <source repo path> <target bare repo path>

#4楼

某些人可能会收到此错误,因为Git不知道您要推送到哪个分支。

如果您的错误消息还包括

error: failed to push some refs to 'git@github.com:jkubicek/my_proj.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you did not intend to push that branch, you may want to
hint: specify branches to push or set the 'push.default' configuration
hint: variable to 'current' or 'upstream' to push only the current branch.

那么您可能需要按照Jim Kubicek的实用技巧“将Git配置为仅推送当前分支”将默认分支设置为current。

git config --global push.default current

#5楼

只是有同样的问题,但就我而言,我在遥控器上键入了错误的分支。 因此,这似乎是此问题的另一个来源。仔细检查您是否将推送到正确的分支。


#6楼

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

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

git push -f origin <branch>

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

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


#7楼

您的分支机构名称与远程分支机构名称相同吗?

如果否,则应签出一个与远程分支同名的新分支,然后尝试再次将其推送。

假设要推送的远程分支为[ 测试 ],而本地分支名为[ 测试 ]。

如果您不在测试分支中,请首先切换到该分支。

git checkout test

然后打开一个新分支并将其命名为testing

git checkout -b testing

现在,该推送它了:

git push [remote repo] testing

#8楼

我在教程“ 如何使用GitHub:面向初学者的教程”中提到了这一点。

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

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

#9楼

这通常发生在您git commit并尝试git push更改,然后git pulling在其他人已进行更改的分支xgit pulling之前。

正常流程如下

第1 git stashgit stash在该分支上git stash了本地未提交的更改。

步骤2git pull origin branch_name -v pull and merge到该分支上本地提交的更改( 给此合并一些消息,并修复冲突(如果有)。

步骤3git stash pop stash更改( 然后,您可以根据需要对弹出的文件进行提交,或者先推送已提交的更改(STEP4),然后再对文件进行新提交。

步骤4git push origin branch_name -v合并的更改。

master替换branch_name (对于master分支)。


#10楼

有时我们忘记了拉力,并在当地环境中做了很多工作。

如果有人要推而无拉,

git push --force

工作中。 与他人一起工作时不建议这样做,但是当您的工作是简单的事情或个人玩具项目时,这将是一个快速的解决方案。


#11楼

在我的情况下,我已经签出了“ mybranch”,并进行了git pull ,所以我不知道为什么推送不起作用。 最终,我意识到我推错了分支。 我正在键入git push origin master而不是git push origin mybranch

因此,如果您已经完成git pull并且仍然收到此消息,请确保您在推送正确的分支。


#12楼

我遇到了同样的问题,结果发现我所在的分支与我原先认为的不同(本地),并且正确的本地分支在远程提交中处于后面。

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


#13楼

另一个解决方案是,如果可以的话,通过进行另一次提交来提高遥控器的头部。 将这个高级头部拉入本地子树之后,您将能够再次从中推入。


#14楼

尝试推送当前的分支foobar时,出现上述错误消息:

git checkout foobar
git push origin foo

事实证明,我有两个本地分支跟踪同一远程分支:

foo -> origin/foo (some old branch)
foobar -> origin/foo (my current working branch)

它对我有用,它通过使用以下命令来推送当前分支:

git push origin foobar:foo

...并使用git branch -d进行清理


#15楼

如果您确定没有人对git存储库进行任何更改并且您正在使用最新版本,则git pull在您心中没有任何解决方案...

然后这可能是发生了什么,您使用了git commit --amend

它使您可以将分阶段的更改与以前的提交结合在一起,而不必将其提交为全新的快照。 它也可以用于简单地编辑前一个提交消息而无需更改其快照。

ATLASSIAN教程:重写历史记录

但是,不建议执行git commit --amend 如果您已经将提交推送到GitHub ,这是因为“修改不仅会更改最近的提交,还会完全替换它。对于Git,它看起来像一个全新的提交”,这意味着对GitHub上的其他开发人员来说,历史记录看起来像A-> B-> C,但是对您来说,它看起来像A-> B-> D,如果GitHub让您push ,其他所有人都必须手动修正他们的历史

这就是为什么您收到错误消息的原因! [rejected] master -> master (non-fast-forward) ! [rejected] master -> master (non-fast-forward) ,如果您知道没有人撤消您的最新更改,则可以执行git push --force ,这将更改您的公共仓库中的git历史记录 。 否则...您可以执行git pull ,但是我相信这会产生与您未经过git commit --amend相同的结果,它将创建一个新的提交(即:git pull之后的git历史:A-> B-> C-> D)

有关更多详细信息: 如何更改您的最新提交


#16楼

我遇到了类似的问题,结果是我的使分支保持最新状态的工作流程有错。 我正在执行以下操作:

在我当地的“主人”

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专家,但是我被可靠地告知,此工作流程可能会避免我遇到的特定问题。


#17楼

我已经在我的GIT存储库中解决了此问题。 在这种情况下,无需重新设置rebaseforce提交。 使用以下步骤解决此问题-

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/masterlocal_barnch>git push origin <local_branch_name>

希望会有所帮助。


#18楼

除了上述答案,以下内容对我有用:-

场景-

  1. 我成功将my_branch原点。
  2. 我做了几处更改。
  3. 当我尝试再次推送时(当然,在执行添加和提交之后),出现了上述错误。

解决方案-

 1. git checkout **my_branch**2. git add, commit your changes.3. git pull origin **my_branch** (not origin, master, or develop)4. git push origin **my_branch**


#19楼

造成此问题的另一个原因(显然不是很普遍)...

当我进行推送时,我的服务器落后了大约12个小时

我在服务器SYNC上配置了NTP我的时钟。

我执行了一个新的git push,导致了本文中讨论的错误。


#20楼

git push -f原始分支名称

仅在确定不需要远程分支代码的情况下,才使用上述命令,否则请先合并然后再推送代码


#21楼

如果您不想进入当前项目(并且可能面临合并冲突而您不希望解决)并且不想创建另一个分支(管理另一个分支将很繁琐),而您不想不想执行任何危险且永久的git force命令(即使在阅读了它们的内容后,我也常常对这样做的含义感到惊讶)。

解决方案 :您可以简单地将文件夹的内容拖到另一个文件夹中,将项目拖到现在为空的文件夹中,将提取的内容拖到垃圾箱中,然后将正确的项目拖回到文件夹中。 您应该能够正确推动并获得所需的结果。 从字面上看,我只需不到10秒即可完成此操作。

对于那些会在没有任何后果的情况下告诉我这是不适当的,或者告诉我使用导致我将来烦恼的命令的人们来说,我说:“这种方法实际上只花了我不到10秒的时间。” 如果遇到执行不到10秒且效果完全相同的git命令,我将采用该命令。 在此之前,我一直在使用这种方法。

这种方法的一个缺点是,当您在分支中实际合并而未记录合并时,提交历史记录将显示为线性。 当使用组时,这可能不是最佳方法。 在这种情况下,请在分支机构上工作!


#22楼

如果有可能git pull打印Already up-to-date那么您可能想检查全局git push.default参数(在~/.gitconfig )。 如果matching则将其设置为simple 。 以下答案说明了原因:

Git-push.default“匹配”和“简单”之间有什么区别

另外,值得使用git remote show origin检查本地分支是否过时,并在需要时进行拉取


#23楼

git pull origin branch_name --rebase

这为我工作-命令git pull origin branch_name --rebase将在第一拉远程branch_name更改,然后rebase在它的顶部当前分支。


#24楼

使用git pull https://github.com/username/repository这是因为Github和远程存储库不同步。 如果你pull回购,然后Push一切都将同步和错误会自行消失。

`


#25楼

git pull打印已经up-to-date

解:

您可能在remote(server)中创建了一个存储库/项目并在其中添加了一些文件,然后再次在本地创建了一个文件夹并初始化了git git init这是错误的做法,您不应该在local中创建git init ,而是克隆使用git clone项目到本地

然后拉


#26楼

我遇到了同样的问题,我所做的是首先使用此功能将其强行推入

git push --force

我在提交文件后执行此操作,并在您得到错误的提示,它确实提交了所有文件并推送了它们。 然后下一次我推到github时,我做了它要求我做的事,然后就可以了。 希望这也对您有用:)


#27楼

push命令的问题是您的本地和远程存储库不匹配。 如果从git hub创建新存储库时默认情况下初始化了自述文件,那么将自动创建master分支。 但是,当您尝试推送时,没有任何分支。 您不能推送...因此,最佳实践是在没有默认自述文件初始化的情况下创建存储库。


#28楼

另一个选择:在本地将分支重命名为新的名称。

然后,您将能够将其推送到远程存储库,例如,如果这是保持副本(备份)并确保没有丢失的方式。

您可以获取远程分支以获取本地副本,并检查(i)远程拥有的(具有旧的分支名称)和(ii)您拥有的(具有新的分支名称)之间的区别,并决定要做什么。 由于您一开始并不了解遥控器的差异(因此出现了问题),因此仅合并或强制某个地方的更改就太残酷了。

查看差异,选择您要使用的分支,从另一个分支中挑选您想要的更改,或者在您拥有的分支上还原您不想要的更改,等等。

然后,您应该可以决定是否要将纯净版本强加到遥控器上,还是要添加新更改,还是执行其他操作。


#29楼

第一个简单的解决方案(不推荐)

  • 试试这个命令git push -f origin master
  • 此命令将强制覆盖远程存储库(GitHub)

推荐的解决方案

  • 运行以下命令:
git pull --allow-unrelated-histories  //this might give you error but nothing to worry, next cmd will fix it
git add *
git commit -m "commit message"
git push

如果这不起作用,请遵循

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

  1. 本地代码推送到github仓库

    本地代码推送到github仓库步骤: 1.git 初始化 cd 到需要提交的项目目录下,执行git init 2.添加文件到缓存区 git add filename // 添加文件到缓存区,可单一文件 ...

  2. 将本地源代码程序推送远程Github仓库

    将本地源代码程序推送远程Github仓库 1.查看改动文件的状态 2.将修改的代码从工作区添加至暂存区 3.将暂存区的代码添加至本地仓库 4.将本地仓库中的代码Push到Github 5.登录Gith ...

  3. Linux git环境搭建和常用指令--推送至Github为例

    安装Git sudo apt-get install git 提交代码信息配置 $ git config --global user.name "runoob" $ git con ...

  4. Git使用及创建本地文件推送到github仓库

    Git使用 一.安装Git 一般我们工作的电脑都是Windows系统,要使用git首先要进行安装.从软件管家或者其他平台找到git的安装包,下载后默认安装即可. 安装成功之后,可以在开始菜单里面找到g ...

  5. 把本地库推送到github远程库

    [1] github上创建远程库 注意 ,远程库的名字要与本地库相同 [2]新建github远程库别名origin [3] 代码提交 git add ./*  : 把修改内容添加到暂存区 : git ...

  6. 如何将本地代码推送至github

    一.首先是git的下载,一个是32位,一个是64位,官网有安装包 二.Github注册和创建仓库(PS:认识repository是仓库的意思就可啦) 完成上述后,点击创建即可 三.接下来就是本地代码提 ...

  7. 在win10下本地代码推送到GitHub

    创建GitHub远程库 本地库初始化 创建远程库地址别名 git remote add origin [SSH地址] 添加代码至暂存区 git add . 查看暂存区状态 git status 提交到 ...

  8. 美洽消息推送 php,GitHub - Meiqia/MeiqiaSDK-Push-Signature-Example: 美洽 SDK 3.0 推送的数据结构签名算法,多语言示例。...

    MeiqiaSDK-Push-Signature-Example 美洽 SDK 3.0 推送的数据结构签名算法,多语言示例. 该项目是 美洽 SDK 3.0 推送的数据结构签名的算法,具体推送的数据结 ...

  9. windows git安装到把项目推送到github

    为什么80%的码农都做不了架构师?>>>    1. 下载mygit一路下一步默认安装 2.下载TortoiseGit 3. 设置git     $ git config --glo ...

  10. Spring Boot进阶之Web进阶 代码推送的github上面去

    还是搜狗的输入法比较好 Exception.class  上面开不见的部分是这里的 代码上次github上面去保存起来 https://github.com/yangjiabinylg/girl2 h ...

最新文章

  1. 此文一出,从此无需再熬夜等待
  2. jQuery .attr(checked)得undefined 问题解决
  3. CentOS7 系统基于Vim8搭建Go语言开发环境
  4. file_get_contents遍历api数据
  5. 初二下册计算机考试试题,2017下半年计算机等级考试二级Java模拟试题及答案(18)...
  6. 【高速接口-RapidIO】Xilinx SRIO IP 核详解
  7. Visual Studio 2008 SP1 和 net framework 3.5 新特性
  8. 并发服务器模型——单进程服务器
  9. JavaScript 电话手机号码正则表达式
  10. 测试每个阶段需要输出的文档
  11. 给程序员的建议(转自李开复)
  12. ajax submittype,AjaxSubmit()提交file文件
  13. 书单:《人人都是产品经理》附录书单
  14. 在6.1的PPC上做的cab包里面的html文件,安装后在手机上显示乱码
  15. 如何入门Python之Python基础教程详解
  16. 计算机整个文稿应用回顾主题,计算机应用基础(MS Office高级应用)
  17. 老厉害了!2600亿,紫光集团南京再投半导体生产线
  18. 分享几款UI设计师快速提升工作效率的辅助设计软件
  19. 关于图像模式识别的几种分类方法概述
  20. SQL中行转列、列转行

热门文章

  1. 绿色版Tomcat 启动 + 停止 + 随系统自动启动 - - 博客频道 - CSDN.NET
  2. EA 反向工程 导入oracle中表结构
  3. 在raspberry pi上使用自己的内核
  4. Web Service视频分享
  5. 查看mysql中sql语句执行时间
  6. Linux 内核协议栈 学习资料
  7. 高性能javascript读书笔记(三.DOM 编程2)
  8. HDU 4679 Terrorist’s destroy
  9. NYOJ469(动态规划)
  10. Linux下安装VSCA