【问题标题】:git error: failed to push some refs to remotegit错误:无法将一些参考推送到远程
【发布时间】:2014-07-29 15:54:15
【问题描述】:

由于某种原因,我现在不能推动,而我昨天可以做到。 也许我搞砸了配置或其他东西。

会发生这样的事情:

当我使用 git push origin master 时

我的工作目录和远程存储库是什么样的:

【问题讨论】:

标签: git github


【解决方案1】:

在 git push -u origin main 上出现错误?试试这个解决方案,它会工作 500%。

第一步:Open your github on any browsers

第二步:Now login your account

登录成功后

第三步:Goto Your Profile Section > https://github.com/settings/profile

第四步:Open Developer Settings > https://github.com/settings/apps

第 5 步:Click Personal access tokens Like This > https://github.com/settings/tokens

然后点击“生成新令牌” 生成新令牌

现在打开 git bash / cmd 工具 并一一尝试这些命令;

1-git init

2-git add -A

3-git commit -m 'Add your commit message'

4-git remote add origin https://your_repo_link_here/sample.git

5-git push -u origin main

现在在提示(输入)处粘贴您的令牌

你完成了:)

【讨论】:

    【解决方案2】:

    这几个代码的组合对我有用:

    $ git reset 
    $ git remote -v
    $ git pull --rebase
    $ git init
    $ git add -A
    $ git commit -m "Add your commit"
    $ git branch -M main
    $ git push origin main --force
    

    他们必须小心,如果他们有自述文件,git reset 会删除它们。

    【讨论】:

      【解决方案3】:

      检查您的互联网是否运行良好并且速度是否良好。

      我尝试使用我的 4G 移动热点进行推送,并出现此错误近 10 分钟。

      附:在印度,我们获得 4G 网络的 3G 速度,所以在做一些花哨的事情之前;看看是否有合理的速度可用:)

      【讨论】:

        【解决方案4】:

        由于最近的“用 GitHub 中的 main 替换 master”操作,如果您执行 git show-ref,您可能会注意到有一个 refs/heads/main。因此,以下命令可能会从

        git push heroku master

        git push heroku main

        这将解决您的问题

        【讨论】:

          【解决方案5】:

          我在 GitHub 帮助 (Dealing with non-fast-forward errors) 中找到了这个问题的解决方案:

          您可以通过获取并合并在远程分支上所做的更改与您在本地所做的更改来解决此问题:

          $ git fetch origin
          # Fetches updates made to an online repository
          $ git merge origin branch
          # Merges updates made online with your local work
          

          或者,您可以简单地使用 git pull 一次执行两个命令:

          $ git pull origin branch
          # Grabs online updates and merges them with your local work
          

          【讨论】:

          • 这是正常的过程,只要事情按预期工作。当 git 认为它已经像@rubyandcoffee 询问的那样是最新的时,它没有任何帮助。
          【解决方案6】:

          我尝试了“git push origin main”然后收到消息,然后我单独尝试了“git push”,但没有工作。我检查了我是否承诺确定(是)。我尝试了“拉”然后再次“推”,不。在开始一些特技之前,我刚刚关闭并打开了一个新终端,然后再次“推送”,它起作用了:p

          【讨论】:

            【解决方案7】:

            (注意:starting Oct. 2020,任何新存储库都是使用默认分支 main 创建的,而不是 master。您可以使用 rename existing repository default branch from master to main
            2014 年答案的其余部分已更新为使用“main”)

            (以下假设github.com 本身没有关闭,正如eri0othe comments 中指出的那样:请参阅www.githubstatus.com 以确保)

            如果 GitHub 存储库看到新的提交被推送到它,而您在本地工作时,我建议您使用:

            git pull --rebase
            git push
            

            完整的语法是:

            git pull --rebase origin main
            git push origin main
            

            With Git 2.6+(2015 年 9 月),完成后(一次)

            git config --global pull.rebase true
            git config --global rebase.autoStash true
            

            一个简单的git pull 就足够了。
            (注意:Git 2.27 Q2 2020merge.autostash 也可用于您的常规拉取,无需变基)

            这样,您将在新更新的origin/main(或origin/yourBranchgit pull origin yourBranch)之上重播(--rebase 部分)本地提交。

            Git Pocket Bookchapter 6 Pull with rebase 中查看更完整的示例。

            我会推荐一个:

            # add and commit first
            git push -u origin main
            

            这将在您的本地主分支与其上游分支之间建立跟踪关系。
            之后,该分支的任何未来推送都可以通过简单的方式完成:

            git push
            

            见“Why do I need to explicitly push a new branch?”。


            由于 OP 已经在 reset and redone its commit 之上 origin/main:

            git reset --mixed origin/main
            git add .
            git commit -m "This is a new commit for what I originally planned to be amended"
            git push origin main
            

            不需要pull --rebase

            注意:git reset --mixed origin/main 也可以写成git reset origin/main,因为--mixed 选项是使用git reset 时的默认选项。

            【讨论】:

            • 是否可以执行您建议的 git pull --rebase...?因为我已经完成了 > git reset --mixed origin/master > git add 。 > git commit -m "这是我最初计划修改的新提交" > git push origin master 建议在这里stackoverflow.com/questions/18588974/… btw 你的回答看起来很有帮助,先生
            • 对我来说,我只需要运行“git commit”。 :(
            • 真的超级棒……下面的命令对我有用…… git reset --mixed origin/master git add 。 git commit -m "这是我最初计划修改的新提交" git push origin master 谢谢@VonC​​pan>
            • 感谢它的工作!我一直在寻找这个解决方案的时间!
            • 你的最后一组命令对我很有帮助。谢谢?
            【解决方案8】:

            如果您创建了一个空的 repo 并忘记使用,您也会收到此错误

            git init
            

            在推送你的第一个提交之前先。

            【讨论】:

              【解决方案9】:

              这些步骤对我有用:

              1. 切换到当前分支并拉取最新代码

              2. 重命名本地分支

                git branch -m [new-name]

              3. 将本地分支推送到服务器

                git push origin [new-name]

              4. 从服务器中删除分支

                git push origin --delete [old-name]

              【讨论】:

                【解决方案10】:

                就我而言,我错过了修改,我只需要运行git commit --amend 然后推送。它解决了这个问题。它可能对以前提交过代码的人有所帮助。

                【讨论】:

                  【解决方案11】:

                  解决方案:

                  下载git bash 并在其上运行命令。终于成功了!

                  【讨论】:

                    【解决方案12】:

                    在我们的例子中,重试推送解决了问题。可能是网络缓慢导致了此问题。

                    【讨论】:

                      【解决方案13】:

                      git push -f origin master.

                      这是写的

                      【讨论】:

                        【解决方案14】:

                        Github 将默认分支名称从 master 更改为 main。 因此,如果您最近创建了 repo,请尝试推送 main 分支

                        git push origin main
                        

                        这是一个常见的错误,初学者可以犯。

                        Github Article

                        【讨论】:

                          【解决方案15】:

                          在我的情况下,git pre-push 挂钩存在问题。

                          运行git push --verbose查看是否有错误。

                          仔细检查.git/hooks 目录中的 git-hooks 或暂时将它们移动到另一个地方,然后查看是否一切正常。

                          【讨论】:

                            【解决方案16】:

                            我遇到了这个问题,但 2 天后我得到了解决方案。 如果您是第一次在 GitHub 页面上部署站点,只需运行这两个命令即可。

                            git commit -m "initial commit"
                            git push origin +HEAD
                            

                            【讨论】:

                              【解决方案17】:

                              就我而言,我拼错了分支的名称。在本地我做了类似的事情:

                              git push --set-upstream origin feture/my-feature

                              我的分支名称在feature 中缺少a。我将其更正为:

                              git push --set-upstream origin feature/my-feature

                              一切正常。

                              【讨论】:

                                【解决方案18】:

                                使用 Azure DevOps 中的 Git 存储库,问题在于分支策略要求对分支的所有更改都必须通过拉取请求进行。尝试将更改直接推送到分支会生成错误“无法将某些引用推送到...”。我创建了一个 PR 分支并毫无问题地推送。

                                【讨论】:

                                  【解决方案19】:

                                  这可能不是一个常见的问题,但它发生在我身上,所以我会在这里添加它作为评论,以防其他人犯了我的错误。

                                  我创建了一个自定义的预推送文件,但忘记以exit 0 结束它

                                  这导致我收到“无法推送一些参考”错误。我在 pre-push hook 的末尾添加了exit 0,当然,它现在可以正常工作了。

                                  【讨论】:

                                    【解决方案20】:

                                    因为也许没有什么可推动的(真的,没有什么可推动的)。这样做

                                    git remote add origin https://github.com/donhuvy/accounting133.git
                                    git remote -v
                                    git add .
                                    git commit -m"upload"
                                    git push --set-upstream origin master
                                    

                                    根据您的情况更改远程存储库 url。命令git remote -v你可以跳过,只是为了检查。

                                    【讨论】:

                                      【解决方案21】:

                                      当远程服务器有一些在您的工作目录中不可用的额外提交时,就会出现此问题。以下是解决此问题的解决方案。

                                      1. 从远程服务器获取最新代码到本地然后推送

                                        >git pull
                                        >git push
                                        
                                      2. 直接强制推送到远程服务器。

                                        >git push --force
                                        

                                        如果 #1 不起作用,则使用 #2 选项

                                        使用以下命令获取与推送相关的所有选项

                                        > git push --help
                                        

                                      【讨论】:

                                        【解决方案22】:

                                        GitHub 将 master 改为 main 的事实让我遇到了这个问题。所以从现在开始,push to origin的解决方案是:

                                        git push -u origin main
                                        

                                        【讨论】:

                                        • 你的意思是GitHub上的远程repo只有一个分支main,没有master?我在 GitHub 上创建了一个全新的 repo,它的主要分支仍然是...... master(现在)
                                        【解决方案23】:

                                        我在 GitHub 中创建了一个空仓库,并将我的代码保存在本地。我现在遇到了同样的问题,因为我遵循以下顺序,

                                        git init
                                        git commit -m 'Initial Commit'
                                        git remote add origin https://github.com/kavinraju/Repo-Name.git
                                        git add .
                                        git push -u origin master
                                        

                                        问题是:我尝试在暂存我拥有的文件之前提交。

                                        所以我们需要暂存文件然后提交。

                                        这是正确的顺序。

                                        git init
                                        git add .
                                        git commit -m 'Initial Commit'
                                        git remote add origin https://github.com/kavinraju/Repo-Name.git
                                        git push -u origin master
                                        

                                        由于我先执行了错误的顺序,所以我只执行下面的命令

                                        git add .
                                        git commit -m 'Initial Commit'
                                        git push -u origin master
                                        

                                        【讨论】:

                                          【解决方案24】:

                                          我按照以下步骤操作,它对我有用。

                                           rm -rf .git
                                           git init
                                           git add .
                                           git commit -m"first message"
                                           git remote add origin "LINK"
                                           git push -u origin master
                                          

                                          【讨论】:

                                          • 这是唯一对我有用的解决方案。
                                          • 这是初学者的最终解决方案
                                          【解决方案25】:

                                          试试这个 git 命令,

                                          git push origin master –f
                                          git push origin master --force
                                          

                                          【讨论】:

                                          • 错误:无法生成 sh:没有这样的文件或目录致命:无法分叉
                                          【解决方案26】:

                                          最好使用rm -rf .git/hooks,然后尝试 git push

                                          【讨论】:

                                          • 有趣,它在一个案例中帮助了我,显然没有提交源(不需要变基)。
                                          • 你为什么要扔掉所有的钩子?可以先备份一下吗?
                                          【解决方案27】:

                                          在我的例子中,分支名称前缀已经存在于远程,所以基本上如果你有一个分支名称'fix',你不能推送另一个名称为'fix/new_branch_name'的分支,重命名分支解决了我的问题。

                                          【讨论】:

                                            【解决方案28】:

                                            git 错误:当本地存储库名称与相应的远程存储库名称匹配时,也无法将某些引用推送到。在将更改拉到远程存储库之前,请确保您正在处理正确的存储库对。如果您拼写错误并且想要删除本地存储库,请使用以下步骤

                                            从 windows 中删除本地 repo

                                            1. del /F /S /Q /A .git
                                            2. rmdir .git
                                            3. 更正本地文件夹名称 (XXXX02->XXXX20) 或者如果它是新创建的存储库,请将其删除并重新创建存储库(XXXX02 存储库名称更改为 XXXX20)。
                                            4. git init
                                            5. 如果未映射,则使用远程仓库重新映射。
                                            6. git remote add origin https://github.com/<username>/XXXX20.git
                                            7. git push -u origin master

                                            【讨论】:

                                              【解决方案29】:

                                              我也遇到过同样的问题,通过以下步骤解决。

                                              1. git init
                                              2. git add .
                                              3. git commit -m 'Add your commit message'
                                              4. git remote add origin https://User_name@bitbucket.org/User_name/sample.git

                                                (上面的urlhttps://User_name@bitbucket.org/User_name/sample.git指的是你的比特桶项目url)

                                              5. git push -u origin master

                                              提示

                                              使用以下方法检查您的 git hub 帐户是否与本地 git 链接:

                                              git config --global user.email "you@example.com"
                                              git config --global user.name "Your Name"
                                              

                                              【讨论】:

                                                【解决方案30】:
                                                1. git init

                                                2. git remote add origin https://gitlab.com/crew-chief-systems/bot

                                                3. git remote -v(用于检查当前存储库)

                                                4. git add -A(添加所有文件)

                                                5. git commit -m 'Added my project'

                                                6. git pull --rebase origin master

                                                7. git push origin master

                                                【讨论】:

                                                • 在推送您需要从存储库中提取的代码之前
                                                • 你可以简单的写成 git pull --rebase origin master
                                                • 这对我有用,有一个参考问题,这已解决。
                                                • 错误:无法生成 sh:没有这样的文件或目录致命:无法分叉
                                                猜你喜欢
                                                • 2020-03-04
                                                • 2021-07-07
                                                • 2022-01-25
                                                • 1970-01-01
                                                • 2021-08-07
                                                • 2012-08-16
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 1970-01-01
                                                相关资源
                                                最近更新 更多