git サブツリーを使用して、複数のプロジェクトで共通のライブラリ ファイルを共有しようとしています。これが私が遭遇し続ける問題です。
1) サブツリーを追加して、プロジェクトの「lib」サブディレクトリが lib-dk リポジトリから来るようにします。
$ git subtree add --prefix=lib --squash git@bitbucket.org:dwknight/lib-dk.git master
2) 「lib」内のファイルに変更を加える
3) メイン プロジェクト リポジトリに変更をコミットする
$ git commit -am "update project"
4) アップデートをメイン プロジェクト リポジトリにプッシュする
$ git push origin master
5) 「lib」の変更を「lib-dk」リポジトリにプッシュします。
$ git subtree push --prefix=lib git@bitbucket.org:dwknight/lib-dk.git master
git push using: git@bitbucket.org:dwknight/lib-dk.git master
To git@bitbucket.org:dwknight/lib-dk.git
! [rejected] f455c24a79447c6e3fe1690f5709357b7f96828a -> master (non-fast-forward)
error: failed to push some refs to 'git@bitbucket.org:dwknight/lib-dk.git'
hint: Updates were rejected because the tip of your current branch is behind its remote counterpart. Merge the remote changes (e.g. 'git pull') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
6) lib-dk リポジトリで何も変更されていない場合でも、この拒否が発生します。プルしようとすると、何かのように動作しますが、プル経由で更新できます。それでもプッシュは拒否され続けます。