2010-01-26 7 views
2

Я использую Git для своих личных проектов с удаленным репозиторием, размещенным на сайте assembla.com. Я привык к простому рабочему процессу, подобному svn, но теперь я пытаюсь сделать что-то, что (я думаю) должно быть относительно простым, но git-документация пока не помогла мне достичь этого.Сохранение изменений в удаленной ветке в Git

Это ситуация. Я сделал кучу изменений в моей локальной ветви мастера и совершил их. Теперь я понимаю, что мои изменения не являются абсолютно необходимыми и весьма вредными для производительности, но могут быть полезными/необходимыми в будущем. Поэтому я хочу вернуть прежнее состояние, а как-то сохранить эти изменения. Конечно, git reset --hard не будет делать, потому что он полностью удалит мои изменения.

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

Буду благодарен за любые идеи о том, как это сделать, связаны ли они с удаленными ветвями или нет.

ответ

3

Вы хотите создать ветку на текущей ГОЛОВЕ:

git branch possibly-useful-stuff 

, а затем сбросить мастер ветку обратно туда, где она принадлежит, вероятно, один из них:

git reset --hard origin/master # the remote branch 
git reset --hard master~<n>  # n commits before master 
git reset --hard <hash>   # a specific commit 

Чтобы отслеживать их в пульт дистанционного управления, вам просто нужно нажать эту ветвь на пульт:

git push <remote> possibly-useful-stuff 
+0

Спасибо за ответ, это сработало. – dimatura

1

Si Самое сложное - создать новую ветку, содержащую ваше текущее состояние. Затем вы можете нажать это на удаленный мастер и вернуть основную ветку обратно в положение удаленного мастера.

E.g.

git branch side-lined 

git push origin side-lined 

git reset --hard origin/master 
0

Я не знаю, конкретно, но я использую Mercurial. Если я столкнулся с этой ситуацией с Mercurial, я бы выделил ее как ветку (каким-то образом, каким-то образом), а затем проверил желаемую ревизию.

На моем следующем совершении Mercurial создаст новую главу. Я знаю, что это общее, но у меня была идея, поэтому я поделился ею.

Git и Mercurial похожи, так что я думаю, что идеи должны работать для вас ... (Пожалуйста, обратите внимание есть терминологические различия, и я, возможно, не используя правильные термины)

Примечание: Оказывается, что другие с тех пор разместили git конкретные направления, делая то, что я описывал.

+0

Зачем вам публиковать общий ответ, когда есть уже три повторяющихся ответа со спецификой? – Cascabel

+0

Я писал и не видел, чтобы они поднимались. Кроме того, я чувствую, что дать общее представление о том, что делать, было бы более продуктивным, чем дать точные команды. –

+0

Хорошо, извините, я думал, что это было немного дольше, чем исходные ответы. Общая идея хороша, хотя немного смешать ртуть и git, когда вы даете советы начинающим, так как существуют вариации в терминологии.В этом случае в репозитории git есть только один HEAD (он указывает на текущую ветку), и вы создаете ветви (не отмечаете как ветви). – Cascabel

Смежные вопросы