Во-первых, на вашем сервере разработки вам нужно получить список коммитов с git-сервера следующим образом:
git fetch origin master (or whatever branch you need)
Затем есть несколько вариантов для достижения того, что вы хотите:
Cherry выбирает первый коммит - он просто «отбирает» выбранный коммит из другой ветки / репо и применяет его к вашей текущей локальной ветке.Это может быть очень полезно, но его следует использовать с осторожностью (см. Ниже).
git cherry-pick <hash-of-commit-you-want>
В этом конкретном случае вы можете сделать
git cherry-pick FETCH_HEAD^ (gets commit before the HEAD of what's been fetched)
Или потянуть все и затем сделатьполный сброс к коммиту, который вы хотите (в данном случае тот, что перед HEAD).Аппаратный сброс эффективно перематывает вашу локальную ветвь назад во времени к выбранному коммиту, изменяя состояние всех файлов на то, каким они были в то время (поэтому в этом случае файл B либо будет удален, либо вернется к тому, что было раньше, либоcommit, в зависимости от того, существовал ли он ранее или нет).
git pull
git reset --hard HEAD^ (or git reset --hard <hash-of-commit-you-want>)
Я бы предпочел второй вариант, так как сбор вишни может иметь некоторые эффекты, если вы не будете осторожны с ним.Я считаю, что это создает новый хэш для коммита, поэтому выбранный вишней коммит и исходный коммит не идентичны.Боюсь, у меня сейчас нет времени, чтобы прочитать об этом и точно подтвердить, в чем заключаются подводные камни, но я настоятельно рекомендую вам исследовать это самостоятельно, если вы решите использовать его.
РЕДАКТИРОВАТЬ- Другое решение (учитывая, что это живой сервер и что в любой момент файл B не может появиться на сервере), заключается в следующем:
git fetch origin master
git checkout FETCH_HEAD^
. При этом выбираются все коммиты из репо., а затем проверяет ваше локальное хранилище перед коммитом перед заголовком того, что было извлечено.Единственным недостатком здесь является то, что вы будете в состоянии «отсоединённая голова» и вам придется создавать новую ветку локально, но это не большая проблема.