0 / 0 / 0
Регистрация: 16.10.2019
Сообщений: 79
1

Хочу разобраться как работает git и как мне с ним работать

23.03.2020, 14:50. Показов 2052. Ответов 48

Недавно у меня появилась необходимость иметь возможность писать код с двух устройств, а также в обучении требуется умение работы с git. Я почти ничего не знаю, поэтому задам ряд интересующих меня вопросов:
1)Есть ли возможность работы в git с помощью любой среды разработки (к примеру я пишу на c++ и использую microsoft visual studio 2019)? vscode явился чем-то максимально громоздким и неудобным, без нормальных гайдов и понятных объяснений
2)Какую роль играет в этом mingw?
3)Каким образом осуществляется само составление программы? Я пишу программу в условной среде, затем пишу какую-то заветную комбинацию команд в гитбаш и все заливается на сервер?
4)Можно ли самому создать сервер, чтобы доступ к нему был лишь у тебя, то есть именно для работы с нескольких устройств?
Также попрошу любые статьи, видео, гайды где есть ответы на мои вопросы. Прошу по возможности объяснение "на-пальцах".
Спасибо заранее
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2020, 14:50
Ответы с готовыми решениями:

Кто поможет разобраться в структуре denwer? Как с ним правильно работать? Как обновить его компоненты до последних обновлений?
Не нашел куда лучше разместить это тему потому кидаю сюда. Кто поможет разобраться в структуре...

Не работающий LTE на новом 5 Эс ,который (как мне кажется) должен с ним работать
Здравствуйте. Собственно есть новый аппарат iphone 5S модель А1530 с симкой от МТС. На сайте Apple,...

Как принтер работает с usb? хочу разобраться или найти альтернативу
Здравствуйте, Введение: Имея большую проблему с принтерами Canon LBP6030, хочу разобраться в...

Как заставить Mono работать с GIT
Я не могу разобраться, как заставить его работать с гитом! При создании репозитория я нигде не могу...

48
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
31.05.2020, 20:34 21
Цитата Сообщение от programistnadne Посмотреть сообщение
А причём тут гит? Как система контроля версий может быть связана с написанием тз???
Я видел такое именно в гитхабе. Как это связано и реализовано - не знаю. Ищу. вспоминаю - где видел.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

21 / 18 / 5
Регистрация: 11.10.2017
Сообщений: 289
01.06.2020, 07:48 22
Цитата Сообщение от СергейСереб Посмотреть сообщение
Как это связано
Никак, гитхаб это не система контроля версий
0
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
01.06.2020, 09:22 23
Цитата Сообщение от programistnadne Посмотреть сообщение
Никак
Я себе представлял, что если используется гит + гитхаб, то все изменения на гитхабе выполняются именно через гит
0
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
06.08.2020, 11:39 24
Возвращаясь к теме после вынужденного перерыва.. Попытался выгрузить проект на гитхаб. Прямо китайская грамота.. Может кто подскажет с вопросами:
1. Принципиально ли/стоит ли управлять процессом работы как локально так и удаленно через ide или это правильно, лучше делать через терминал?
2. Можно ли удалить файлы, папки, полностью репозиторий, чтобы этого не было видно в истории?

Сделал хеллоуворлд.html , сделал рядом файл гитигнор. В гитигнор прописывал .idea, но в репозиторий все равно попала папка от ide. Делал не через терминал, а в ide. Причем я видел, что ide отмечает при попытке пуша и свои файлы. Галочки не снял, т.к. думал, что гитигнор должен сработать. Что нужно сделать, чтобы указанное в гитигноре учитывалось? Наверное я что то недоделал.

Лишние файлы я удалил вручную в репозитории, но это видно в истории. Как то не очень приглядно выглядит. Ну и много файлов конечно вручную не наудаляешься.

Добавлено через 7 минут
Может кто коротенько еще опишет какую правильно выполнить последовательность. Мне нужно выгрузить проект с локальной машины на гитхаб. Это нужно делать через создание локального репозитория, или не обязательно? Как правильно? Какая последовательность действий?

Добавлено через 11 минут
Локальный репозиторий не был инициализирован, удаленный не клонировал. Только в remotes указал адрес на гитхабе. Очевидно все остально сделала ide.
Я так понимаю, что если есть в проекте уже локальный репозиторий, нужно делать сначала клонирование удаленного пустого, а если нет, то инициализировать сначала локальный, а потом пушить? Или как?
0
Эксперт .NET
7583 / 5067 / 1208
Регистрация: 25.05.2015
Сообщений: 15,458
Записей в блоге: 14
06.08.2020, 14:27 25
Цитата Сообщение от СергейСереб Посмотреть сообщение
Принципиально ли/стоит ли управлять процессом работы как локально так и удаленно через ide или это правильно, лучше делать через терминал?
Через терминал, если хотите
разбираться, как работать без зависимости от IDE;
мочь разрулить нестандартную ситуацию/проблему;
использовать всю функциональность git.
Через IDE, если всё, что вам нужно, это
архивировать изменения;
переключать ветки.
Интерфейс в IDE крайне ограниченный и костыльный.
Цитата Сообщение от СергейСереб Посмотреть сообщение
Можно ли удалить файлы, папки, полностью репозиторий, чтобы этого не было видно в истории?
Удалить можно. См. https://docs.github.com/en/git... ys-history

Цитата Сообщение от СергейСереб Посмотреть сообщение
В гитигнор прописывал .idea, но в репозиторий все равно попала папка от ide.
Надо доку читать сначала: https://git-scm.com/docs/gitignore
Потом пробовать, изменять записи в файле и смотреть, как это влияет на обнаружение файлов гитом.

Цитата Сообщение от СергейСереб Посмотреть сообщение
Может кто коротенько еще опишет какую правильно выполнить последовательность. Мне нужно выгрузить проект с локальной машины на гитхаб. Это нужно делать через создание локального репозитория, или не обязательно? Как правильно? Какая последовательность действий?
Проект изначально должен создавать под управлением git. Все изменения должны в нём фиксироваться.
А ваше выкладывание ни чем не лучше отсылки архива почтой.

У проекта должен быть локальный репозиторий. Видно по наличию .git каталога.
Добавляете к нему remote: git remote add <name> <url>
Отправляете изменения git push <name> <branch>
Всё.

Добавлено через 4 минуты
Читайте гайды: https://guides.github.com/
1
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
06.08.2020, 15:56 26
Пока что нужно в срочном порядке показать примеры своего кода/проекты. Поэтому-просто как отсылка архива почтой пока что. А в процессе уже нужно осваивать. С наскока не получается охватить. И без опыта- нет так просто, как я себе представлял.
0
Эксперт .NET
7583 / 5067 / 1208
Регистрация: 25.05.2015
Сообщений: 15,458
Записей в блоге: 14
06.08.2020, 19:48 27
Тогда просто:
  • Создать репозиторий.
  • Скопировать ссылку для https.
  • В каталоге проект инициализировать git: git init.
  • Добавить нужные файлы git add .
  • Закоммитить git commot.
  • Добавить ранее скопированную ссылку git remote add origin <url>
  • Отправить git push --force origin master
  • Никогда так больше не делать.
0
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
06.08.2020, 21:29 28
Rius, спасибо. Уже почитал, так и сделал, только еще гитигнор добавил. А почему так больше не делать? Так же вроде и нужно делать в начале проекта? Или речь именно об этом- что нужно это делать при создании проекта, а не пушить сразу готовый?

Да, конечно на будущее есть что изучать и с чем практиковаться.

С удалением репозитория тоже разобрался. Кто бы мог подумать, что эта опция запрятана в настройках, а не оькрытым доступным функционалом где то в быстром доступе. Да и сам механизм удаления отдельных файлов/папок не очень понятно, почему связан с такими сложностями. Вроде как умышленно, чтобы максимально препятствовать удалению ненужного. Или наоборот- чтобы максимально уберечь от потери нужных данных.
0
Эксперт .NET
7583 / 5067 / 1208
Регистрация: 25.05.2015
Сообщений: 15,458
Записей в блоге: 14
06.08.2020, 21:36 29
Цитата Сообщение от СергейСереб Посмотреть сообщение
А почему так больше не делать?
А можно перебежать железнодорожные пути, если очень надо?
Раз перебежали, два, всё нормально.
А потом попали ногой в переводимую стрелку, застряли, и вас соскребают с локомотива.

С git работают иначе. В нормальном проекте есть шанс потерять всю проделанную работу.
Если проект уже в удалённом репозитории, его клонируют оттуда.
А заливают изменения без --force. Эта опция по умолчанию даже запрещена в некоторых графических клиентах.

Цитата Сообщение от СергейСереб Посмотреть сообщение
Вроде как умышленно, чтобы максимально препятствовать удалению ненужного. Или наоборот- чтобы максимально уберечь от потери нужных данных.
Да. Очевидно, что опасная функциональность не должна бросаться в глаза и выполняться лишь по наведению мышки.
0
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
06.08.2020, 21:57 30
А вот --force я не заметил. Я пушил с ключем -u
0
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
13.08.2020, 18:26 31
Подскажите пожалуйста, где(в контексте архитектуры, в моем случае - веб-проекта) должны лежать физически папка гита и файл гитигнор?
0
Эксперт .NET
7583 / 5067 / 1208
Регистрация: 25.05.2015
Сообщений: 15,458
Записей в блоге: 14
13.08.2020, 18:34 32
.gitignore вместе с остальными файлами, только чтобы веб-сервер его не отдавал.
.git также. Либо где угодно, указав его расположение через параметр --git-dir.
0
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
13.08.2020, 18:48 33
Цитата Сообщение от Rius Посмотреть сообщение
.gitignore вместе с остальными файлами, только чтобы веб-сервер его не отдавал.
сейчас лежит в корне проекта на одном уровне с public_html и папка и файл.
А как его можно отдать/не отдать?
0
Эксперт .NET
7583 / 5067 / 1208
Регистрация: 25.05.2015
Сообщений: 15,458
Записей в блоге: 14
13.08.2020, 18:51 34
Если за пределами общедоступного каталога, то уже ничего делать не надо.
У сервера должны быть настройки, какие файлы можно отдавать, а какие нельзя.
1
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
14.08.2020, 22:30 35
Допустим, в проекте появляется новое ответвление. в нем произвели какие-то действия, что-то добавили/изменили. потом слили с основной веткой. Если после этого перейти обратно на ответвление и производить там какие-то изменения, это же повлияет на состояние проекта на основной ветке? Возможны какие-то конфликты, или для того, чтобы после слияния ответвления с основной веткой, нужно продолжить работу на ответвленной ранее ветке, нужно опять делать ответвление, а не переходить к старому?
0
Эксперт .NET
7583 / 5067 / 1208
Регистрация: 25.05.2015
Сообщений: 15,458
Записей в блоге: 14
14.08.2020, 22:52 36
Цитата Сообщение от СергейСереб Посмотреть сообщение
Если после этого перейти обратно на ответвление и производить там какие-то изменения, это же повлияет на состояние проекта на основной ветке?
Не повлияет. Все изменения внутри этой ветки будут.

Конфликты возникают тогда, когда изменены одинаковые строки в одинаковых файлах двух объединяемых веткок.

Почитайте
Добавлено через 1 минуту
Выберите, что понравится.
1
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
27.08.2020, 21:17 37
Ситуация1: На основной(единственной) ветке обнаружилось, что пару коммитов назад была серьезная ошибка. Какой алгоритмя действий?
Ситуация2: От основной ветки было сделано ответвление. И в основной ветке была продолжена работа и на боковой ветке. Обнаружилось, что до ответвления была допущена ошибка в проекте. Какой алгоритм действий?
0
Эксперт .NET
7583 / 5067 / 1208
Регистрация: 25.05.2015
Сообщений: 15,458
Записей в блоге: 14
27.08.2020, 21:33 38
Зависит от наличия ветвлений. Слишком много описывать.
Изучайте работу rebase и cherry-pick.
Надо уметь разобрать и собрать ветку по частям. Даже из отдельных коммитов.
1
37 / 7 / 9
Регистрация: 19.09.2016
Сообщений: 985
12.11.2020, 15:24 39
Контекст: работа двух пользователей с одним репозиторием, единственной веткой. Не совсем понял механизм разрешения изменений в проекте. Получается, что при любых изменениях у любого из участника проекта при попытке сделать push, появляется сообщение, что на проекте есть изменения и нужно сделать сначала pull. А после выполнения git pull происходит автоматическое выполнение merge. По сообщению в терминале мерджится ветка с репозитория origin/main на локальную ветку main? Я так понял, что объединяется - локальная история гит с той что стягивается с гитхаба. И результат помещается в локальный репозиторий? При этом, этот merge, как и коммит к нему будет только в локальном репозитории? Можно ли сразу указывать название этого коммита(при выполнении этого слияния), чтобы не через редактор его писать, который открывается автоматически?
0
Эксперт .NET
7583 / 5067 / 1208
Регистрация: 25.05.2015
Сообщений: 15,458
Записей в блоге: 14
12.11.2020, 15:32 40
Можно получить изменения сразу в ветку
Bash
1
git pull --rebase <remote> <branch>
В простейшем случае то, что вы успели наменять, будет помещено поверх того, что принято извне.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2020, 15:32

Git или как работать в двоем?
Всем привет! Решили с другом поработать над проектом и решили для этой цели использовать bitbucket...

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

Netty 4 как WebSocket сервер - как с ним работать ?
Всем доброго дня! Для приложения необходимо использовать сервер с WebSocket и неблокирующие...

Как это работает? Я хочу спросить как работает C++ и где можно про него почитать
Привет, котоны. Заранее благодарю. Это будет моих общих вопросов нить, т.к. создавать целую ветку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.