Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: GIT: как прочитать файл в любом комите без checkout  (Прочитано 5973 раз)
0 Пользователей и 1 Гость смотрят эту тему.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« : 02-04-2020 10:44 » 

Давненько ничего не писал. Хочу сделать небольшую серию записей на память о GIT. Это не для всех, только для автоматизаторов и извращенцев.

Получить хеш дерева по хешу комита $commit_hash:
$tree_hash=$(git cat-file -p $commit_hash | grep '^tree ' | sed -E 's/^tree\s+(\S+).*/\1/)

Прочитать файл $file_name:
$content=$(git cat-file -p $tree_hash:$file_name)
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #1 : 12-10-2023 07:00 » 

аффтар, пеши исчо!
Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 12-10-2023 10:24 » 

Можно ли считать извращенцем (или автоматизатором?  Здесь была моя ладья... ) человека, который хочет "почистить" папку проекта .git?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 12-10-2023 20:50 » 

У меня целая библиотечка на perl с такими штуками. Вплоть до ручного коммита.

Есть еще случай. Когда нужно держать на сервере кучку инстансов одного и того же приложения под одним юзером, можно сэкономить на кеше объектов гита. Инстанс у меня весит 50 ГБ. Кеш весит более половины от этого.

Т.ч., будет время, поделюсь.
« Последнее редактирование: 12-10-2023 20:56 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 12-10-2023 20:57 » 

Можно ли считать извращенцем (или автоматизатором?  Здесь была моя ладья... ) человека, который хочет "почистить" папку проекта .git?
Что значит "почистить"? Если ему всегда грязно — ну пусть почистит. А есть это "ухудить", то надо смотреть конкретный случай. Обычно это да, извращение.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #5 : 12-10-2023 21:23 » 

Обычно это да, извращение.

Ок, тогда "я удачно зашёл" (с)

Насколько я понимаю, в .git находится вся исторя изменений, но если она мне не нужна? Те если вдруг, то я могу на сервере посмотротеть.
А так папка 12 ГБ, накой она мне нужна?

А есть это "ухудить"

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

зы "Почистить" - в смысле, например, удалить историю изменений последних двух лет, оставив скажем последнюю неделю, ну, или месяц.

зы зы Если это возможно
« Последнее редактирование: 12-10-2023 21:25 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 13-10-2023 00:54 » 

Сперва надо терминологию устаканить. Если я правильно понял, ты историей называешь дерево коммитов, то тут можно сделать клон с ограниченной глубиной (--depth). И да, это извращение и может сослужить медвежью услугу. Например, ветки могут оказаться не на общем дереве, а на отдельных несвязанных деревьях. Так же не удастся сделать blame (покажет в рамках доступной локально информации) и вообще трудности с ретроспективой (люблю делать git log --patch и git log -L<start_line>,<stop_line>:<file>).

Моему проекту 12 лет и порой дохожу до глубины глубин, чтобы понять, откуда эта хрень тут взялась и в чем ее смысл. Переводил несколько лет назад на git с svn без потери истории.
А вот сабрепы со "статикой" (графика, локализация, и всякие бинари) — тут согласен, можно деинсталить сабрепу, вычистить руками ее кеш и обновить с указанием глубины (git submodule update --init --depth <N>).
И очень не советую использовать lfs: десять раз подумать, прежде чем использовать. Много минусов и противопоказаний. Я все свои 50 ГБ без lfs держу. Вот если одни и те же бинари часто изменяются, то можно же подумать одиннадцатый раз.
« Последнее редактирование: 13-10-2023 02:06 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #7 : 13-10-2023 08:50 » 


Ок, тогда "я удачно зашёл" (с)

Получается, это я удачно реанимировала, раз кому-то это актуально )))))

Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #8 : 13-10-2023 09:44 » 

Ром, всё понял. Спасибо. Оставлю так.

Люсь, персонально спасибо. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 13-10-2023 09:56 » 

Достоинства git в том, что каждый клон может выступать как основная копия. Если, конечно, он склонировал все, что нужно для автономности. А еще можно в одной и той же репе сделать больше одного дерева, но надо только чтобы они по именам веток не пересекались. Хотя, какое оно к черту дерево. Это граф полноценный, хоть и с корнем.

Кстати, Жень, а у вас main, master, develop или trunk?  Ага
« Последнее редактирование: 13-10-2023 09:58 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Люсь
Команда клуба

ru
Offline Offline
Пол: Женский

« Ответ #10 : 13-10-2023 10:14 » 

Ром, всё понял. Спасибо. Оставлю так.

Люсь, персонально спасибо. Ага

персональное на здоровье ))))

Записан

Посторонним просьба не беспокоить!
-------------------------------------------------
O (I) Rh +
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #11 : 13-10-2023 14:21 » 

Кстати, Жень, а у вас main, master, develop или trunk?  Ага

master

Дело в том, что я локально git ваще не юзаю. В основном он (мне) служит для передачи данных (commit -> push) на сервер для хранения и компиляции, изредка для merge, когда коллега в проекте участвует.
Опять же, в этом случае я просто делаю pull и всё.

Короче, примерно как Ворд в качестве редактора тхт файлов.

Раньше у нас был локальный серевер компиляции и SVN, лет несколько назад перешли на Azure, которая больше git "любит", ну и вот...
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 13-10-2023 18:48 » 

Понятно. Значит будем писать заметки про гит )
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #13 : 14-10-2023 11:53 » new

Джон, RXL, а я вот пользуюсь гитом только локально, логин - почта. И однажды мне было нужно пушить копию фрилансерскому работодателю. Столкнулся с проблемой - там логин свой. Помнится, не разобрался, как при пуше на два репозитория одновременно использовать разные логины. Это возможно?

Тогда в виде костыля свой логин сделал таким же, а после окончания сотрудничества вернул свой. Локально мне, по большом счёту, пофиг, но вот сейчас вспомнил этот осадочек Улыбаюсь
Использую оболочку TortoiseGit , вручную не консолюсь
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 14-10-2023 17:41 » 

Удаленные репозитории именуются remotes. Их может быть сколько угодно и у каждого может быть свой протокол связи, а, соотв., и авторизации. Дефолтный зовется origin.

git remote --help — чтобы понять, как создать и удалить.
git push <remote_name> <local_branch_name>:<remote_branch_name> — чтоб отослать свою local_branch_name на удаленную remote_branch_name.
git push <remote_name> <branch_name> — это если имена веток совпадают

Напрямую, из консоли, намного все проще и понятнее, конечно, если знаешь команды. Там встроенный help: git <command> --help — читай на здоровье!
Черепашка разрабатывалась под SVN и потому она такая странная с GIT. Мы на работе отдельную доку писали для ее пользователей, чтобы ни шагу в сторону от инструкции.
И вот от всего этого пользователи говорят, что GIT — это сложно. На самом деле, GIT — это очень просто, если с точки зрения архитектуры. Пользовательский интерфейс, да, не очень, даже в командной строке.

Насчет простоты архитектуры. Загляните в .git/config — там много интересного. Тот же ini, только чуть-чуть расширен в именах секций.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #15 : 14-10-2023 18:00 » 

спасибо, поэкспериментирую при случае. Хорошо, что способ есть

так я и не говорил, что гит сложный, если знаючи ) То, что я обычно с ним делаю, всё несложное. Но, видимо, оболочка не всё позволяет
Записан

RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 14-10-2023 22:48 » 

Черепашка достаточно позволяет, но ее опции разбросаны, скажем так, не достаточно структурировано и, даже зная, как пишутся команды в консоли (а все в итоге к ним и сведется), трудно понять, какие галочки включить, а какие выключить. В любом случае, лучше сперва понять на низком уровне, а потом прийти к пониманию, как эти галочки на него мапируются.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines