我想做一個HTML文件回購的git rebase。我有一個回購協議,看起來像:如何git rebase只更改文件
-- A -- B
\
\-- C -- D -- E -- F
我想變基˚F到B,但我有我不想。C介紹說,在ALL迴流文本的變化問題的HTML文件。我只想從D,E和F對這些提交中更改的文件進行更改。
因此,換句話說,我想:
-- A -- B -- D' -- E' -- F'
EXCEPT:我想最後的承諾包括的f從git diff --name-only C..F
返回的文件和文件從B.休息
不爲我工作的事情是:
git rebase --onto B D F
因爲我必須做一個凌亂的合併,並手動選擇哪些文件,我想。我可以添加-X theirs
,但我從C中獲得我不想要的文件。
所以,我的蹩腳的不幹的方法是在B的頂部創建一個新的自定義提交,在那裏我複製來自F的文件git diff --name-only C..F
。
有沒有更好的git方式來做到這一點?
(僅供參考,這裏就是我如何做沒有充分使用Git):
git diff --name-only C..F | xargs -I{} -n1 sh -c "git show F:{} > {}"
你有沒有嘗試過使用git cherry-pick? – Tim
git櫻桃挑選有同樣的問題 - 除非你可以選擇你想櫻桃選擇的文件(也許你可以,我只是不知道)。 – Brian
排除'C'但通過'F'保留'D'的分配應該是'git rebase --to B C F',而不是'git rebase --do D F'。如果那包括你不想要的文件,那就意味着你不需要'D'到'F'中的所有內容,這與你最初的要求相反。 – torek