整理されていないブランチでいっぱいの GIT リポジトリを再編成しようとしています。ここで、そこにいくつかの構造 (devel、production、features、...branches) を作成し、多くの小さな変更も削除/スカッシュしたいと考えています。しかし、それについて取り組んでいる人々がいるので、まだ何かを維持する必要があります。
そこで私は大きな構造を作り、古いものをまとめて (何年も前の小さなタイプミスの修正には誰も興味を持っていませんでした)、基本的に今年の初めにすべてを修正しました。
しかし、問題が発生しました - 一部のブランチがアクティブで、完全に押しつぶすことができず、(新しいスキーマがしばらくの間機能することが証明されるまで) 削除/移動できず、内部に次のような小さなマージが多数含まれています。
jacks_branch
A-B-C-F-G-H-I-J-M-N-O-P ...
\D-E/ \K-L/
次のように、適切な機能ブランチの上にこれをコピーしたいと思います
feature_123
XX-YY
=>
XX-YY-C'-F'-G'-H'-I'-J'-M'-N'-O'-P' ...
\D'-E'/ \K'-L'/
(スキーマはより複雑です。これが問題の部分です)
私は次のようなことをしたいと思います
git checkout feature_123
git cherry-pick C..P
しかし、それらすべてのマージで競合が発生します
error: could not apply E
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
コミット(マージ)はI
これらすべての競合を解決しますが、適用されず、チェリーピッキングが停止します
最善の方法は何ですか(最初からうまく整理されていることを除く)?
編集 - 例を追加:
私は持っている
* 3b0a2b4 3.line Adam (HEAD, Adam)
* c04efb0 Just fixed merge from other computer
|\
| * 3e5f111 2.line Adam_a
* | 897bfc3 2.line Adam_b
|/
* 308a3c5 1.line Adam
* 33f3119 === new year ==== (master)
* 436619b 1000.line
.............
* 0a12c01 4.line
* 41d763d 3.line
* dd1feb0 2.line
* 55aa2c2 1.line
* 84b12e9 Point zero
ブランチAdam
に競合があることを確認してください (3e5f111 と 897bfc3 はそれぞれ行Adam_a
とAdam_b
同じ場所に追加されます)。これは、開発者の Adam が c04efb0 で何らかの形で解決しました (そこにまったく異なるものを書くなどAdam_* # it does not matter
) 。
そして、新しいブランチを追加したいdevelop
-それは簡単にスカッシュですmaster
* 75675e1 === new_year === squashed 1.000 lines (HEAD, develop)
* 84b12e9 Point zero
そして今、私はからのコンテンツでブランチfeature_1
(over )を追加したい(ただし、すでに解決されているすべての競合を手動で解決する必要はありません。マージ(4444567)はブランチとまったく同じにする必要があります)develop
Adam
Adam
* 555567 3.line Adam (HEAD, feature_1)
* 4444567 Just fixed merge from other computer
|\
| * 3334567 2.line Adam_a
* | 2234567 2.line Adam_b
|/
* 1234567 1.line Adam
* 75675e1 === new_year === squashed 1.000 lines (develop)
* 84b12e9 Point zero
これを取得するには:
* 555567 3.line Adam (HEAD, feature_1)
* 4444567 Just fixed merge from other computer
|\
| * 3334567 2.line Adam_a
* | 2234567 2.line Adam_b
|/
* 1234567 1.line Adam
* 75675e1 === new_year === squashed 1.000 lines (develop)
| * 3b0a2b4 3.line Adam (Adam)
| * c04efb0 Just fixed merge from other computer
| |\
| | * 3e5f111 2.line Adam_a (Adam_a)
| * | 897bfc3 2.line Adam
| |/
| * 308a3c5 1.line Adam
| * 33f3119 === new year ==== (master)
| * 436619b 1000.line
| * 0a12c01 4.line
| * 41d763d 3.line
| * dd1feb0 2.line
| * 55aa2c2 1.line
|/
* 84b12e9 Point zero
(そして後で私は削除Adam
しmaster
ます)