1

プロジェクトのマスター ブランチから特定のコミットを、プロジェクトから分岐した古いブランチにバックポートしたいと考えています。たとえば、"branchA" の下の /my/nice/path/MyClass.java" は、"master" の下の特定のコミットによって "/my/nice/refactored/file/path/MyClass.java" に加えられた変更を受け取る必要があります。私はこれを「正しい方法」で達成していますか? (たとえば、変更を手動でコピーして、「branchA」の変更を通常の編集として扱うことができますが、それは正しくないようです)

強制的に、ブランチを含む両方のパスを指定できる方法で統合できます。gitに相当するものは何ですか?

ありがとう!

4

2 に答える 2

0

私は最終的にこのようなことをしました(新しいファイルを処理しません)

COMMIT_TO_PORT=(commit hash)
for f in `git show --pretty="format:" --name-only ${COMMIT_TO_PORT}`
do
PATH_UNDER_MASTER=$f
PATH_UNDER_BRANCHA=(make branchA path out of $f)
FILEID=(optional - extract file name or some other ID to preserve new-old files for reference if auto-generated conflicts are not clear)
git show "${COMMIT_TO_PORT}:{$PATH_UNDER_MASTER}" > "new_${FILEID}"
git show "${COMMIT_TO_PORT}~1:{$PATH_UNDER_MASTER}" > "old_${FILEID}"
git merge-file $PATH_UNDER_BRANCHA "old_${FILEID}" "new_${FILEID}"
# optional - open $PATH_UNDER_BRANCHA 
unset FILEID PATH_UNDER_MASTER PATH_UNDER_BRANCHA
done
unset COMMIT_TO_PORT
于 2012-10-19T22:43:50.357 に答える
0

私はあなたが探していると思いますgit cherry-pick

1 つ以上の既存のコミットがある場合、それぞれが導入する変更を適用し、それぞれに新しいコミットを記録します。

それが「正しい道」

于 2012-10-12T03:43:28.907 に答える