1. ホーム
  2. git

[解決済み] 最新のGitサブツリーをプッシュできないのですが?

2023-03-04 18:43:14

質問

いくつかのプロジェクトで、ベースコードを共有するためにGitサブツリーを使用しています。ベースコードは頻繁に更新され、アップグレードはどのプロジェクトでも発生し、最終的にはすべてのプロジェクトが更新されます。

git が私のサブツリーが最新であると報告するものの、プッシュが拒否されるという問題に遭遇しました。たとえば

#! git subtree pull --prefix=public/shared project-shared master
From github.com:****
* branch            master     -> FETCH_HEAD
Already up-to-date.

プッシュすると、「プッシュするものがない」というメッセージが出るはずなのですが...。そうですよね?そうですよね?

#! git subtree push --prefix=public/shared project-shared master
git push using:  project-shared master
To [email protected]:***
! [rejected]        72a6157733c4e0bf22f72b443e4ad3be0bc555ce -> master (non-fast-forward)
error: failed to push some refs to '[email protected]:***'
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.

この原因は何でしょうか?なぜプッシュが失敗するのでしょうか?

どうすれば解決できますか?

私はこのブログのコメントで答えを見つけました。 https://coderwall.com/p/ssxp5q

<ブロッククオート

もし、"Updates were rejected because the tip of your current branch is behind に出くわしたなら、それは、あなたの現在のブランチの先端が遅れているからです。 に遭遇した場合、現在のブランチの先端が遅れているため、更新が拒否されます。リモートの変更をマージする (例: 'git pull') "問題がプッシュ時に発生した場合 (原因は何であれ)、ネストする必要があります。 何らかの理由で (たとえば git の歴史をいじくりまわしていたりして) プッシュしている場合は、git コマンドをネストする必要があります。 コマンドをネストさせ、heroku に強制的にプッシュできるようにする必要があります。

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