私は1つのサブモジュールを持つスーパープロジェクトを持っています。そのサブモジュールは、スーパープロジェクトから完全に独立して開発されていますが、それは私のスーパープロジェクトのセットアップ方法ではありません。現在、サブモジュールの起点が更新されると、誰か(私)がgit submodule update --recursive --remote
を実行してからそのスーパープロジェクトにコミットすると、スーパープロジェクトだけが更新されます。それは愚かです。私は私のスーパープロジェクトのサブモジュールのバージョンを追跡したり、ハッシュをコミットしたりしません。私が望むのは、起源/マスターが何であれ、私のスーパープロジェクトでサブモジュールの起源/マスターを持つことだけです。私はサブモジュールを同期させ、サブモジュールを私のスーパープロジェクトにコミットしないでください。例えばgit submodule:サブプロジェクトをスーパープロジェクトにコミットせずに最新の状態に保つにはどうすればいいですか?
は、git clone
を行った後、サブモジュールを得るために、私はgit submodule update --init --recursive
を実行し、この取得:
$ git submodule update --init --recursive
Submodule 'scripts/token' (https://gitserver.company.com/token.git) registered for path 'scripts/token'
Submodule path 'scripts/token': checked out '93b6bee2031913f563f548883358a65a136bdd88'
しかし、コミットハッシュ93b6bee2031913f563f548883358a65a136bdd88がトークンレポの起源/マスターではありませんが、それは0f39201818985d21a1f2362ad5b519793bd4f2b6です。それを得るために、私は別のgit submodule
のコマンドを実行しています
$ git submodule update --recursive --remote
Cloning into '/Users/me/superproject/scripts/token'...
Submodule path 'scripts/token': checked out '0f39201818985d21a1f2362ad5b519793bd4f2b6'
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: scripts/token (new commits)
いいえ、私は親プロジェクトに「新しいコミットを」持っていないが、私はちょうどサブモジュールを同期しました。私はこれが依存関係のように動作するようにしたい。私はtoken>=0.0.1
(何が起源/マスターでも)を望んでいますが、私が持っているものはtoken=explicit_commit_hash
のようです。バージョン番号をサポートしたり、スーパープロジェクトのサブモジュールトークンのハッシュをコミットする必要はありません。
UPDATE:git status
は「最新」git submodule update
を実行する前に、ローカルの変更と、その後、git submodule update
後にサブモジュールを更新言えばつまりが、私はまだgit status
が「最新」と言いたいですローカル変更はありません。
私は間違っていますか?
は何を私が探していることは、 'Gitのcommit'まですべてですしている枝を指定する必要があります。サブモジュールの更新を修正されたコードと見なしてもらいたいとは思わない。 'git status'が"最新 "と表示されている場合、' git submodule update'がサブモジュールを更新した後、 'git status'がローカルに変更されずに"最新 "と言いたいとします。 – DrStrangepork