3

我是 git 的新手,我确实了解 git cherry-pick 的工作原理,但这是我的问题:

最近,我的团队中有人更改了 master 中的目录结构,但没有更改另一个分支中的目录结构。

现在,当我在分支中对我的代码进行更改时,我想将它们(樱桃挑选)带入 master。这很好,直到主目录和分支中的目录结构相同。

topDir/some/subdir/file -- master
topDir/some/other/subdir/file -- 分支

文件,其更改将被带入 master 是相同的,但不是它包含的目录结构。当我尝试以通常的方式进行樱桃挑选时,我收到如下错误:

git checkout master git cherry-pick commit 错误: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 .

4

2 回答 2

5

乐于助人:)如果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

确实,这取决于文件的用例是什么,以及您希望在主分支中成为什么,这更像是您公司的特定问题,而不是这里任何人都可以为您回答的技术问题;)

于 2012-03-08T19:50:31.233 回答
0

假设我们有A,B,C,D,E & F节点。用户当前在F节点上,并希望C通过使用类型 git 命令来选择节点,Git Cherry-Pick C然后此命令将C节点应用于F节点。

于 2016-01-05T12:01:06.820 回答