не может выдвинуть ветвь поддерева - PullRequest
1 голос
/ 09 марта 2011

У меня есть git-репозиторий, содержащий приложение, и я хочу использовать подкаталог этого репозитория для обновления общего репозитория библиотеки. Я могу получить репозиторий библиотеки, зафиксировать обновление, но не могу заставить его отправить этот коммит обратно на удаленный компьютер. Это должно быть ускоренное движение вперед, но оно говорит, что это не так. Что я делаю не так?

$ 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
|
...

Я могу заменить сжатое объединение поддеревьев тривиальным редактированием, и у меня все еще остаются те же проблемы.

Ответы [ 2 ]

7 голосов
/ 09 марта 2011

Оказывается, "git push lib" на самом деле пытался подтолкнуть libmaster к origin / master вместо lib / master (я экспериментировал с некоторыми жертвенными репозиториями). Когда я все подробно изложил, как это ...

git push lib libmaster:master

... это сработало.

Я бы, конечно, хотел бы иметь возможность толкать без подробного объяснения. Это заставляет меня задуматься о том, не странно ли я ввел lib в репозиторий или мне нужно каким-то образом настроить ветку. Мне нужно кое-что почитать ...

0 голосов
/ 09 марта 2011

Делай, как говорит Git, и запускай git pull первым ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...