代码之家  ›  专栏  ›  技术社区  ›  Jake

git pull说是最新的,但是git push拒绝非快速前进

  •  34
  • Jake  · 技术社区  · 14 年前

    我刚开了一家新的分店,做了一些当地的改变,承诺并试图推动。我得到了这个错误: ! [rejected] groups -> groups (non-fast forward) 所以我试着拉但被告知 Already up-to-date.

    这是我拉然后推的东西。

    ~/dev$ git pull origin groups
    Already up-to-date.
    ~/dev$ git push origin groups
    To /mnt/ebs/git/repo.git
     ! [rejected]        groups -> groups (non-fast forward)
    error: failed to push some refs to '/mnt/ebs/git/repo.git'
    

    有人能解释一下这是怎么发生的吗?我能怎么解决?

    3 回复  |  直到 12 年前
        1
  •  24
  •   Benoit Courtine    14 年前

    拉动分支时,是否使用“-track”选项(以便保持本地分支跟踪远程分支)。如果没有,它可以解释为“merge”命令不起作用。

    您可以手动进行合并:

    git fetch
    git merge origin/groups
    

    要比较本地和远程repo,我建议您使用此命令(将其添加到别名中,该命令很有用):

    git log --graph --oneline --all --decorate
    

    它将打印项目历史树,显示分支标签。所以你会看到你的分支和起源分支的分歧。

    注意:如果要保留线性历史记录,而不是“合并”,则可以在按以下命令之前对远程上的本地分支执行“重新定位”:

    git rebase origin/groups
    git push origin groups
    
        2
  •  5
  •   dfrankow    12 年前

    我是带着另一个问题来的。

    我的吉特是用来推所有的树枝的。我当时在一家分店,但它也试图推师父,这不是最新的。诀窍是注意到它试图推师父:

    To git@git.machine:repo
     ! [rejected]        master -> master (non-fast-forward)
    

    我在.gitconfig中添加了以下内容,以便在默认情况下仅推送当前分支:

    [push]
        default = current
    
        3
  •  2
  •   garnet    8 年前

    这不是对问题的回答。我对同一个错误信息有不同的问题。

    我的本地分支没有远程分支从正确配置的[git pull]中提取更改。这一点从 git remote show origin . 所以,我不得不用 git pull origin <branch_name> 而不是 git pull 去做改变。