LINUX.ORG.RU

Вопрос про Git. Он, правда, позволяет так легко потерять данные?

 , ,


9

7

Я тут на пробу пытаюсь парочку репозиториев перевести с привычного Mercurial на инопланетной логики Git в надежде разобраться с последним. И, ладно бы только логика работы, к ней можно привыкнуть. Но я уже несколько раз терял свои наработки с Git, чего с Mercurial не было никогда за всю историю. Пару раз терял так, что концов не найти, но вот сейчас всю цепочку отследить попробовать можно. Посему и прошу комментариев народа опытного.

Суть такая. Есть поднятый весной и так и не развитый репозиторий https://github.com/Balancer/bors-3rd-bootstrap3

Сейчас решил перекинуть туда код (со всей историей) по работе с bootstrap из ядра фреймворка, которое лежит в Mercurial на Bitbucket. Благо, есть такая прекрасная штука, как hg-git. Перенос файлов со всеми изменениями из репы в репу под Git возможен, но выглядит это чудовищно. Посему, решил вынести сперва отдельный маленький локальный репозиторий Mercurial с этими файлами, к нему подтянуть дерево Git, смержить средствами Mercurial и запушить в репу Git.

Сделать это было чуть дольше, чем написать предыдущий абзац, но работа небольшая, всё было проведено легко и непринуждённо. На GitHub'е появился объединённый модифицированный код. Всё прекрасно.

Дальше начинаются вещи непонятные. Я работал также с другой машины, там были мелкие правки (типа composer.json в корне). Решил всё объединить. Точную последовательность не помню, но, скорее всего обычные git pull && git push на другой машине.

После этого, чтобы точно убедиться, что изменения синхронизированы, провёл после git fetch (там --bare) на первой машине git push... И увидел странное:

To git@github.com:Balancer/bors-3rd-bootstrap3.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:Balancer/bors-3rd-bootstrap3.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

Ну, что, Google в помощь, и первый же совет, который нахожу — воспользоваться ключиком «-f». Не вопрос. У нас же DVCS, даже если что-то не так, всегда можно откатить и т.п. Логика, привитая Mercurial'ом, ага...

Ничтоже сумняшеся, обновляю composer на другой машине и... вижу, что всех изменений, которые я переносил в эту репу нет. Удивляюсь. Вызываю git log --graph (вот почему в git по дефолту все команды такие длинные и несуразные?) — чистота. Всё в превозданном виде семимесячной давности, без переноса нового кода с основного репо.

Лезу на GitHub — и вот тут становится совсем интересно. Те изменения, что я накатывал и которые там были, теперь там отсутствуют o_O

Так вот, вопрос. Это я их не вижу, или это в Git так легко, одним движением руки можно убить безвозвратно серию коммитов с историей? o_O Если первое — то вопрос, как вернуть эти изменения. В основной репе я их уже успел прибить, но всегда можно откатить и повторить перенос. Придётся повозиться, но задача не столь сложная. Но хочется разобраться. Ибо если в Git так легко потерять изменения, то как с ним вообще люди живут?

★★★★★

Последнее исправление: CYB3R (всего исправлений: 1)

Ответ на: комментарий от KRoN73

Особенно наличием бесплатных закрытых репозиториев. Один минус существенно снижает его шансы — нет такой развитой инфраструктуры, в т.ч. социальной, как в GitHub.

гитхаб, и инфраструктура вокруг него, отрабатывают свои $7/mo на все сто. даже в голову не приходило жрать битбакет-говнище из-за бесплатности.

waker ★★★★★
()
Ответ на: комментарий от KRoN73

В этом случае то, чем нужно поделиться, является общественным достоянием и может быть смело выложено на всеобщее обозрение.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

То есть у тебя нет документов «только для узкого круга друзей», которые те не хотят светить среди всех?

В общем, как ни крути, а твой случай весьма уникальный :)

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от KRoN73

Ничуть не уникальный.

Уникальный — это если бы были какие-то скрытные тугаменты, которые можно светить только в кругу небольшого количества лиц.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от waker

гитхаб, и инфраструктура вокруг него, отрабатывают свои $7/mo на все сто. даже в голову не приходило жрать битбакет-говнище из-за бесплатности.

Но даже за деньги у них нет анлим приват-репов.

Deleted
()
Ответ на: комментарий от insider

Кому нужны все эти социальные свистоперделки (если про них речь)?

Удобно, когда инфраструктура... Вот сейчас перехожу в своих проработках распределённых статических сайтов с Zim на Markdown-разметку. Есть редакторы, типа dillinger.io, которые позволяют прямо с GitHub открыть Markdown-файл, визуально отредактировать и туда же закоммитить. А всё, потому что на GitHub хороший API с заточкой под социальность — OpenID, коллективная работа и т.п.

KRoN73 ★★★★★
() автор топика
Ответ на: комментарий от Deleted

нет анлим приват-репов.

возможно, что и так.

waker ★★★★★
()
Ответ на: комментарий от KRoN73

прямо с GitHub открыть Markdown-файл, визуально отредактировать и туда же закоммитить

по-моему, это херня. Раз уж использовать Markdown, то писать сразу на нем в редакторе. Потом, при желании, можно проверить в каком-нибудь dillinger, но лучше все-таки локально. Например, с помощью нативного markdown или hugo.

Bitbucket поддерживает коллективную работу, это ведь сервер репозиториев как-никак, ssh ключи и все такое. А свистоперделки только мешают работе, по-моему.

Но Github популярнее, поэтому все чаще на него смотрят.

insider ★★★
()
Ответ на: комментарий от waker

Это если тебе нужны все эти инфраструктуры. А если нужен просто хостинг с вики и трекером, то битбакет намного удобнее.

vurdalak ★★★★★
()
Ответ на: комментарий от Deleted

За большие деньги у них есть возможность создания приватного гитхаба на вычислительных мощностях заказчика.

aedeph_ ★★
()
Ответ на: комментарий от vurdalak

Это если тебе нужны все эти инфраструктуры. А если нужен просто хостинг с вики и трекером, то битбакет намного удобнее.

чето не замечал такого. примеры есть какого-то мега-удобства?

waker ★★★★★
()
Ответ на: комментарий от waker

чето не замечал такого. примеры есть какого-то мега-удобства?

Это же ЛОР. Тут не используемые фичи мешают даже если они просто есть! Ибо НЕНУЖНО!!1

Deleted
()
Ответ на: комментарий от waker

Ну как минимум там можно видеть список коммитов вне зависимости от ветки. Красивое отображение диффа. Нет мусора вроде всяких пульсов, социальных кнопок и прочего, что захламляет инферфейс. Мне нравится гитхаб как соцсеть, но в кодохостинге всё это только мешает.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

@mironov_ivan ванга!

Ну как минимум там можно видеть список коммитов вне зависимости от ветки.

самая ненужная фича, о которой я когда либо слышал.

waker ★★★★★
()
Ответ на: комментарий от waker

Эта штука и отсутствие поддержки меркуриала (или уже есть?) в своё время помешали мне выбрать гитхаб в качестве хостинга. И это при том, что собственно гит умеет выводить список всех коммитов. Но на гитхаб такой пустяк почему-то не могут добавить. Как без этого следить за развитием проектов?

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

отсутствие поддержки меркуриала

и это хорошо. меркуриал не нужен.

Но на гитхаб такой пустяк почему-то не могут добавить.

это ты как определил что не могут? может просто не хотят всякие ненужности добавлять?

Как без этого следить за развитием проектов?

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

да, если что, я получаю нотификации изменения проектов, в которых я задействован, посредством подписки на изменения по email. в т.ч. на битбакете. и еще раз повторюсь — ни разу мне этот дефолтный hg log не понадобился. всегда делаю hg log -b .

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от waker

это ты как определил что не могут? может просто не хотят всякие ненужности добавлять?

Но это решается добавлением одной кнопочки.

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

Мне и то, и другое. Как разработчик я хочу дать возможность другим разработчикам видеть, когда что-то в проекте обновилось. Не в текущей ветке, а именно в проекте. Как пользователь я хочу получать рсс-новости о новых коммитах, опять же во всех ветках. Собственно, гитхаб это всё-таки больше соцсеть, чем хостинг. Поэтому такие штуки как слежение за проектами там должны быть больше развиты, а на деле выходит наоборот.

Правда, там есть некий pulse, в котором я так и не разобрался. Возможно, он чем-то заменяет мой юзкейс.

vurdalak ★★★★★
()
Ответ на: комментарий от waker

и еще раз повторюсь — ни разу мне этот дефолтный hg log не понадобился. всегда делаю hg log -b .

И? Тебе эта фича не нужна, поздравляю. Но всё равно её там нет, поэтому для меня гитхаб не является выбором хостинга ни сейчас, ни в обозримом будущем.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Мне и то, и другое. Как разработчик я хочу дать возможность другим разработчикам видеть, когда что-то в проекте обновилось.

а ты у других разработчиков спрашивал, нужно ли им это? чем email-рассылка не подходит? чем портянка hg log со всех бренчей в куче лучше этого?

Как пользователь я хочу получать рсс-новости о новых коммитах, опять же во всех ветках.

через rss неудобно. попробуй email, говорю тебе - это реально удобно.

Правда, там есть некий pulse, в котором я так и не разобрался. Возможно, он чем-то заменяет мой юзкейс.

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

waker ★★★★★
()
Ответ на: комментарий от vurdalak

И? Тебе эта фича не нужна, поздравляю. Но всё равно её там нет, поэтому для меня гитхаб не является выбором хостинга ни сейчас, ни в обозримом будущем.

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

waker ★★★★★
()
Ответ на: комментарий от waker

а ты у других разработчиков спрашивал, нужно ли им это?

У тех, с которыми работаю именно я, спрашивал конечно.

чем email-рассылка не подходит?

Тем что она не RSS?

через rss неудобно. попробуй email, говорю тебе - это реально удобно.

Пробовал. Неудобно. Мне проще отдельно запустить RSS-клиент, обновить инфу по всем проектам и прочитать её, а не вылавливать по коммиту в минуту по мере прихода.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

не понял, зачем что-то вылавливать? у тебя на десктопе нет нотификаций о новых емылах? фильтров в почтовом клиенте нет? можешь описать, для чего и как ты используешь rss?

waker ★★★★★
()
Ответ на: комментарий от waker

у тебя на десктопе нет нотификаций о новых емылах?

В том-то и дело, что мне они не нужны. Я проверяю рсс утром и вечером. По конкретным лентам смотрю и отмечаю как прочитанные. Нужные ссылки открываю одним хоткеем, ибо они стандартизированы для рсс, а не лежат в каком-то месте письма.

Если мне будет каждую минуту падать нотификация о письме, и я буду отвлекаться на чтение чего-то типа «updated german strings», то я никогда не поработаю.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

тебе очень хочется убедить всех что github это панацея

вовсе нет. только в том, что github для git лучший хостинг на данный момент. и все кроме тебя это знают. а ты придумал какую-то левую фичу, не нужную никому кроме тебя, и пытаешься убедить всех, что без нее нельзя жить. но приведи реально хоть один юзкейс? не такой типа «а я вот хочу!» - а с аргументацией, что ты с этим делаешь, и какая от этого польза. это может быть полезно и мне, например, узнать новый workflow, и тебе, узнать как жить без этой фичи например.

waker ★★★★★
()
Ответ на: комментарий от vurdalak

Если мне будет каждую минуту падать нотификация о письме, и я буду отвлекаться на чтение чего-то типа «updated german strings», то я никогда не поработаю.

так и запишем, пользоваться фильтрами в email-клиентах не умеет.

waker ★★★★★
()
Ответ на: комментарий от waker

только в том, что github для git лучший хостинг на данный момент.

Я так и сказал. Тебе кажется, что все фичи кроме используемых тобой не нужны.

и пытаешься убедить всех, что без нее нельзя жить

Кого «всех»? Я сказал, что лично я не могу пользоваться гитхабом из-за отсутствия этой фичи. Мне абсолютно поровну, нужны ли она другим. Про пользу уже рассказал, но ты сделал вид, что все работают в пределах одной волшебной ветки и не хотят видеть свой проект в целом.

vurdalak ★★★★★
()
Ответ на: комментарий от waker

Ну расскажи, что нужно настроить. Если делать их сразу «прочитано», то я потом не разберусь, какие надо посмотреть, а какие уже видел.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

Про пользу уже рассказал

можно ссылку на рассказ? я мог забыть просто.

Тебе кажется, что все фичи кроме используемых тобой не нужны.

вовсе нет. я с радостью выслушаю, зачем нужна конкретно эта.

Ну расскажи, что нужно настроить. Если делать их сразу «прочитано», то я потом не разберусь, какие надо посмотреть, а какие уже видел.

достаточно раскидать нотификации от разных проектов в разные папки, и отключить нотификации о приходе мыла в эти папки. потом читать их _только_ тогда, когда ты их разгребаешь — в точности как ты это делаешь с rss.

waker ★★★★★
()
Ответ на: комментарий от waker

достаточно раскидать нотификации от разных проектов в разные папки, и отключить нотификации о приходе мыла в эти папки. потом читать их _только_ тогда, когда ты их разгребаешь — в точности как ты это делаешь с rss.

А как открывать новость, о которой пришло уведомление? При том что в рсс у меня сейчас десяток реп гитхаба, пяток битбакета, пара форумов и блогов.

можно ссылку на рассказ? я мог забыть просто.

Вопрос про Git. Он, правда, позволяет так легко потерять данные? (комментарий)

я с радостью выслушаю, зачем нужна конкретно эта.

Смысл? Нужность это понятия субъективное. Зачем эта фича именно мне, я уже рассказал. Мне безразлично, пользуется ли ею кто-то за пределами моих проектов. У нас свободная планетка, пусть выбирают себе хостинг какой хотят.

vurdalak ★★★★★
()
Ответ на: комментарий от vurdalak

А как открывать новость, о которой пришло уведомление?

ты же только что писал, что ты _не хочешь_ получать уведомления?

вот же:

Если мне будет каждую минуту падать нотификация о письме, и я буду отвлекаться на чтение чего-то типа «updated german strings», то я никогда не поработаю.

При том что в рсс у меня сейчас десяток реп гитхаба, пяток битбакета, пара форумов и блогов.

у меня в email тоже.

Вопрос про Git. Он, правда, позволяет так легко потерять данные? (комментарий)

не нашел по этой ссылке ответа на вопрос. ну и ладно. и так все ясно было с самого начала.

waker ★★★★★
()
Ответ на: комментарий от waker

ты же только что писал, что ты _не хочешь_ получать уведомления?

Я писал что не хочу получать уведомления о новом письме по мере их появления. Но я 1-2 раза в день читаю подборку. В рсс в самом протоколе забита ссылка на полный вариант «новости». Я получил заголовок и текст, потом открыл ссылку прямо из клиента одним хоткеем. С e-mail так не получится, у письма в протоколе нет понятия «ссылка на полную версию». Нужно открыть само письмо, найти в нём ссылку (она будет разная в зависимости от движка, который эти письма генерил) и нажать её мышкой.

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

vurdalak ★★★★★
()
Ответ на: комментарий от waker

Это как бы подразумевается. Мы же на лоре, тут нет настоящих специалистов. Только школьники, умственно отсталые, тролли и домохозяйки.

vurdalak ★★★★★
()
7 апреля 2015 г.
Ответ на: комментарий от menangen

особенно, если проект коммерческий

Если проект коммерческий (читай - закрытый), то его исходникам вообще нечего делать на стороннем сервисе третьих лиц... Иначе ты ССЗБ!

Indexator ★★★
()
Последнее исправление: Indexator (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.