GitHub のリポジトリからブランチをフォークし、自分専用のものをコミットしました。すると、元のリポジトリに という優れた機能があることが分かりましたHEAD
。
以前のコミットを除外してマージしたいのですが、どうすればいいでしょうか? すべてのコミットをマージする方法は知っています:
git branch -b a-good-feature
git pull repository master
git checkout master
git merge a-good-feature
git commit -a
git push
ベストアンサー1
git cherry-pick
ここにあなたの答えがあるはずです。
既存のコミットによって導入された変更を適用します。
必ず読んでくださいドンランこの投稿におけるチェリーピッキングの結果についての回答:
「ブランチからすべてのコミットをプルし、指定したコミットを別のブランチにプッシュする」、 どこ:
A-----B------C
\
\
D
次のように変わります:
A-----B------C
\
\
D-----C'
このコミットの問題点は、gitがコミットをそれ以前のすべての履歴を含むものとみなすことです。
ここで、C' は異なる
SHA-1
ID を持ちます。
同様に、あるブランチから別のブランチにコミットをチェリー ピックするには、基本的にパッチを生成してから適用する必要があり、その方法でも履歴が失われます。
このコミット ID の変更により、git のマージ機能が壊れるなどの問題が生じます (ただし、控えめに使用すると、これを回避できるヒューリスティックがあります)。
さらに重要なのは、機能的な依存関係が無視されることです。つまり、C が実際に B で定義された関数を使用した場合、それを知ることはできません。