2

谁能解释我的存储库的状态?我无法推送,因为我没有的服务器上有更改,但我无法变基,因为 git 告诉我没有新的更改。

$ git branch
* master

$ git push origin master
To git@github.com:asdf.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:asdf.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

$ git fetch origin master
From github.com:knowitall/nlptools
 * branch            master     -> FETCH_HEAD

$ git rebase origin master
Already on 'master'
Your branch is ahead of 'origin/master' by 3 commits.
Current branch master is up to date.

$ git pull origin master

它建议的合并是空的。

Merge branch 'master' of github.com:knowitall/nlptools

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
# 
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.

如果我创建一个分支,用 origin/master 重置,然后合并分支,我仍然无法推送。

$ git checkout -b backup
$ git checkout master
$ git fetch origin master
$ git reset origin/master --hard
$ git merge backup
$ git push origin master
 ! [rejected]        master -> master (non-fast-forward)

现在,如果 Iresetpull,我会看到一个新的提交。为什么一开始没有fetch origin master找到这个新的提交?如何确保我的存储库表示来源是最新的?看来我需要成功拉动才能使源保持最新。

4

2 回答 2

4

问题似乎在于使用不当git fetchgit fetch origin master读取master为 refspec 并且行为不像常规获取。更具体地说,它只是FETCH_HEAD指向遥控器master

fetch在没有 refspec 的情况下使用时,它+refs/heads/*:refs/remotes/origin/*用作更新所有 refs 的默认值origin/*

尝试git fetch origingit fetch代替。

这是一个关于它的好文档以获取更多详细信息:https ://git-scm.com/book/th/ch9-5.html

于 2013-02-04T18:24:23.223 回答
1

当你完成时checkout -b,你完成了新的分支。因此,您已经重置并合并到备份中。试试这种方式:

$ git branch backup
$ git fetch origin master
$ git reset origin/master --hard
$ git merge backup
$ git push origin master

如果您使用的是 Windows,请注意posh-git在命令行(使用 powershell)上获得状态的视觉反馈。

如果您使用的是 Mac 或 Linux,请dot-files查看 github 上的一些 repo 以获得类似的功能。

于 2013-02-04T18:23:07.397 回答