2

特定のブランチを別のブランチにマージするときに問題が発生しています。

プロジェクトのベースとなるブランチは全部で 3 つあります。DEV、SUP、マスター。開発者は DEV のブランチに基づいており、ベースラインのチケットが DEV にマージされ、顧客がテストできるようになっています。ローカル ブランチが DEV に基づいているため、この時点で追加の変更はありません。問題は、たとえばブランチ DEV12345 を SUP にマージしようとすると、DEV12345 ブランチ (コミット) で行われた変更とは無関係の一連の変更が表示されることです。

チェリーピッキングやその他の解決策について読んだことがありますが、GITを使い始めたばかりなので、私が見たいくつかの答えに従うのに十分な経験がありません.

SUP をマスターに MERGE するときの私の理解であるため、チェリーピックはしたくありません。コミットを失うか、マージの競合が増える可能性がありますか?

$ git merge DEV12345 --no-commit
$ git status

この時点で、私が望まない多くの変更が表示されます。ここStackoverflowの別のソリューションから取得したこれを試しました。

$git add <fileNamePath> 
$git clean -f -d
$git reset HEAD

これが私がしたことだと思います。これにより、必要な特定の変更のみがもたらされたことを確認しました。つまり、100 個のファイルから 1 個のファイルが異なるだけでした。そして、私が自分でやったので、私が間違っていなければ信じています

$git commit -m "xxxxxxxxxxxx"

元の作成者のコミット/履歴を失っていたでしょうが、これは私たちにとって好ましくありません。

これを行う簡単な方法はありますか?最終的にマスターに投稿するときにも履歴が保持されます。顧客がチケットを承認したら SUP に投稿し、承認されたすべてのチケットを SUP に投稿したら、SUP をライブ システムであるマスターにマージします。

初心者が理解できるように、誰かが簡単な形式で解決策を提供できますか?

みんな、ありがとう!

4

1 に答える 1

0

Gitを使用すると、コミットを1つ(または複数)に押しつぶすことができます。git rebaseこれは、インタラクティブアプリケーションに基づいています。たぶん、SUPにマージしてから、コミットをまとめてつぶすことができます。したがって、SUPに意味のあるマージを行いながら、ブランチでコミットを保持します。

の詳細については、このレシピまたはgit-bookgit rebaseを確認してください。

さよなら

于 2012-07-19T14:08:49.063 に答える