Git Cherry-Pick - PullRequest
       0

Git Cherry-Pick

3 голосов
/ 08 марта 2012

Я новичок в git, и я понимаю, как работает git cherry-pick, но вот моя проблема:

Недавно кто-то в моей команде изменил структуру каталогов в master, но неструктура каталогов в другой ветке.

Теперь, когда я делаю изменения в своем коде в ветке, я хочу перенести их (cherry-pick) в master.Это было нормально, пока структуры каталогов в master и ветке не стали одинаковыми.

topDir / some / subdir / file - master
topDir / some / other / subdir / file - branch

Файл

, чьи изменения должны быть внесены в master, такой же, но не в той структуре каталогов, в которой он содержится. Когда я пытаюсь сделать вишню как обычно, я получаю сообщение об ошибке:

мастер git checkout Ошибка фиксации git cherry-pick: pathspec topDir / some / other / subdir / file не существует

Теперь, каков наилучший способ выбора вишни в этом сценарии?Любые указатели высоко ценятся.


ОК.Я только что заметил, что в том же сценарии, когда я делаю вишню, git достаточно умен, чтобы действительно правильно выбрать один из файлов из коммита, но не распознает другой.

Для использованияТот же пример, который я упомянул в своем первоначальном посте: В том же коммите topDir / some / subdir / file1, topDir / some / subdir1 / file2.

Я иду к мастеру, который имеет "file1" и "file2", просто в другой структуре dir: topDir / src / some / subdir / file1 topDir / src / some / subdir1 / file2.

Теперь, если я выберу вишню, git достаточно умен, чтобы заметить изменения в файле1, даже если это другая структура директории, но не забирает изменения для файла2.Есть указатели?Если кто-то хочет, чтобы я был более ясен, я буду счастлив.

Итак, что я сделал, чтобы обойти проблему - сделать вишню, вручную изменить один git, который не взял, и "git commit -C.

Ответы [ 2 ]

5 голосов
/ 08 марта 2012

Рад помочь :), если один в 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

На самом деле, это зависит от того, каковы варианты использования файлов и что вы хотите видеть в основной ветке, что является в большей степени вопросом вашей компании, а не технической проблемой, за которую может ответить кто-либо здесь. ты;)

0 голосов
/ 05 января 2016

Предположим, у нас есть A,B,C,D,E & F узлы.В настоящее время пользователь находится на узле F и хочет выбрать вишню с узла C, используя команду типа git, например Git Cherry-Pick C, затем эта команда применяет узел C к узлу F.

...