就在我以为我已经掌握窍门的时候git checkout -b newbranch - 提交/提交/提交 - git checkout master - git merge newbranch - git rebase -i master - git Pushgit 中的工作流程,有些东西爆炸了,我看不出任何原因。
这是过去对我有用的一般工作流程:
# make sure I'm up to date on master:
$ git checkout master
$ git pull # k, no conflicts
# start my new feature
$ git checkout -b FEATURE9 # master @ 2f93e34
Switched to a new branch 'FEATURE9'
...工作,承诺,工作,承诺,工作,承诺...
$ git commit -a
$ git checkout master
$ git merge FEATURE9
$ git rebase -i master # squash some of the FEATURE9 ugliness
到目前为止还好;现在我期望看到的——并且通常确实看到的——是这样的:
$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
但相反,我只看到“无需提交任何内容(工作目录干净)", no "您的分支比“origin/master”领先 1 次提交。”,并且 git pull 显示了这种奇怪的现象:
$ git pull
From . # unexpected
* branch master -> FETCH_HEAD # unexpected
Already up-to-date. # expected
gitbranch -a -v 显示了这一点:
$ git branch -a -v
FEATURE9 3eaf059 started feature 9
* master 3eaf059 started feature 9
remotes/origin/HEAD -> origin/master
remotes/origin/master 2f93e34 some boring previous commit # should=3eaf059
git 分支清楚地显示我当前在 * master 上,并且 git log 清楚地显示 master(本地)位于 3eaf059,而remotes/origin/HEAD ->remotes/origin/master 被卡在分叉处。
理想情况下,我想知道我如何进入这个的语义,但我会解决一种方法,让我的工作副本再次跟踪远程主机并使两者恢复同步而不丢失历史记录。谢谢!
(注意:我在新目录中重新克隆了存储库并手动重新应用了更改,一切正常,但我不希望这成为标准解决方法。)
Addendum:标题说“无法推送”,但没有错误信息。尽管我只是得到“已经是最新的”回复git 分支 -a -v显示本地 master 领先于 /remotes/origin/master。这是来自的输出git pull and git 远程-v, 分别:
$ git pull
From .
* branch master -> FETCH_HEAD
Already up-to-date.
$ git remote -v
origin [email protected]:proj.git (fetch)
origin [email protected]:proj.git (push)
附录2:看起来我的本地主机配置为push到遥控器,但不能从中拉出。做完之后for remote in 'git branch -r | grep -v master '; do git checkout --track $remote ; done
,这就是我所拥有的。看来我只需要得到主人pulling再次从遥控器/原点/主站,不是吗?
$ git remote show origin
* remote origin
Fetch URL: [email protected]:proj.git
Push URL: [email protected]:proj.git
HEAD branch: master
Remote branches:
experiment_f tracked
master tracked
Local branches configured for 'git pull':
experiment_f merges with remote experiment_f
Local refs configured for 'git push':
experiment_f pushes to experiment_f (up to date)
master pushes to master (local out of date)