【问题标题】:Git non-fast-forward updates were rejected Merge the remote changesGit 非快进更新被拒绝合并远程更改
【发布时间】:2012-08-27 12:59:23
【问题描述】:

我该如何解决这个问题?我正在尝试提交,但出现以下错误。

git push origin monty_svm_dev

To git@github.com:  ! [rejected]        monty_svm_dev -> monty_svm_dev
(non-fast-forward) error: failed to push some refs to
'git@github.com:/mygit.git' To prevent you from losing history,
non-fast-forward updates were rejected Merge the remote changes before
pushing again.  See the 'Note about fast-forwards' section of 'git
push --help' for details. root@li409-202:~/mypath#

【问题讨论】:

    标签: git github


    【解决方案1】:

    先做git pull origin monty_svm_dev

    发生的事情是远程的更改比您的分支更新。

    因此,在push 更改之前,您需要先在遥控器上获取并合并更改。

    您可以通过 git checkout your_branch 执行此操作,然后:

    git fetch origin your_branch 然后是一个
    git merge your_branch

    git pull origin your_branch # fetch and merge in one operation
    

    您的分支是 master,或者您的分支名称(我认为在您的情况下似乎是 monty_svm_dev

    完成此操作(并解决任何冲突)后,您可以发送git push origin monty_svm_dev

    【讨论】:

    • 或者 OP 可能已经重新设置了他们的分支。
    • 我听说 pull 很糟糕,因为它会以您通常不想要的方式合并。就个人而言,我喜欢保持我的历史线性。当我遇到与提问者相同的错误时,我该如何做到这一点?
    • 我试过 #git pull origin devops_branch_22112016 得到错误:您对以下文件的本地更改将被合并覆盖:www/index.html 请在合并之前提交您的更改或存储它们。中止
    • 也试过 jenkins@ip-172-31-22-20:~/workspace/directory-react-nodejs$ git fetch origin devops_branch_22112016 From github.com:HSarode-Compumatrice/directory-react-nodejs * 分支 devops_branch_22112016 -> FETCH_HEAD jenkins@ip-172-31-22-20:~/workspace/directory-react-nodejs$ git merge devops_branch_22112016 已经是最新的。 jenkins@ip-172-31-22-20:~/workspace/directory-react-nodejs$
    • 仍然由用户 Ashish Karpe 开始 在工作区中构建 /var/lib/jenkins/workspace/directory-react-nodejs > git rev-parse --is-inside-work-tree # timeout=10从远程 Git 存储库获取更改 > git config remote.origin.url git@github.com:HSarode-Compumatrice/directory-react-nodejs.git # timeout=10 从 git@github.com:HSarode-Compumatrice/ 获取上游更改directory-react-nodejs.git > git --version # timeout=10 使用 GIT_ASKPASS 设置凭据
    【解决方案2】:

    这基本上是因为当你

    git 拉

    从一个分支,两个操作发生获取和合并。现在,如果您的本地有一些更改,那么 git 将不允许您在提交更改之前推送它。

    如果远程有更改仍未拉入本地并合并,也会出现此问题,因此您需要再次拉取然后推送它。如果没有解决问题请回复

    【讨论】:

      【解决方案3】:

      做一个 Git 拉动。然后它将远程分支中最近的代码更改带入您的本地。然后你就可以推送你的更改了。

      【讨论】:

      【解决方案4】:

      当用户忘记在git commit 命令之后发出git push 命令时会出现此问题。使用 git 时,请务必确保基本步骤。

      在使用 git 的理想循环中,请始终检查以下 git 命令是否按以下顺序依次使用:

      git pull
      git add
      git commit
      git push
      

      我个人避免发布关于堆栈上 git 的大多数问题,因为我总是将我的 git 命令活动按上述顺序计算。

      我创建了一个首字母缩略词以确保我不会忘记,我希望它对读者有用:

      pacp(读作:pack push where (p=git​​ push, a=git add, ck=git commit, push=git push)。

      我记忆 git push、add、commit、pull 的方法是:

      get pack push(意思是:git pack 然后推送)。

      总之记得“git”包然后“push”。

      解决问题: 我想添加我最常用的恢复 git 命令:

      git checkout -- path/to/file/fileName.something #undo changes in file
      

      上面撤消了文件中的更改...类似的可以应用于多个文件使用*作为文件名,类似地可以应用于多个 目录以空格分隔。

      git reset filename.txt 
      

      以上从阶段中删除文件...在此命令之后我们可以 安全地执行 git commit 并且 git 只会提交我们所在的那些文件 阶段,这意味着文件“filname.txt”不会被提交)

      git pull origin your_intended_branch
      

      更改与 your_intended_branch 中的最新合并,这基本上合并了您提交但未推送的更改。一旦一切顺利,只需执行推送:

      git push 
      

      【讨论】:

        猜你喜欢
        • 2011-10-17
        • 2013-10-17
        • 2011-06-08
        • 2015-05-13
        • 1970-01-01
        • 2013-12-26
        • 2011-05-17
        • 2013-02-16
        • 2019-06-23
        相关资源
        最近更新 更多