繁体   English   中英

被拒绝的主人 - >主人(非快进)

[英]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

那么你必须重新确定人从AB ( 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 pushdev分支上也运行良好。

我的遥控器与本地不同步,所以这对我有用

git pull --rebase

并确保当你再次执行git pull时,它应该说已经是最新的,现在你已经准备好推送到原点了

假设你已经有git remote add origin remote repository URL

`git push origin master`  

截图说明了一切在此处输入图片说明

或者你可以这样做

  1. git stash(临时存储未提交的工作)
  2. git pull(使您的本地和远程同步)
  3. git stash pop(取回未提交的更改)

我有同样的问题。 我使用 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之后),因此您可以暂时将该设置修改为falsedenyNonFastforwards = 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM