Отправка только одной ревизии в GIT-репозиторий - PullRequest
2 голосов
/ 08 сентября 2010

Я работаю в проекте и внося одно изменение, я фиксирую его.Затем, после совершения 3 или 4 изменений, я нажимаю все это.

Что я хотел бы сделать, это нажать только одну из тех ревизий, которые у меня есть локально.могу ли я сделать это?Как?

Спасибо

Ответы [ 2 ]

7 голосов
/ 08 сентября 2010

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

Когда вы будете готовы нажать: git checkout master, git pull, git merge work, git push, ваш обычный поток.

Однако вы можете выбрать коммиты из своей рабочей ветки для мастера, таким образом, только эти коммиты будут выдвинуты.

git checkout master
git cherry-pick <id of commit you want>
git push

Вероятно, вы можете сделать это даже сейчас.

git checkout -b work
git log (and look for the IDs of the commits you want)
git checkout master
git reset --hard HEAD~3 (remove last 3 commits from master)
git cherry-pick <ID of commit you want>
git push
3 голосов
/ 08 сентября 2010

Я не совсем уверен, что вы хотите сделать. Если у вас есть 4 незафиксированных коммита и вы хотите нажать только первый из этих коммитов, вы можете передать его ссылку на git push. Если вы хотите нажать, скажем, третий из этих коммитов, но не первый или второй, у вас будут проблемы. Вы не можете этого сделать. (Хорошо, вы, вероятно, можете, но тогда он будет отключен от остальной части дерева).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...