为什么我无法将更改推送到最新的Git子树?

11

我有一个名为"gempak-tables"的git子树模块,位于子目录"gempak/tables"中:

$ git config -l | grep -i gempak
remote.gempak-tables.url=git@github.com:Unidata/GEMPAK-Tables.git
remote.gempak-tables.fetch=+refs/heads/*:refs/remotes/gempak-tables/*
$

然而,我无法将更改推送到子树模块 GitHub 上:

$ git subtree push --prefix=gempak/tables gempak-tables master
git push using:  gempak-tables master
X11 forwarding request failed on channel 0
To git@github.com:Unidata/GEMPAK-Tables.git
 ! [rejected]        89d8f94d010e6677f146608674cf7408eecb4a61 -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:Unidata/GEMPAK-Tables.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 subtree pull --prefix=gempak/tables gempak-tables master
X11 forwarding request failed on channel 0
From github.com:Unidata/GEMPAK-Tables
 * branch            master     -> FETCH_HEAD
Already up-to-date.
$ 

我的 git(1) 版本:

$ git --version
git version 1.8.3.1

我是一位子树新手,请帮忙。


更新命令不应该是 git subtree pull --prefix=gempak/tables gempak-tables master 吗? - phd
2
@phd,我将您的命令输出添加到我的查询中。问题依旧。 - Steve Emmerson
2个回答

0

答案很可能已经在Git subtree - subtree up-to-date but can't push中给出了。

我在这篇博客评论https://coderwall.com/p/ssxp5q中找到了答案。

如果你在推送时遇到Updates were rejected because the tip of your current branch is behind. Merge the remote changes (e.g. 'git pull')问题(由于任何原因,尤其是与git历史记录有关),那么你需要嵌套git命令,以便可以强制推送到heroku。例如,给定上面的示例:

git push heroku `git subtree split --prefix pythonapp master`:master --force


0

你收到的错误提示是你的git分支落后了。包含最新子树的git分支不是最新的。

执行git pull而不是git subtree pull


1
那并没有解决问题。"git pull" 命令显示 "Already up-to-date" 信息,而随后的 "git subtree push --prefix=gempak/tables gempak-tables master" 命令导致了与之前相同的错误。 - Steve Emmerson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接