質問

いつ支店とは違うのに十分な基準改定のような仕事やわからないことを思い出します。

ている"公共"の支店を集めたファイルの除去用フィルターです。でも-どこでも-だれでものにする為の試合の中州のコミットidをすべて異なります。たってかなりの数の方法のプルの変化からdev支店に公開支店...れているあらゆることは考えにくいができるだいたいすることができるようになりますが思うんどうやって実行するかである。る場合には、この作品も見間違っています。

git checkout dev
git format-patch --stdout last_sync_tag > catchup.mbox
git checkout public
git am catchup.mbox
git --skip # talks about a missing file
git --skip # talks about a missing file
git --skip # talks about a missing file

他のヒントや提案するだろうなフィルターに進出するファイルによってお使いに支店をもどうかという話があったようだしくしてみてはいかがだろうか。), 歓迎する。

私のツリー(s)より以下のようになります:

dev: a-b-c-d-e-f-g-h-i-j-k
pub: t-u-v-w-x

t≅、u≅c v≅d,w≅e,x≅。i,j,kている新パッチをいいます。

checkout pub
rebase --onto pub i  # I really expected this to work
役に立ちましたか?

解決

Gitリポジトリの cherry-pick のコマンド有用である可能性があります。私はあなたの状況でそれを使用していないが、私はそれが動作するはずだと思います。唯一の痛みは、スクリプト/それを自動化したい場合はgit rev-listのようなものを使用する必要があると思いますので、コミットの範囲で動作するように設計されていないということです。

繰り返しますが、私はこれを試していないが、このようなbashスクリプトは、あなたに良い出発点を与える可能性があります。

git checkout public
for rev in $(git rev-list --reverse last_sync_tag..dev) ; do
   git cherry-pick $rev && git tag -f last_sync_tag $rev || exit 1
done

他のヒント

い定期的にファイルdev支店がありますか?もっ掛けではないか。

場合による変化しやすい書き換える歴史を少なにができるのかは手配したとして一つの目的に基づく公共支店及び合併後に公開く"s弊ているから実際に得。(前についてお答えgitの合併-sわ)

のようなもの:

git checkout -b dev public
git am create-dev-only-files.patch
git checkout public
git merge -s ours dev
git checkout dev
# write more dev patches...
git checkout public
git merge dev
# and this should merge in the patches without bringing in the
#  dev-only files

ただし、その後の変更おdev支店を統合して公開された場合を変えるファイルなどの見、あとはそのまま適用されます。ただし、設定ファイルをきると思います。公変更することには注意を要する。ばならないように気をつけましょうかを事前にcommitフックをunstage特定のファイルを開始する前にcommitを支えます。

あなたは、「フィルタ・ブランチ」を使用しましたので

あなたはgitのは正しいが、上にリベースを実行するためにコミット見つける必要があるとしている。

私はここで推測するつもりですが、おそらくあなたは、「ほとんどの普通二つのバージョン、公開ブランチと、これは(非フィルタ処理)に対応してコミットあなたのdevの枝の場所の頭を持っているコミットしています。コミット公共頭を呼び出し<PH>とdevが、これは<DevPH>を(フィルタリング前)に対応することをコミットします。

DEVブランチをチェックアウトして、

、あなたはこのような何かをしたい:

git rebase --onto <PH> <DevPH>

これは、各によって導入されたパッチを取るためにリベース現在のブランチ上の<DevPH>ので、コミットと<PH>するには、これらのコミットを適用するように指示します。私は、これは何が必要だと思います。

編集ます:

質問に対するあなたの更新は時間がのdevの枝に、あなたが公共の枝の上のdevの枝の上以降、ここからすべてを移植したいという公共のストリームの先頭に等価であることを示しています。そのコマンドがある場合は、

git rebase --onto pub h

さて、私は.gitignoreにfileitの土地をしたくない場合。それがすべてで追跡する必要はありませんので、おそらくそれは設定でない実際のコードです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top