1

我想将一个特定的提交从项目的主分支反向移植到某个从它分支出来的旧分支。例如,在“branchA”下,/my/nice/path/MyClass.java”应该接收“master”下的特定提交对“/my/nice/refactored/file/path/MyClass.java”所做的更改。如何做我实现了这个“正确的方式”?(例如,我可以手动复制更改并将“branchA”中的更改视为常规编辑,但这似乎不正确)

实际上,我可以以允许我指定两条路径(包括分支)的方式进行集成;什么是 git 等价物?

谢谢!

4

2 回答 2

0

我想你正在寻找git cherry-pick

给定一个或多个现有提交,应用每个引入的更改,并为每个提交记录一个新的提交。

这就是“正确的方式”

于 2012-10-12T03:43:28.907 回答
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 回答