Частичное поддерево восходящего потока в Git

У меня есть ситуация в Git, в которой у меня есть базовое репо, которое используется совместно с другими репозиториями через поддерево Git. В репо "проект" у меня есть поддерево репо "ядро", и в этом ядре я делал различные коммиты, которые я с тех пор совершил, и подтолкнул к "проекту". Теперь я хочу перенести эти изменения в папке "core" в реальный репозиторий "core". Обычно это достигается с помощью:

git subtree push --prefix=/core/ core-repo master

Тем не менее, в папке "core" есть один коммит, который я бы хотел сохранить локальным для "project". Дешевый хакерский способ - просто подтолкнуть все вверх по течению и затем отменить этот коммит. Мне было интересно, если бы был более подходящий способ, чтобы остановить эти конкретные изменения когда-либо идти вверх по течению. Благодарю.

1 ответ

Обычно вы можете нажать на конкретный коммит с помощью:

git push <remotename> <commit SHA>:<remotebranchname>

Это подтолкнет к удаленной ветви все коммиты до указанного (включенного).

Вы должны быть в состоянии (но я не проверял это) сделать это также с помощью подталкивания поддеревьев. Что-то вроде:

git subtree push --prefix=/core/ core-repo <commit SHA>:master

В твоем случае <commit SHA> должен быть коммит, предшествующий тому, который вы хотите избежать.
Обратите внимание, что если у вас есть коммиты, которые следуют за тем, который вы не хотите выдвигать, вам придется изменить порядок коммитов, используя git rebase,

Другие вопросы по тегам