7

これがシナリオです。「master」ブランチから「dev」ブランチを作成し、いくつかの新しいコミットを作成しました。これらの変更の一部は、私のローカル開発マシンにのみ関連します。たとえば、オンラインで投稿された実際のURLではなくローカルのApacheサーバーを指すようにURL変数を変更しました(テスト段階で速度を上げるためにこれを行いました)。ここで、devブランチからの変更をmasterブランチに組み込みたいのですが、ローカル環境でのみ意味のある変更は組み込みません。

マージしたい変更を1行ずつ選択できるmerge--patchのようなものを想像していました。

あるいは、「master」ブランチをチェックアウトしても、ファイルを「dev」ブランチと同じように作業ディレクトリに保持してから、gitadd--patchを実行することもできます。それはうまくいくでしょうか?

4

2 に答える 2

6

1 つのアプローチは、他のブランチからの変更をマージすることですが、マージをコミットする前に開発固有のコンテンツを削除します。

まず、変更をコミットせずに取得しますgit merge --no-ff --no-commit dev

git add影響を受けるファイルを編集してing するかgit reset HEAD、影響を受けるファイルと必要な部分を編集して、開発固有の変更を削除しgit add --patchます。

次に、マージをコミットします。マージ コミットを行う利点は、将来のマージが簡単になることです。開発固有のコミットはマージされたと見なされるため、開発固有の部分を含まない将来のマージは単純な で行うことができますgit merge dev。このようにして、変更を master ブランチに簡単にマージしながら、独自の構成で別のブランチを無期限に維持できます。

于 2012-04-06T00:21:23.090 に答える
2

多分あなたはこのようなことを試すことができますか?

git merge --squash --no-commit $YOUR_OTHER_BRANCH
git reset HEAD
git add -p
git commit
于 2012-04-05T23:25:59.030 に答える