Предположим, у меня есть 5 местных коммитов. Я хочу нажать только 2 из них на централизованное репо (используя рабочий процесс в стиле SVN). Как мне это сделать?Как вы нажимаете только некоторые из ваших местных git-коммитов?
Это не сработало:
git checkout HEAD~3 #set head to three commits ago
git push #attempt push from that head
Это заканчивает толкая все 5 местных коммиты.
Я полагаю, что я мог бы выполнить сброс git, чтобы фактически отменить мои коммиты, а затем git stash, а затем git push - но у меня уже есть записанные сообщения и файлы, и я не хочу их переделывать.
Мое ощущение, что какой-то флаг, переданный для нажатия или сброса, будет работать.
Если это помогает, вот мой мерзавец конфигурации
[ramanujan:~/myrepo/.git]$cat config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = ssh://server/git/myrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
Примечание: вам не нужно использовать 'master ~ 3'. Любая ссылка на требуемую «до» фиксацию одинаково действительна, например «HEAD ~ 3» или «HEAD» ~~~ ', или конкретная SHA, или тег, который присваивает метки. – Kaz
Хороший материал. Предупреждение: эти примеры нажимают на главный хозяин. Если вы копируете и вставляете это решение, вы можете случайно обновить основную ветвь. (Конечно, вы всегда должны быть осторожны и дважды проверять свою команду перед выдачей 'git push' ...) – nofinator
Похоже, что это подталкивает фиксацию, но не добавляет ветку удаленно. – Nateowami