Версия для печати темы
Форум на CrossPlatform.RU _ Инструменты разработчика _ Git. Как откатить удаленный репозиторий?
Автор: BRE 26.9.2010, 12:43
Камрады, подскажите.
Начал новый проект, решил в нем использовать git.
Вопрос следующий.
Есть удаленный репозиторий (лежит в общей папке).
Клонирую его в devel-папку.
Что-то добавил, сделал commit, сделал push.
Что-то добавил, сделал commit, сделал push.
В devel-репозитории могу жестко откатиться, выполнив:
$ git reset --hard <ревизия>
А вот как бы мне в удаленном откатиться. И что будет после этого с другим devel-репозиторием, там была создана другая ветка и в ней были коммиты?
Автор: Litkevich Yuriy 26.9.2010, 13:27
Цитата(BRE @ 26.9.2010, 16:43)
В devel-репозитории могу жестко откатиться, выполнив:
$ git reset --hard <ревизия>
отправляй изменения, поставив галку "переписать существующую ветвь" Но это не нормальный режим
Цитата(BRE @ 26.9.2010, 16:43)
И что будет после этого с другим devel-репозиторием, там была создана другая ветка и в ней были коммиты?
в другом хранилище просто придётся разруливать при слиянии. У каждого хранилища свои ветки
Цитата(BRE @ 26.9.2010, 16:43)
Что-то добавил, сделал commit, сделал push.
Что-то добавил, сделал commit, сделал push.
вообще так не делается. Делается так:
1)создал ветвь от интерисующей ветви
2)Что-то изменил, сделал commit.
...
Что-то добавил, сделал commit.
3) Убедился что всё хорошо.
4) слил свою ветвь с исходной
5) отправил исходную ветвь в общее хранилище.
Автор: BRE 26.9.2010, 13:52
Цитата(Litkevich Yuriy @ 26.9.2010, 14:27)
отправляй изменения, поставив галку "переписать существующую ветвь" Но это не нормальный режим
Эээ... А как будет в командной строке?
Цитата(Litkevich Yuriy @ 26.9.2010, 14:27)
в другом хранилище просто придётся разруливать при слиянии. У каждого хранилища свои ветки
Т.е. можно будет слить, даже если откатимся до момента создания этой ветки?
Цитата(Litkevich Yuriy @ 26.9.2010, 14:27)
вообще так не делается. Делается так:
Это штатный режим.
У меня получилось следующее. Разработка ведется на одной машине. Основная разработка происходит в linux, но к сожалению есть части которые будут доступны только в венде и их разработку приходиться делать в virtualbox'ой венде. Так вот я добавил класс в linux, сообразил, что его разработку нужно делать в венде (в linux сборка этого модуля отключена в конфигурации), с перепугу слил devel-ветку с master и сделал push, что бы я смог обновить вендовый devel-репозиторий.
Но в master остались файлы этого класса, я их убрал и опять закомител master.
А сейчас там две ривизии не к селу, не к городу:
* Убрали ClassName
* Добали ClassName
Вот и хочется от этого уйти.
Автор: Litkevich Yuriy 26.9.2010, 15:18
Цитата(BRE @ 26.9.2010, 17:52)
А как будет в командной строке?
не знаю, читайте
git help push, меня командная строка минимально интересует.
Цитата(BRE @ 26.9.2010, 17:52)
Т.е. можно будет слить, даже если откатимся до момента создания этой ветки?
конечно, т.к. в локальном хранилище свои ветки
Цитата(BRE @ 26.9.2010, 17:52)
с перепугу слил devel-ветку с master и сделал push, что бы я смог обновить вендовый devel-репозиторий.
надо было просто отправлять эту ветку, её бы вытянул в другом хранилище и слил как надо.
Цитата(BRE @ 26.9.2010, 17:52)
А сейчас там две ривизии не к селу, не к городу:
* Убрали ClassName
* Добали ClassName
Вот и хочется от этого уйти.
не понял конечную цель
П.С. при любых сомнениях делай ветку от текущей, текущую сбрасывай в последнее состояние. Так у тебя будет заначка в виде допветки.
у меня в некоторых хранилищах повисших веток с десяток. Есть не просят - пусть живут
Автор: BRE 26.9.2010, 15:31
Цитата(Litkevich Yuriy @ 26.9.2010, 16:18)
не понял конечную цель
Если смотреть лог, то выводится два комита:
26/09/10 09:10:00 * Убрали ClassName
26/09/10 09:00:00 * Добавили ClassName
25/09/10 22:00:00 * Важные изменения.
....
Одним комитом добавили, другим сразу убрали файлы для ClassName. И все это в master. Не эстетично, вот и хочу откатить master до "Важные изменения".
Цитата(Litkevich Yuriy @ 26.9.2010, 16:18)
П.С. при любых сомнениях делай ветку от текущей, текущую сбрасывай в последнее состояние. Так у тебя будет заначка в виде допветки.
у меня в некоторых хранилищах повисших веток с десяток. Есть не просят - пусть живут
Нужно нарабатывать новые привычки. Ок, спасибо.
Автор: Litkevich Yuriy 26.9.2010, 18:17
Цитата(BRE @ 26.9.2010, 19:31)
Одним комитом добавили, другим сразу убрали файлы для ClassName.
а нужно получить:
26/09/10 09:10:00 * Убрали ClassName
25/09/10 22:00:00 * Важные изменения.
Т.е. минус промежуточное? Ну в принципе почистить можно.
делаешь сейчас от мастера ветку, мастера сбрасываешь на - 26/09/10 09:10:00 * Убрали ClassName
делаешь копирование изменения (cherrypick) для состояния - 25/09/10 22:00:00 * Важные изменения.
тем самым в мастере получаешь:
26/09/10 09:10:00 * Убрали ClassName
25/09/10 22:00:00 * Важные изменения.
всё
П.С. всю эту процедуру (и особенно cherrypick) удобнее делать в GitTk
Автор: igor_bogomolov 26.9.2010, 18:19
Цитата(BRE @ 26.9.2010, 14:52)
Эээ... А как будет в командной строке?
$ git reset --hard <ревизия>
$ git push --force
Цитата(Litkevich Yuriy @ 26.9.2010, 16:18)
П.С. при любых сомнениях делай ветку от текущей, текущую сбрасывай в последнее состояние. Так у тебя будет заначка в виде допветки.
у меня в некоторых хранилищах повисших веток с десяток. Есть не просят - пусть живут
Зачем копить кучу не нужных веток. Иначе вывод git branch превратится в полотенце. Читать трудно, да и вообще приимуществ ни каких. После того как слил наработки в рабочую ветку, временный бранч нужно удалять
Автор: BRE 26.9.2010, 18:35
Цитата(igor_bogomolov @ 26.9.2010, 19:19)
$ git reset --hard <ревизия>
$ git push --force
Спасибо.
Уже сделал. На --force сразу посмотрел, просто было страшновато, как он там все откатывать будет и что с ветками произойдет, но сделав копию bare-репозитория приступил к экспериментам.
Заодно немного разобрался с reset --soft/--hard.
Автор: Litkevich Yuriy 26.9.2010, 18:55
Цитата(igor_bogomolov @ 26.9.2010, 22:19)
Иначе вывод git branch превратится в полотенце
а я его не далаю, консолью не пользуюсь, поэтому и проблем у меня нет
Цитата(igor_bogomolov @ 26.9.2010, 22:19)
После того как слил наработки в рабочую ветку,
а кто сказал что я их слил?
Автор: igor_bogomolov 26.9.2010, 19:14
Цитата(Litkevich Yuriy @ 26.9.2010, 19:55)
а я его не далаю, консолью не пользуюсь, поэтому и проблем у меня нет
Я наоборот, в основном пользуюсь только консолью. Изредка могу через креатор коммит сделать. Графическа оболочка гита так ни одна и не понравилась. Пользуюсь ими только если надо посмотреть "дерево" изменений.
Я за чистоту в проекте и репозитории.
Цитата(Litkevich Yuriy @ 26.9.2010, 19:55)
а кто сказал что я их слил?
Тогда тем более зачем они тебе? Получается у тебя много заброшенных устаревших веток, функционал которых тебе не нужен
Автор: Litkevich Yuriy 26.9.2010, 20:12
Цитата(igor_bogomolov @ 26.9.2010, 23:14)
функционал которых тебе не нужен
но может пригодится.
Была идея, отличная. В текущем окружении недоделок и косяков Qt её не удалось реализовать в короткое время.
Оставлена до лучших времён. Например, когда проект будет переносится на новую версию Qt.
Автор: igor_bogomolov 26.9.2010, 20:27
Для этого существуют системы управления проектами. У меня на работе, например, используется redmine.
Автор: Litkevich Yuriy 26.9.2010, 20:52
Цитата(igor_bogomolov @ 27.9.2010, 0:27)
Для этого существуют системы управления проектами.
смысла не понял.
Автор: igor_bogomolov 26.9.2010, 22:15
Цитата(Litkevich Yuriy @ 26.9.2010, 21:52)
смысла не понял.
Я вот про это
Цитата(Litkevich Yuriy @ 26.9.2010, 21:12)
Была идея, отличная. В текущем окружении недоделок и косяков Qt её не удалось реализовать в короткое время.
Оставлена до лучших времён. Например, когда проект будет переносится на новую версию Qt.
ИМХО - это не затача гита. Это нужно и удобно делать при помощи "системы управления проектам". В них ты можешь назначить себе задачу, описать её, приложить код, если надо, файлы. Создать некий "оперативный план", т.е. описать в какой версии проекта или при каких условиях у тебя этот функционал должен быть реализован. Это наглядно, ты всегда можешь видеть, что тебе нужно сделать. И централизованно этим управлять, если у тебя проектов много.
Я понимаю, что "системы управления проектам" не предоставляет никаких автоматизированных средств для добавления кода в проект. Но и преимуществ гита в твоём подходе я не вижу. Ты имеешь много веток, которые очень отстали от основного проекта. Возможно структура проекта у тебя тоже уже давно изменилась. И вливать эти наработки в существующий проект будет тяжело. К тому же таким захламленным репозиторием просто труднее управлять. Со временем ты будешь забывать о существующих задачах, даже если у них вменяемый коментарий и навешан таг.
В общем как то длинно получилось, и не уверен что сумел донести свою мысль. Просто для разных задач существуют свои инструменты, использование которых дает свои преимущества.
Автор: Litkevich Yuriy 27.9.2010, 9:17
Цитата(igor_bogomolov @ 27.9.2010, 2:15)
ИМХО - это не затача гита. Это нужно и удобно делать при помощи "системы управления проектам".
при чём здесь управление проектом?
Пишу код, работаю в системе управления версиями. Раз грабля, два грабля, стоп, оставим до лучших времён. Переключаюсь к началу ветвления, делаю новую ветку.
Всё. Ни какая система управления проектами здесь ни к месту.
Автор: molchanoviv 27.9.2010, 21:49
Цитата(igor_bogomolov @ 26.9.2010, 20:14)
Графическа оболочка гита так ни одна и не понравилась
а мне git gui понравился. Это тот который на tcl/tk
Автор: Litkevich Yuriy 28.9.2010, 10:41
Цитата(molchanoviv @ 28.9.2010, 1:49)
а мне git gui понравился. Это тот который на tcl/tk
просто лучше нету. А вообще он дико кривой, как и весь tcl/tk. Переключи раскладку переключи раскладку на русскую, и стандартные кнопки копирования/вставки работать перестанут.
Автор: igor_bogomolov 28.9.2010, 12:59
Цитата(Litkevich Yuriy)
переключи раскладку на русскую, и стандартные кнопки копирования/вставки работать перестанут.
Проверил на том же git gui - копирование/вставка работают в обоих раскладках.
Автор: molchanoviv 28.9.2010, 18:08
Цитата(Litkevich Yuriy @ 28.9.2010, 11:41)
А вообще он дико кривой, как и весь tcl/tk. Переключи раскладку переключи раскладку на русскую, и стандартные кнопки копирования/вставки работать перестанут.
Это чисто виндовая проблема. В лине все норм. А проблемы винды, шерифа, как говорится, не ...
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)