關於此問題的幾個問題,但我無法找到一個明確的最小示例。比方說,我們希望將特定分支的提交應用於多個分支,而不需要補丁提交之前的遺留提交。例如。應用git補丁 - 基本示例
mkdir cherry_test
cd cherry_test
git init
printf "one\ntwo\nfour\n" > file.txt
git add file.txt; git commit -m 'master: 1'
git branch dev
echo five >> file.txt
git add file.txt; git commit -m 'master: 2'
git checkout dev
echo FIVE >> file.txt
git add file.txt; git commit -m 'dev: 3'
echo SIX >> file.txt
git add file.txt; git commit -m 'dev: 4'
現在,讓我們做一個補丁來填補空白(插入缺失行的「三」):
perl -0777 -i -pe 's/two\nfour/two\nthree\nfour/igs' file.txt
git add file.txt; git commit -m 'dev patch'
在這一點上,我不清楚如何應用這個補丁掌握無額外的大寫數字提交也修補。說..
git log
commit d44425da786e161dd066b5db6db8b649b99ba575
author etc
dev patch
然後this answer表明,我們需要使用git format-patch -1 d44425da
。但那麼如何將這與master
和其他分支合併?我的努力似乎都導致以前的dev
提交也合併。
'git checkout master有什麼問題; git cherry-pick d44425da786e161dd066b5db6db8b649b99ba575'? – nishantjr
就是這樣。我從給出的例子中想到,'cherry-pick'調用是由'dev'完成的。那麼所有使用'patch','apply'和'am'的業務都是爲了修補所有分支? – geotheory
我認爲這通常是電子郵件補丁。 – nishantjr