LINUX.ORG.RU

А расскажите про Git

 ,


2

2

Нет, не про самую-самую базу (git init, clone, config, status, add, commit, log, branch, merge, pull, push, diff), а про более тонкие моменты, которые сильно облегчают жизнь. Например про хуки. Что используете в своих проектах? А на работе? Соблюдаете ли Conventional Commits или вообще перешли на Gitmoji и теперь у вас там ползают 🐛 и летают 🚀? Или используете что-то более строгое, а может своё? Может кто-то версию софта с гита тянет и в софтину вшивает системой сборки. Или наоборот используете его максимально деревянно чтоб откатывать изменения. И так далее.

★★★★★

Последнее исправление: peregrine (всего исправлений: 1)
10 сентября 2026 г.

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

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

Norgat ★★★★★
()

Пользуюсь этими командами:

git log --name-status --oneline main..HEAD

git diff main...HEAD

Первая показывает коммиты от main до текущей ветки. Вторая - изменение от main до текущей ветки. Это совпадает с тем, что GitLab делает в MR: показывает только свои изменения.

Обратите внимание на количество точек. В первой команде их две, во второй - три. Это не случайно. Более того: одно и то же количество точек выполняет разную роль в обоих командах. Запоминать эту дичь не обязательно, но сохранить ссылки полезно: [1], [2].

[1]: https://matthew-brett.github.io/pydagogue/git_log_dots.html

[2]: https://matthew-brett.github.io/pydagogue/git_diff_dots.html

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 2)

Вместо обычного git status использую эту команду:

git status -bsu

Данная команда выводит статус в простом коротком формате (-s), каждый файл отдельно (-u), с веткой (-b).

Короткой формат ближе к традиционной юниксовой договорённости «1 линия = 1 файл». Вывод можно использовать для навигации (увидел файл - скопировал или открыл его), можно скормить его в пайп другой программе, можно на месте сделать выборочный git add/checkout.

kaldeon ★★
()

«Squash» можно сделать множеством способов. Мне по нраву такой:

1. Запомнить текущий коммит (скопировать, записать куда-нибудь и т.д.)

2. Создать чистую ветку. Возможно, перезаписать текущую.

3. git merge --squash f5eb2b6 (коммит, который запомнили ранее)

kaldeon ★★
()

Но вообще, лучше всего облегчает жизнь мощная интеграция с текстовым редактором. Когда нет такого, что одну вещь делаешь через командную строку, вторую через текстовый редактор, третью через гитлаб, четвёртую через ещё какую-нибудь стороннюю хрень. Вот эта фрагментация и context switching, когда надо постоянно переключаться и нигде не чувствуешь себя уверенно, мне лично мешает. Мой идеал - вся работа происходит в одной программе с однородным интерфейсом ко всем подсистемам (включая git).

(Я лично использую командную строку для всего и Acme [1] как редактор-терминал в одном флаконе.)

[1]: https://research.swtch.com/acme

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

> Ну да, diff.noprefix ещё, потому что a/ и b/ придумали конченые.

Спасибо, не знал про это.

Постоянно вижу путь и хочу открыть одним кликом, но префиксы мешают.

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

Дрю Деволт поехавший. И да, он полный идиот. Чисто для примера, когда он только запилил этот sourcehut, он после каждого минорного падения github начинал везде бегать по комментам и рассказывать, какой гитхаб ненадежный, как его разрабы ничего не умеют и т.п. Что видимо кому-то надоело, и этот sourcehut положили ддосом на пару недель. В процессе по истеричным комментам Дрюшки выяснилось, что он не позаботился ни об отказоустойчивости (у него все крутилось в одном датацентре на одном самосборном сервере, как его вообще в колокейшн пустили), ни о быстроте развертывания. А его способом решения проблемы стал переезд из американского в европейский ДЦ.

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

Еще, запилив sourcehut, Дрюшка начал клясться и божиться, что никогда никого там не заблокирует. Примерно через год после этого в ToS сервиса начали появляться пункты о запрете крипты, персональном запрете для каких-то типов, запиливших не понравившийся Дрюшке RFC, сейчас вот нарисовался полный запрет нейронок. Даже не как у Codeberg, а вообще полный. Закоммитил в проект что-то нейронкой - нафиг с пляжа. Кто знает, что там еще ему в голову взбредет.

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

но зато в соответствии с кодестайлом.

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

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

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

Огонь и молния! Давно считаю его виардой ещё по прошлым проектам (яп какой-то для нетакусиков).

ant1
()
Ответ на: комментарий от pihter

Ты прав и не прав наполовину.

  1. Кодестайл придумали, чтобы люли писали в едином стиле, в следствие чего код становится однородным и его легко и быстро читать. Мне как-то доводилось читать код, написанный разными людьми с разным представлением о прекрасном. (Там было всё: и императив, и ООП, и функциональщина, и С-стайл) Читать это было очень тяжело именно по причине разнородности. Каждая отдельная часть была даже изящна. Так что придумали его умные люди.
  2. А на счёт CI прав. Ошибка должна быть очевидна для человека, вплоть до указания строки и места. В тривиальных случаях по типу кавычек или около того должен быть форматтер, который сам всё сделает и не будет людям голову компостировать за зря.
bbc69
()

У меня там чаще всего «.», когда забыл чё делал, но коммит нужно сделать

anonymous
()
Ответ на: комментарий от Lrrr

Что вы думаете про https://dmpwn.info/ ?

Этот товарищ-таки подтвердил то, что там написано, но «это всё враги написали»: https://drewdevault.com/blog/Addressing-harassment/

shdown ★★
()
Последнее исправление: shdown (всего исправлений: 1)
  • Markdown
Пустая строка (два раза Enter) начинает новый абзац. Знак '>' в начале абзаца выделяет абзац курсивом цитирования.
Внимание: прочитайте описание разметки Markdown.
Используйте Ctrl-Enter для размещения комментария