13

以下の簡単な説明:コミットメッセージをサブツリーにプッシュしたいのですが、そのツリーに適用されるメッセージのみです。どうすればよいですか?


私には2つのプロジェクトがMasterありSlaveます。 SlaveチェックアウトされたのサブツリーとしてMasterチェックアウトされますlib/slavegit subtree merge --prefix=lib/slave --squash projects/slaveここで、チェックアウトされprojects/slaveたブランチは次の場所にSlaveあります。

ブランチ:

マスタープロジェクト/スレーブ→スレーブ

現在、私は自分のmasterブランチに取り組んでおり、両方のプロジェクトの一部であるファイルにコミットし、すべてが順調に進んでいます。今、私は変更をプッシュバックしたいと思いますSlave

  • gitチェックアウトスレーブ
  • gitマージ??? 主人

lib/slave通常のマージを行うと、のファイルが変更されたかどうかに関係なく、マスターへのコミットごとにコミットが取得されます。または、を実行して--squash1つのコミットしか取得できませんが、ログメッセージが失われます。

では、適切なログメッセージを取得するにはどうすればよいですか?たとえば、masterログ履歴が次の場合:

  • マスターに画像を追加
  • スレーブのみで変更されたファイル
  • マスターのみへのその他の変更
  • マスターとスレーブの変更されたファイル

これを追加したいSlave

  • スレーブのみで変更されたファイル
  • マスターとスレーブの変更されたファイル
4

1 に答える 1

7

必要な動作については、 からプッシュする必要があると思います。Masterサブツリーの変更を からプルする方法がわかりませんSlave

変更をプッシュするには:

(in Master)
$ git subtree split --prefix=lib/slave -b split-branch
$ git push <bare Slave repo> split-branch:master
$ git branch -d split-branch
$ cd /path/to/Slave/working/copy
$ git pull  # (now in Slave)

最初のコマンドは、ディレクトリに基づいて新しいサブツリーを作成し、それを他のプロジェクトにプッシュします。

理論的には、作業コピーに直接プッシュできるはずですが、実際にはうまくいきませんでした。

于 2012-04-13T00:24:12.623 に答える