我是git的新手,我知道git cherry-pick是如何工作的,但这是我的问题:
最近,我团队中的某个人更改了master中的目录结构,但没有更改另一个分支中的目录结构。
现在,当我对分支中的代码进行更改时,我想将它们(cherry-pick)带入master。这很好,直到master和branch中的目录结构相同。
topDir / some / subdir / file - master
topDir / some / other / subdir / file - branch
文件,其更改将被包含在master中是相同的,但不包含它所包含的目录结构。当我尝试以通常的方式进行樱桃选择时,我得到一个错误:< / p>
git checkout master git cherry-pick commit 错误:pathspec topDir / some / other / subdir / file不存在
现在,在这种情况下采摘樱桃的最佳方式是什么?任何指针都非常受欢迎。
行。我只是注意到,在同一场景中,当我做一个挑选时,git足够聪明,可以从提交中正确选择其中一个文件,但是不能识别另一个。
使用我在原帖中提到的相同示例:在同一个提交中, TOPDIR /一些/子目录/文件1, TOPDIR /一些/ subdir1 /文件2。
我去了master,它有“file1”和“file2”,只是在一个不同的dir结构中: TOPDIR / src目录/一些/子目录/文件1 TOPDIR / src目录/一些/ subdir1 /文件2。
现在,如果我做一个挑选,git足够聪明,可以获取file1中的更改,即使这是在不同的dir结构中,但是没有获取file2的更改。有什么指针吗?如果有人希望我更清楚,我会很高兴。
所以,我解决这个问题的方法是做一个挑选,手动更改一个git没有拿起,然后“git commit -C。
答案 0 :(得分:5)
很高兴帮助:)如果master中的那个将是永久的方式,我会修复主题分支中的文件结构以匹配master,提交到分支,* 然后合并更改成为主人,而不是挑选。如在
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
实际上,这取决于文件的用例,以及您希望在主分支中的内容,这更多是您公司特定的问题,而不是任何人在这里可以回答的技术问题你;)
答案 1 :(得分:0)
假设我们有A,B,C,D,E & F
个节点。用户当前位于F
节点上,并希望使用C
类型的git命令来挑选Git Cherry-Pick C
节点,然后此命令将C
节点应用于F
节点