GIT commit NPE
95 subscribers
298 photos
5 videos
36 links
Кодинг, linux, git, SQL, regex, board games, ножі, треш-індастріал.
Download Telegram
Доречi.

Акції проти мовного законопроекту #2362 "слуги у...народу" Бужанського пройдуть:

- в Дніпрі в середу 15.07 о 19:00 біля офісу партії "слуга народу", вул. Європейська 20
https://www.facebook.com/events/995357474232979

- в Днiпрi в четвер 16.07 о 9:00 біля ОДА
https://www.facebook.com/events/3218376101539294

- в Києві 16.07 о 9:00 біля ВР
https://www.facebook.com/events/307160920652509
Досить немала частина тих, хто працює з git, має хибне уявлення про термін "гілка" (branch).

Гілка (а точніше, ім'я гілки) - це динамічний вказівник на коміт. Все.

Чому динамічний? Коли на гілці з'являється новий коміт, вказівник автоматично переміщується на нього. Зазвичай гілка не вказує на один і той самий коміт впродовж усього свого існування (так, таке може бути, але лише в окремих випадках).
На малюнку "master" - це вказівник на коміт a11 (коміти позначені умовно - для спрощення), "feature-1" - вказівник на c4, а "feature-2" - вказівник на b5.
Більшість команд, що мають на увазі коміт, з задоволенням приймуть ім'я гілки: наприклад, git diff.
Але навпаки - не завжди: наприклад, git checkout. Checkout на коміт спрацює, та зробить він трохи не те, що вам хотілося.

А ось якщо ми бажаємо зробити постійний вказівник на коміт, але звичайний хеш нас чомусь не задовольняє, то ми можемо використати тег. Та це вже зовсім інша історія...

#git
А ось і "Perseverance" пішов. Привіт Марсу хай передає.

"Perseverance/Mars 2020" - це місія на Марс, що забезпечуться ракетою-носієм "Atlas V". Марсохід та коптер дістануться червоної планети у лютому 2021-го.
Трохи міських ДЮЄ.
Житловий масив Червоний камінь, Дніпро.
#places
Ахрана Git, атмєна
або
Як вилучити з репозиторію зайві файли, що були додані декілька комітів тому

Минулого тижня товариш з сусідньої команди звернувся з запитанням.

Дано
1. Коміт, до якого помилково потрапив зайвий файл. Також в ньому наявні інші (потрібні) зміни.
2. Після нього зроблено ще декілька корисних комітів.

Треба
Вилучити зайвий файл з історії.

Що нам НЕ підійде
1. Просто видалити файл та зробити коміт.
2. Revert: git revert хешКоміту.
3. Amend: git commit --amend.
4. Hard reset: git reset --hard хешКоміту.

#git
...Чому не підійде?
1. При "просто видаленні" файл зникне з файлової системи, але залишиться в історії.
2. Revert, як і в п. 1, не прибере зайвий файл з історії, а ще ми втратимо ті потрібні зміни, що були закомічені разом з нашим зайвим файлом. Так, ці зміни можна буде отримати досить законними шляхами, але нашо ті танці? Все одно історія не буде змінена, що унеможливлює використання цього способу.
3. Amend виправляє лише останній коміт. У нас проблема не в останньому коміті, а глибше.
4. Після хард резету ми втратимо усі корисні коміти, що зроблені після проблемного, а також ті потрібні зміни, що знаходяться у проблемному.

Що ми будемо робити?
Ми будемо робити інтерактивний рібейз.
Інтерактивний рібейз - це один зі способів переписування історії. Він дозволяє редагувати коміти, переміщувати, зливати їх і т.ін. При цьому гілку ми будемо перебазовувати саму на себе.

Як ми будемо це робити?
Спочатку вилучимо зайвий файл та створимо з цього коміт. Потім запустимо інтерактивний рібейз на коміт, що передує проблемному коміту. Перемістимо коміт-рятівник так, щоб він знаходився одразу після проблемного, та вкажемо опцію "squash", тобто зіллємо з попереднім, проблемним. В результаті цього злиття в один і той самий коміт потраплять обидва діффа - той, де зайвий файл створюється, та той, де він видаляється. Повна анігіляція файлу. Як матерія та антиматерія.

#git
Вже сьомий рік я захоплююся ножами.

Навесні 2014-го, з початком окупації Криму та сходу та ризиком появи ватної тітушні в нашому регіоні, з'явилася необхідність мати при собі в швидкому доступі дозволений інструмент, що в критичній ситуації, можливо, врятує життя та здоров'я. Після вивчення купи матеріалу щодо різновидів, ТТХ, законності придбання та носіння, взаємовідносин з правоохоронцями, першим був обраний склАдень (складний ніж) Spyderco Tenacious. А потім закрутилося - склАдні, фікседи (ножі з фіксований лезом, НЕ-склАдні), навчання поводитися з ножем, захист проти ножа, інтерес до мачете та кукрі і т.ін. Це переросло у хоббі, і зараз ніж для мене - це корисний та обов'язковий побутовий інструмент, що виконує досить багато функцій.

Але інтерес саме до метання ножів з'явився відносно нещодавно, десь восени 2019-го. Форуми, статті, матеріали з ФБ... Теорія - то добре, але теорія без практики - ну, ви розумієте... Взимку було придбано пару "інструментів", які пролежали аж дотепер. Все руки не доходили.
І ось в останні вихідні цього літа сезон нарешті відкрито. Досить раптово, просто поклав оті дві залізяки до рюкзака та пішов подалі від людей.

І почалося... Півтори години жбурляння залізяк та море задоволення. Приблизно 200-250 кидків.

#knives
Голок - різновид лезового інструменту, широко розповсюдженого в Індонезії у якості як господарчого, так і бойового знаряддя.
Це найменування так само використовується для подібного виду зброї в Малайзії, де крім того термін "Голок" є взаємозамінним для більш довгого і шіроколезвійного виду холодної зброї Паранг. Також, Голок відомий тим, що його форму взяли за основу для мачете британської армії, яке використовують з початку 1950-х років.
(c) bbknives.com

#knives
Жбурляння залізяк, серія 2

Перші вихідні осені, трохи хмарне небо, вже знайоме віддалене місце з майже повною відсутністю людей.

Нові відчуття, коли нарешті починаєш розрізняти, як саме ніж вислизає з долоні - саме вислизає, а не вилітає.
Три з половиною години задоволення з перервами на чай.

Спробував зняти, як саме залізяки зустрічаються з ціллю. Відео трохи перетисну вбудованими інструментами Телеграму та додам наступним постом.

...А вкінці з-за хмар нарешті визирнуло сонце.

#knives
Media is too big
VIEW IN TELEGRAM
Жбурляння залізяк, процес.
#knives
2^8 = 256й день у році. А це означає що?
З Днем програміста усіх причетних!
Жбурляння залізяк, серія 3 (фото)
#knives