[英]rejected master -> master (non-fast-forward)
我正在尝试推送我的项目(新存储库中的所有文件)。 我按照这些步骤操作,但是当我使用git push -u origin master
推送时,出现此错误:
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asantoya/projectnewbies.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
我多次遇到此错误,不知道该怎么办。
注意:这绝不是 git 的推荐用法。 这将覆盖遥控器上的更改。 仅当您 100% 知道您的本地更改应该推送到远程主服务器时才这样做。
⚠️ 试试这个: git push -f origin master
正如错误消息所说: git pull
before you try to git push
。 显然,您的本地分支与您的跟踪分支不同步。
根据项目规则和您的工作流程,您可能还想使用git pull --rebase
。
这个命令对我很有效
git push -f origin master
git push -f origin master
使用蛮力 ;-) 很可能您正在尝试添加在 git 上创建 repo 之前创建的本地文件夹。
我刚刚收到此错误。
我在创建本地 git 存储库后创建了一个 github 存储库,因此我需要在推送到 github 之前接受对本地的更改。 在这种情况下,唯一的变化是创建 github 存储库时作为可选步骤创建的自述文件。
git pull https://github.com/*username*/*repository*.git master
存储库 URL 来自项目 github 页面上的这里:
然后我重新初始化(这可能不需要)
git init
git add .
git commit -m "update"
然后推:
git push
如果git pull
没有帮助,那么您可能已经推送了更改(A),然后使用git commit --amend
添加了更多更改(B)。 因此,git 认为您可能会丢失历史记录 - 尽管它包含来自 A 的所有更改,但它将 B 解释为不同的提交。
B
/
---X---A
如果在A
之后没有人更改 repo,那么您可以执行git push --force
。
但是,如果其他人在A
之后发生了变化:
B
/
---X---A---C
那么你必须重新确定人从A
到B
( C
-> D
) 的变化。
B---D
/
---X---A---C
或手动修复问题。 我还没想好怎么做。
我在 github 中创建了新的 repo 并且我遇到了同样的问题,但是在拉动时它也有问题,所以这对我有用。
但是在已经有很多代码的回购中不建议这样做,因为这可能会弄乱一切
git push origin master --force
警告:
寻求“ git pull
”并不总是解决方案,所以要小心。 如果您有意更改了存储库历史记录,您可能会遇到这个问题(Q 中提到的那个)。 在这种情况下,git 会将您的历史更改与远程存储库中的新更改混淆。 因此,您应该使用git push --force
,因为调用git pull
会有意撤消您对历史记录所做的所有更改。
使用这个命令:
git pull --allow-unrelated-histories <nick name of repository> <branch name>
喜欢:
git pull --allow-unrelated-histories origin master
当项目没有任何共同的祖先时会发生此错误。
这是因为您在 master 中做了一些更改,因此项目要求您先拉取。 如果您无论如何都想推动它,您可以通过键入以下内容使用蛮力:
git push -f origin master
请记住首先提交您的更改:
git add .
git commit -m "Your commit message"
试试这个命令:“git pull origin master”
它对我有用。
检查此链接: https : //help.github.com/articles/dealing-with-non-fast-forward-errors
你需要做
git branch
如果输出是这样的:
* (no branch)
master
然后做
git checkout master
确保您没有任何挂起的提交,因为签出将丢失所有未提交的更改。
! [拒绝] master -> master(非快进)
不要惊慌,这是非常容易修复的。 您所要做的就是发出拉动,您的分支将快进:
$ git pull myrepo master
然后重试你的推送,一切都应该没问题:
$ git push github master
当我在开发分支并且我的主分支没有最新更新时,这发生在我身上。
所以当我尝试从开发分支 git push 时,我遇到了那个错误。
我通过切换到 master 分支,git pull 来修复它,然后返回到开发分支和 git push。
$ git fetch && git checkout master
$ git pull
$ git fetch && git checkout develop
$ git push
我在开发机器上遇到了这个问题。 dev
分支推得很好,但master
分支给了我(当在dev
分支上时git push
):
! [rejected] master -> master (non-fast-forward)
所以我试过:
git checkout master
git pull
这给了我:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.master.merge' in
your configuration file does not tell me, either.
我发现.git/config
缺少 master 分支并添加了:
[branch "master"]
remote = origin
merge = refs/heads/master
之后git push
在dev
分支上也运行良好。
我有同样的问题。 我使用 Git Totoise。 只需右键单击 -> TotoiseGit -> 清理。 现在你可以推送到 Github 它对我很好:D
这是因为您对其 master 进行了相互冲突的更改。 而你的存储库服务器无法用这些话告诉你,所以它会给出这个错误,因为他为你处理这些冲突不是他的事情,所以他要求你自己做。 作为 ?
1- git pull
这会将您的代码从您的存储库合并到您的站点主代码。 所以显示冲突。
2- 处理这些手册冲突。
3-
git push origin master
而且很快,您的问题已经解决。
这也可能是由于在为 Repo 命名时导致的一些名称错误造成的。 如果上述任何答案都不起作用。这对我有用:
删除该存储库并创建一个新存储库,然后再次尝试以下命令:
cd 'Local Directory Path'
git remote add origin *your_git_name.git*
git push -u origin master
如果添加原点显示已经存在,请改用它:
git remote set-url origin *your_git_name.git*
我唯一能够解决这个问题的是删除本地和 git repo 并在两端再次创建相同的。 目前工作正常。
如果有人在尝试推送到 heroku 时遇到此错误,则只需将 'origin' 替换为 'heroku',如下所示: git push -f heroku master
试试这个,在我的情况下它有效
git rebase --abort
我也遇到了同样的错误,但我通过获取它的 URL 轻松解决了它
git fetch origin Your repository origin
然后简单地应用命令
git push -f origin master
你会得到一个好的结果
这意味着您的远程 git 存储库配置为denyNonFastforwards = true
。 尽管很危险,但有时您可能确实需要覆盖 git 历史记录(例如,在运行bfg --strip-blobs-bigger-than 100M
之后),因此您可以暂时将该设置修改为false
( denyNonFastforwards = true
,请在your-repository.git/config
)然后强制推送(即git push -f
)。
有时,Git 无法在不丢失提交的情况下对远程存储库进行更改。简而言之,这可能是因为您的提交丢失或者其他人试图推送到与您相同的分支。 所以要解决这个问题,首先提出一个拉取请求
$ git pull origin YOUR_BRANCH_NAME
或者
$ git pull --rebase origin master
我首先解决了这个问题:
- 脚步 -
git 添加 *
git 获取
git pull origin main --allow-unrelated-histories 或 git pull --rebase <your_reponame> <your_branch>
git push -u "" main 或 git pull origin [branch]
为我工作
git push --force origin master
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.