Я сделал несколько коммитов для разных файлов, но пока я хотел бы отправить в мой удаленный репозиторий только определенный коммит.
Это возможно?
Я сделал несколько коммитов для разных файлов, но пока я хотел бы отправить в мой удаленный репозиторий только определенный коммит.
Это возможно?
Ответы:
Для того, чтобы подтолкнуть вверх через данность совершала, вы можете написать:
git push <remotename> <commit SHA>:<remotebranchname>
при условии, что <remotebranchname>
уже существует на пульте. (Если этого не произойдет, вы можете использовать его git push <remotename> <commit SHA>:refs/heads/<remotebranchname>
для автоматического создания.)
Если вы хотите отправить коммит, не нажимая предыдущие коммиты, вы должны сначала использовать git rebase -i
его для переупорядочения коммитов .
git push <remotename> <commit SHA>:<remotebranchname>
работает. хитрость заключается в том, чтобы объединить его с тем, git rebase -i
чтобы переместить коммит, который вы хотите, в качестве первого коммита, и указать этот коммит-ша
git push <remotename> <commit SHA>:refs/heads/<new remote branch name>
. После этого нажмите как ответ описывает.
git push origin HEAD~1:master
.
-f
флаг.
Другие ответы отсутствуют в описаниях переупорядочения.
git push <remotename> <commit SHA>:<remotebranchname>
будет выдвигать один коммит, но этот коммит должен быть самым старым из ваших локальных, не выдвинутых, коммитов, чтобы его не путали с верхним, первым или концевым коммитом, которые, на мой взгляд, являются неоднозначными описаниями. Для коммита требуется самый старый из ваших коммитов, то есть самый дальний из ваших последних коммитов. Если это не самая старая фиксация, то все фиксации от вашего самого старого локального не выдвинутого SHA к указанному SHA будут отправлены. Чтобы изменить порядок коммитов используйте:
git rebase -i HEAD~xxx
После изменения порядка коммита вы можете безопасно отправить его в удаленный репозиторий.
Подводя итог, я использовал
git rebase -i HEAD~<number of commits to SHA>
git push origin <post-rebase SHA>:master
отправить один коммит в мою удаленную главную ветку.
Ссылки:
Смотрите также:
Я бы предложил использовать git rebase -i
; переместите коммит, который вы хотите нажать, на вершину коммитов, которые вы сделали. Затем используйте git log
для получения SHA перебазированного коммита, проверьте его и нажмите на него. Ребаз будет иметь гарантию того, что все остальные ваши коммиты теперь являются дочерними по отношению к тому, который вы нажали, так что будущие толчки тоже будут работать нормально.
git log
шаг?
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
чтобы увидеть, что все выглядит так, как ты хотел.
git rebase -i
будет идеальным решением, как предложено в вышеупомянутых решениях. Вишневый кир должен использоваться только тогда, когда вы хотите дублировать коммит.
Я полагаю, что вам придется «вернуться» назад к этому коммиту и затем нажать его. Или вы можете cherry-pick
зафиксировать в новую ветку и отправить ее в ветку в удаленном хранилище. Что-то вроде:
git branch onecommit
git checkout onecommit
git cherry-pick 7300a6130d9447e18a931e898b64eefedea19544 # From the other branch
git push origin {branch}
cherry-pick
совершить коммит, который хотите.
Вы также можете в другом каталоге: