Easyelectronics.ru

Электроника для всех
Текущее время: 23 янв 2021, 00:41

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: git - embed: teach me, please
СообщениеДобавлено: 25 ноя 2019, 22:40 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 621
Решил я таки разобраться с git. Почитал - вроде понятно в общем виде. Доставило про ветки и версии и прочее - огонь! Но не пойму, как все это прикрутить к моим частностям?
Проекты мне нужны на 3 машинах, причем на рабочей - оно у меня основательно сокрыто (true crypt), чтобы нельзя было слить это с жесткого диска (долгая история). Неважные файлы синхронизирую yandex диском, важные - mega.nz (оно с шифрованием). Понимаю, что грабли те еще, но так оно у меня работает. А вот теперь решил git прикрутить. Теперь кроме этих велосипедов, еще и git будет синхронизироваться))) Проекты основные у меня под keil, но есть и другие - под PC, web, что-то даже под абдурину лежит.

Как на практике народ синхронизирует embed проекты? Только код? А сами файлы проекта? А если я в библиотечные файлы внес изменения (накатил другую версию) или в настройки проекта внес изменения? Я привык, что прихожу домой, а у меня тут все уже обновилось - открывай и работай. Если таки пользоваться облаками - сменил ветку, файлы все сменились - херрак полетело облако обновляться? нехорошо. Научите пожалуйста.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 25 ноя 2019, 23:33 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3051
Что такое "файлы проекта"? Разбирайтесь с вашей неназванной IDE, где и что она сохраняет. Большинство вполне себе хранят в тексте и поддерживают интеграцию с git. А то и вовсе Makefile достаточно (и по хорошему так и должно быть) в качестве "файла проекта".

Цитата:
Как на практике народ синхронизирует embed проекты?

git push

Цитата:
А если я в библиотечные файлы внес изменения (накатил другую версию) или в настройки проекта внес изменения?

Это уже системы сборки и управления зависимостями нужны для такого. Чудес не бывает, порядок надо поддерживать самому.

Цитата:
Если таки пользоваться облаками - сменил ветку, файлы все сменились - херрак полетело облако обновляться?

Вообще не понятно о чем речь.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 25 ноя 2019, 23:39 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 4910
Откуда: КЧР, поселок Нижний Архыз
Руками все синхронизируется. Когда считаешь, что пора коммит накатить, делаешь git commit. Как считаешь, что пора на гитхаб и т.п. залить, делаешь git push.
Лучше сразу кучу "корзин" завести, а то был у меня негативный опыт с гуглокодом, который внезапно сдулся... Теперь у меня git push кидает код в гитхаб, гитлаб, битбакет и на сосфорж.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 29 ноя 2019, 00:27 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 621
Цитата с git-scm.com - Важно отметить, что только указание этого флага (--hard) делает команду reset опасной, это один из немногих случаев, когда Git действительно удаляет данные.

Сколько не бился сегодня, так и не смог удалить коммит. То есть я делаю хард ресет, потом тут же два других коммита, пробовал вообще удалять ветку - хер там! Если коммит сделан, он не удаляется, похоже. Другое дело, что не остается на него указателей типа HEAD или названия ветки. Но по SHA он остается доступным, и если на него переключиться (checkout), файлы, разумеется, приходят в соответсвующее состояние.
Знатоки, прокомментируйте.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 29 ноя 2019, 00:35 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3051
https://stackoverflow.com/questions/133 ... nch-in-git

git rebase -i <commit>~1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 30 ноя 2019, 01:25 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 621
Чет не получилось у меня прям rebase HEAD~1... Но если делаю rebase на другую ветку - та же петрушка. Коммиты физически остаются.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 01 дек 2019, 15:46 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3051
После git rebase откроется текстовый файл, где будут все указанные коммиты и хелп по командам с ними. По умолчанию там стоит pick - оставить коммит. Если заменить на drop, то это удалит коммит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 02 дек 2019, 17:01 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 621
Заменил. Успешно ребазированно и обновлено... Коммит на месте... Серьезно. Проверьте. Указатель ветки, HEAD переехали, а ORIG_HEAD встал на "удаляемый" коммит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 02 дек 2019, 22:52 
Старожил

Зарегистрирован: 08 авг 2013, 09:43
Сообщения: 3051
Код:
$ /tmp/git-test $ touch main.c
$ /tmp/git-test $ git init
Инициализирован пустой репозиторий Git в /tmp/git-test/.git/
$ /tmp/git-test $ git add main.c
$ /tmp/git-test $ git commit -m "Initial commit"
$ /tmp/git-test $ echo "#include <stdint.h>" >> main.c
$ /tmp/git-test $ git add main.c && git commit -m "stdint"
[master 408b342] stdint
1 file changed, 1 insertion(+)
$ /tmp/git-test $ echo "#include <stdio.h>" >> main.c
$ /tmp/git-test $ git add main.c && git commit -m "stdio"
[master f7b13b3] stdint
1 file changed, 1 insertion(+)
$ /tmp/git-test $ git log
commit f7b13b3e701ddf083670b927a446c73dc5195d4e
Author: N-Storm
Date:   Mon Dec 2 20:48:03 2019 +0300

    stdio

commit 408b342f99b41f08447956f4d005b0489c7d5f71
Author: N-Storm
Date:   Mon Dec 2 20:47:56 2019 +0300

    stdint

commit 299be88e996ebe6825358818e901ac95f9e04378
Author: N-Storm
Date:   Mon Dec 2 20:47:25 2019 +0300

    Initial commit
$ /tmp/git-test $ git rebase -i HEAD~1

Successfully rebased and updated refs/heads/master.
$ echo "#include <stdbool.h>" >> main.c
$ /tmp/git-test $ git add main.c && git commit -m "stdbool"
[master 3a32a6f] stdbool
1 file changed, 1 insertion(+)
$ /tmp/git-test $ git log
commit 3a32a6f6a5332379fb336d5bc4aee7129a9a62a2
Author: N-Storm
Date:   Mon Dec 2 20:50:50 2019 +0300

    stdbool

commit 408b342f99b41f08447956f4d005b0489c7d5f71
Author: N-Storm
Date:   Mon Dec 2 20:47:56 2019 +0300

    stdint

commit 299be88e996ebe6825358818e901ac95f9e04378
Author: N-Storm
Date:   Mon Dec 2 20:47:25 2019 +0300

    Initial commit
$ /tmp/git-test $ cat main.c
#include <stdint.h>
#include <stdbool.h>


Об чем речь?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 03 дек 2019, 17:42 
Старожил

Зарегистрирован: 21 янв 2015, 16:19
Сообщения: 621
а теперь: git checkout f7b1, или (приведет туда же) git checkout ORIG_HEAD.

У меня git преспокойно нашел drop'нутый коммит и переключился на него.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: git - embed: teach me, please
СообщениеДобавлено: 03 дек 2019, 20:35 
Старожил

Зарегистрирован: 10 фев 2016, 19:55
Сообщения: 351
Не эксперт в git, но тема заинтересовала и решил попробовать свои силы.
Что накопал на данный момент. Коммиты реально не удаляются просто так. Ни какие ребейсы и ресеты разных видов не помогают.
Но следующие команды в заданном порядке вроде как помогают решить проблему:
удаление всех записей orphaned-коммитов из reflog'а до текущего времени
Код:
git reflog expire --expire-unreachable=now --all

сборка мусора
Код:
git gc

удаление orphaned-коммитов
Код:
git prune

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB