3

現在のプロジェクトでは、オープンソースフォーラム(https://github.com/vanillaforums/Garden)を使用しています。私はこのようなことをすることを計画していました:

git remote add vanilla_remote https://github.com/vanillaforums/Garden.git
git checkout -b vanilla vanilla_remote/master
git checkout master
git read-tree --prefix=vanilla -u vanilla

このようにして、バニラフォルダーに変更を加え(構成の変更など)、マスターブランチにコミットできます。また、バニラブランチに切り替えて、更新をフェッチすることもできます。私の問題は、ブランチをマージしようとしたときです

git checkout vanilla
git pull
git checkout master
git merge --squash -s subtree --no-commit vanilla
git commit -a -m "update commit"

問題は、「更新コミット」が私のコミットの上にあり、私の変更を「上書き」することです。アップデートの上にコミットを再生してもらいたいです。それを行う簡単な方法はありますか?私はgitがあまり得意ではないので、これは間違ったアプローチかもしれません。また、自分の歴史とバニラの歴史を混ぜたくありません。

4

4 に答える 4

3

私はこのスキームを完成させました:

  1. subtreeからのファイルに触れる開発ブランチで作業します。

  2. 押しつぶされた開発コミットでサブツリーブランチを更新します。

    git merge -s サブツリー --squash --no-commit開発

  3. サブツリーブランチをそのリモート リポジトリで更新します。

  4. 圧縮されたサブツリーのコミット で開発を更新します。

    git merge --squash -s サブツリー --no-commitサブツリー

于 2013-01-15T02:42:56.353 に答える
3

サブツリーを使用する場合は、おそらく を使用することをお勧めしますgit subtree。サブツリーにマージするためのマージ/プル コマンド (スカッシュはオプション) や、変更を分割してサブツリーに戻し、独自のサブツリーに送り返すための分割/プッシュ コマンドなど、この種のことに対して、よりユーザー フレンドリーなインターフェイスを提供します。レポ。

于 2011-06-25T18:51:06.007 に答える
1

使用する

git merge --squash -s subtree --no-commit vanilla

変更を「上書き」しません。「updatecommit」とは、サブツリーのマージ後に行ったコミットを意味することを望んでいます。これは、サブツリーが--no-commitそれ自体でコミットする場合としないためです。

于 2011-06-25T04:45:49.363 に答える
0

私もgitマスターではありません(そこで行ったことを参照してください;-))...ただし、rebaseコマンドを確認することをお勧めします。

http://book.git-scm.com/4_rebasing.html

于 2011-06-25T00:48:09.560 に答える