Как я могу нажать конкретную фиксацию на удаленный, а не на предыдущие коммиты?

Я сделал несколько коммитов для разных файлов, но до сих пор я хотел бы нажать на мой удаленный репозиторий только определенный коммит.

Возможно ли это?

Ответ 1

Чтобы продвинуться по заданной фиксации, вы можете написать:

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

при условии, что <remotebranchname> уже существует на пульте дистанционного управления. (Если это не так, вы можете использовать git push <remotename> <commit SHA>:refs/heads/<remotebranchname> для автоподготовки.)

Если вы хотите нажать фиксацию без нажатия предыдущих коммитов, вы должны сначала использовать git rebase -i для повторного заказа коммитов.

ИЗМЕНИТЬ

к более полному описанию того, что делать, проверьте @Samuel answer: fooobar.com/questions/13530/...

Литература:

Ответ 2

Пробовал предлагаемое решение:

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

вот так:

git push origin 712acff81033eddc90bb2b45e1e4cd031fefc50f:master

В моем случае хозяин был 5 коммитов впереди, и я просто хотел нажать мой последний коммит, но выше закончил тем, что нажал все мои изменения до и включил именованный коммит. Мне кажется, что метод вишневой подборки может быть лучшим подходом для этой утилиты.

Ответ 3

Другие ответы отсутствуют в описаниях переупорядочения.

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

будет выталкивать одно коммит, но это обязательство должно быть OLDEST из ваших локальных, не подталкиваемых, коммитов, а не путаться с верхним, первым или кончиком, которые, на мой взгляд, являются двусмысленными описаниями. Конец должен быть самым старым из ваших коммитов, т.е. Самым дальним от вашего последнего совершения. Если это не самая старая фиксация, то все фиксации от вашего старого, локального, не нажатого SHA до указанного SHA будут нажаты. Для изменения порядка фиксации используйте:

git rebase -i HEAD~xxx

После переупорядочения коммита вы можете безопасно нажать его в удаленный репозиторий.

Подводя итог, я использовал

git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master

чтобы нажать одну фиксацию на мою удаленную ведущую ветвь.

Литература:

См. также:

Ответ 4

Я бы предложил использовать git rebase -i; переместите фиксацию, которую вы хотите нажать вверху сделанных вами коммитов. Затем используйте git log, чтобы получить SHA от rebased commit, проверить его и нажать. Бабас будет гарантировать, что все ваши другие фиксации теперь являются детьми того, кого вы нажали, поэтому будущие толчки тоже будут работать отлично.

Ответ 5

Cherry-pick работает лучше всего по сравнению со всеми другими способами при нажатии определенной фиксации.

Способ сделать это:

Создайте новую ветку -

git branch <new-branch>

Обновите новую ветвь веткой происхождения -

git fetch

git rebase

Эти действия позволят вам точно иметь то же самое, что и ваше происхождение.

Черри выберите sha id, который вы хотите нажать -

git cherry-pick <sha id of the commit>

Вы можете получить sha id, запустив

git log

Нажмите его в исходное положение -

git push

Запустите gitk, чтобы увидеть, что все выглядит так, как вы хотели.

Ответ 6

Я верю, что вам придется "git вернуть" обратно на это коммитирование, а затем нажать его. Или вы можете cherry-pick совершить переход в новую ветку и нажать ее на ветку на удаленном репо. Что-то вроде:

git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}