Git can';t推子树分支

Git can';t推子树分支,git,Git,我有一个包含应用程序的git存储库,我想使用该repo的子目录来更新共享库存储库。我可以获取库repo,提交更新,但我不能让它将提交推回到远程。这应该是一个快速前进,但它说它不是。我做错了什么 $ git remote add lib goertzen@minerva:/pub/shared_git_repositories/lib.git $ git fetch From minerva:/pub/shared_git_repositories/lib * [new branch]

我有一个包含应用程序的git存储库,我想使用该repo的子目录来更新共享库存储库。我可以获取库repo,提交更新,但我不能让它将提交推回到远程。这应该是一个快速前进,但它说它不是。我做错了什么

$ git remote add lib goertzen@minerva:/pub/shared_git_repositories/lib.git

$ git fetch
From minerva:/pub/shared_git_repositories/lib
 * [new branch]      master     -> lib/master

$ git checkout -b libmaster lib/master
Branch libmaster set up to track remote branch master from lib.
Switched to a new branch 'libmaster'

$ git merge --squash -s subtree -X theirs master
Auto-merging lib.yaml
Squash commit -- not updating HEAD
Automatic merge went well; stopped before committing as requested

$ git commit -m "blah blah blah"
[libmaster 4949ef3] blah blah blah
 1 files changed, 148 insertions(+), 95 deletions(-)

$ git push lib
To goertzen@minerva:/pub/shared_git_repositories/lib.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'goertzen@minerva:/pub/shared_git_repositories/lib.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git push --help' for details.

$ git pull
Already up-to-date.

$ git log --graph --all --full-history --branches --decorate
* commit 4949ef3181c21d85340b9fb16af5f9c2c58e75ae (HEAD, libmaster)
| Author: <snip>
| Date:   Tue Mar 8 15:25:03 2011 -0600
|
|     minitransfer changes
|
* commit e2dca9e2bcd28d09a455e9cc662f7eb630a0adc2 (lib/master)
  Author: <snip>
  Date:   Thu Feb 24 10:54:31 2011 -0600

      initial commit of shared lib repo

* commit b70bde69e5c4ddb079d06d7310d415fa89764b95 (origin/master, origin/HEAD, master)
| Author: <snip>
| Date:   Fri Mar 4 15:41:05 2011 -0600
|
|     fix typo
|
* commit cc64b565fbb88729e16314f76867ab24c37bfc47
| Author: <snip>
| Date:   Fri Mar 4 15:38:59 2011 -0600
|
...
$git远程添加库goertzen@minerva:/pub/shared\u git\u repositories/lib.git
$git获取
来自minerva:/pub/shared\u git\u repositories/lib
*[新分支]主->库/主
$git签出-b libmaster lib/master
分支libmaster设置为从lib跟踪远程分支master。
切换到新的分支“libmaster”
$git merge--squash-s子树-X它们的主树
自动合并lib.yaml
压缩提交--不更新头
自动合并进展顺利;在按请求提交之前已停止
$git提交-m“废话废话”
[libmaster 4949ef3]胡说八道
1个文件更改,148次插入(+),95次删除(-)
$git推送库
到goertzen@minerva:/pub/shared\u git\u repositories/lib.git
! [已拒绝]主机->主机(非快进)
错误:无法将某些引用推送到'goertzen@minerva:/pub/shared\u git\u repositories/lib.git'
为防止丢失历史记录,拒绝了非快进更新
在再次按下之前,合并远程更改(例如“git pull”)。见
有关详细信息,请参阅“git推送--帮助”的“关于快进的注意”部分。
$git拉力
已经是最新的了。
$git log--图形--全部--完整历史--分支--装饰
*提交4949ef3181c21d85340b9fb16af5f9c2c58e75ae(图书馆馆长)
|作者:
|日期:2011年3月8日星期二15:25:03-0600
|
|微转移更改
|
*提交e2dca9e2bcd28d09a455e9cc662f7eb630a0adc2(库/主)
作者:
日期:2011年2月24日星期四10:54:31-0600
共享库repo的初始提交
*提交b70bde69e5c4ddb079d06d7310d415fa89764b95(原点/主控,原点/主控,主控)
|作者:
|日期:2011年3月4日星期五15:41:05-0600
|
|排版
|
*提交cc64b565fbb88729e16314f76867ab24c37bfc47
|作者:
|日期:2011年3月4日星期五15:38:59-0600
|
...

我可以用一个简单的编辑来替换被压扁的子树合并,我仍然有相同的问题。

按照Git说的去做,然后先运行
Git pull

按照Git说的去做,然后先运行
Git pull

事实证明,“Git push lib”实际上是在试图将libmaster推送到origin/master,而不是lib/master(我做了一些牺牲性回购的实验)当我像这样详细地解释它的时候

git push lib libmaster:master
…成功了

我当然希望能够在不详细说明的情况下推送。这让我想知道我是否以一种奇怪的方式将lib引入了repo,或者我是否需要以某种方式配置分支。我有一些阅读要做…

事实证明,“git push lib”实际上是试图将libmaster推送到origin/master而不是lib/master(我做了一些牺牲性回购的实验)当我像这样详细地解释它的时候

git push lib libmaster:master
…成功了


我当然希望能够在不详细说明的情况下推进。这让我想知道我是否以一种奇怪的方式将lib引入回购协议,或者我是否需要以某种方式配置分支。我有一些阅读要做…

上面写着“已经是最新的”。没有其他人在处理这些回购协议。上面写着“已经是最新的”。没有其他人在处理这些回购协议。
git push remote
默认推送“匹配”分支。您希望它推送到被跟踪(也称为上游)分支。您可以使用
push.default
配置变量(请参阅)对此进行配置。使用“不相关”分支有点不寻常单个存储库中的远程/分支(即那些没有一些共同的历史DAG)。有一些先例(GitHub
gh页面
分支,git.git的
man
html
分支),但大多数情况下不共享内容-相关内容,但没有您的
主控的共享历史关系
(显然)has to
lib/master
可能更不寻常。你可能会感兴趣。谢谢Chris,push.default=跟踪是我要找的。我天真地遵循Pro Git的子树合并方向,这导致了不相关的分支。这在我想将代码从一个子树合并到另一个子树时造成了问题,因为没有merge basis。我现在了解了如何连接历史记录,并将为我的项目连接历史记录。太棒了。多亏了你——让我在花了一个晚上的时间后不再头疼。
git push remote
默认推送“匹配”分支。你希望它推送到跟踪的(也称为上游)分支。您可以使用
push.default
配置变量(请参阅)对此进行配置。在单个存储库中有“不相关”的远程/分支是有点不寻常的(即,这些远程/分支没有一些共同的历史DAG)。有一些先例(GitHub
gh页面
分支,git.git的
man
html
分支),但大多数情况下不共享内容。您的
主控的(部分)相关内容,但没有共享历史关系(显然)has to
lib/master
可能更不寻常。你可能会感兴趣。谢谢Chris,push.default=跟踪是我要找的。我天真地遵循Pro Git的子树合并方向,这导致了不相关的分支。这在我想将代码从一个子树合并到另一个子树时造成了问题,因为没有merge basis。我现在知道如何将历史联系起来,并将为我的项目这样做。太棒了。多亏了你——让我在辛苦工作了一晚上之后不再头疼了。