我是git的新手,我知道git cherry-pick是如何工作的,但这是我的问题:
最近,我团队中的某个人更改了master中的目录结构,但没有更改另一个分支中的目录结构.
现在,当我对分支中的代码进行更改时,我想将它们(cherry-pick)带入master.这很好,直到master和branch中的目录结构相同.
topDir/some/subdir/file - master
topDir/some/other/subdir/file - branch
文件,其更改将被添加到master中是相同的,但不包含它所包含的目录结构.当我尝试以通常的方式进行樱桃选择时,我得到一个错误:
git checkout master git cherry-pick commit error:pathspec topDir/some/other/subdir/file不存在
现在,在这种情况下采摘樱桃的最佳方式是什么?任何指针都非常感谢.
好.我只是注意到,在同一个场景中,当我做一个挑选时,git足够聪明,可以从提交中正确选择其中一个文件,但不能识别另一个.
要使用我在原始帖子中提到的相同示例:在同一个提交中,topDir/some/subdir/file1,topDir/some/subdir1/file2.
我转到master,它有"file1"和"file2",只是在一个不同的目录结构中:topDir/src/some/subdir/file1 topDir/src/some/subdir1/file2.
现在,如果我做一个挑选,git足够聪明,可以获取file1中的更改,即使这是在不同的dir结构中,但不会获取file2的更改.有什么指针吗?如果有人希望我更清楚,我会很高兴.
所以,我所做的解决问题的方法是做一个樱桃选择,手动更改一个git没有拿起,以及"git commit -C.
很高兴帮助:)如果master中的那个将是永久的方式,我会修复主题分支中的文件结构以匹配master,提交到分支,*然后将更改合并到master,而不是cherry-pick.如在
git checkout branch
mv other/subdir/file subdir/file
git status
// git add and git rm to get the commit proper
git commit -m "fixing file struct"
git checkout master
git merge branch
Run Code Online (Sandbox Code Playgroud)
实际上,这取决于文件的用例,以及您希望在主分支中的内容,这更多是您公司特定的问题,而不是任何人在这里可以为您解答的技术问题;)