зачем нужен git bash
Git Bash — что это за программа?

Простыми словами: есть операционка Linux — как Windows, только совсем другая, софт тоже другой нужен, тот что для винды — не подойдет. Вот только в Linux есть очень полезная команда для программистов — Git, которая позволяет управлять версиями проекта (исходного кода). Но в Windows такой команды нет. А программисты, которые работают в Windows — хотели бы такую команду. Вот тут и нужна прога Git Bash — она ставит на винду оболочку от Linux, в которой и будет работать команда Git. Результат — программеры на Windows могут использовать команду Git из Linux, и все это сделано удобно. Например командой change directory можно указать рабочий каталог вашего проекта:
Git — что это? Набор консольных утилит, которые отслеживают и фиксируют изменения в файлах. Часто всего используется для исходных файлов приложений, но можно использовать и для других файлов. Обычно используется программистами при разработке ПО, Git позволяет отслеживать версии. Например разработчик допилил прогу так, что она стала работать глючнее, тогда можно используя Git восстановить более старую версию кода программы, где еще нет изменений разработчика.
Bash — что это? Командная оболочка UNIX, особенно популярная в среде Linux, где используется в качестве предустановленной командной оболочки. Простыми словами — как командная строка в Windows, только это в Linux. Это некое черное окошко, куда можно писать команды разные, получать результат, а также можно запускать целые скрипты, которые состоят из нескольких команд.
Надеюсь данная информация оказалась полезной. Удачи и добра, до новых встреч друзья!
Git и GitBash
Как и зачем работать с Git через командную строку? В статье содержится набор простых действий и команд, которые помогут разобраться с этим.
Перед началом статьи полезно было бы напомнить некоторые термины:
Репозиторий — место, где хранятся и поддерживаются какие-либо данные. Чаще всего данные в репозитории хранятся в виде файлов, доступных для дальнейшего распространения по сети.
Коммит (commit) — фиксация изменений любых файлов, входящих в репозиторий
Merge — слияние, принимает содержимое ветки источника и объединяет их с целевой веткой.
Push( или “Запушить”) — передача последних фиксаций на удаленный репозиторий
Работать с системой контроля версий и удалённым репозиторием можно внутри многих сред программирования. Такую функцию поддерживают, например, Visual Studio или среды компании JetBrains (PyCharm, IntelijIdea и т.д). Однако в некоторых случаях GUI не очень удобен, и приходится прибегать к работе через консоль. В нашем случае через GitBash.
Пусть на начальном уровне функционала IDEA более чем достаточно, полезно было бы уметь работать через консоль, чтобы иметь представление хотя бы об альтернативе.
Разбирать мы будем самые простые команды для:
Создание репозитория
Здесь есть несколько вариантов. Например, проект уже может лежать у нас на компьютере, а нам необходимо подключить его к системе контроля версий и связать его с GitHub. Либо же какой-то код уже имеется на удаленном репозитории GitHub, а нам лишь необходимо получить его и начать работу.
Разберем сначала второй вариант, но для начала откроем GitBash. У нас появится такое окно:
У гита есть настройка пользователя, от которого будет идти работа. Это разумная и необходимая вещь, так как когда создается коммит, гит берет именно эту информацию для поля Author. Чтобы настроить имя пользователя и пароль для всех проектов, нужно прописать следующие команды:
Далее нам необходимо выбрать папку, где будет лежать проект.
Для этого прописываем путь к папке в таком формате:
Сверху, выше черного пространства указан путь по умолчанию, поэтому можно не прописывать его заново, если мы решили сохранять проект внутри дочерних папок этого пути. В моем случае:
Далее нажимаем Enter. Теперь нам нужно «клонировать» проект из удаленного репозитория. Для этого находим нужный проект на GitHub.
Нажимаем на кнопку Code и из выпадающего окна копируем HTPPS ссылку.
Далее в консоли git bash пишем:
Теперь файлы репозитория лежать у нас на компьютере. Снова воспользуемся командой cd чтобы по относительному пути перейти в папку проекта.
Как мы видим появилась возле относительного пути надпись master, это означает что файлы данной папки подключены на систему контроля версий и на данный момент мы находимся на ветке с название master. Что такое ветки я расскажу позднее.
Теперь разберем вариант, когда у нас уже имеется какой либо проект, а нам его нужно подключить к git и загрузить на удаленный репозиторий GitHub
Для этого заходим в папку нашего проекта через консоль gitBash и используем команду:
git init — подключаем файлы к системе контроля версий
Как и в прошлый раз видим надпись master, значит, репозиторий создан, НО пока что локальный. Свяжем его с удаленным, предварительно создав на GitHub.
Так же как и в первом варианте копируем HTTPS ссылку и открываем gitBash.
Теперь мы связали наш локальный и удаленный репозитории. Осталось лишь загрузить файлы на GitHub.
Проверим командой git status возможность сделать commit.
Как мы видим файл SomeFiles.txt был изменен, но пока не готов к коммиту.
Если никаких надписей не появится – все ОК.
Теперь наши файлы готовы к коммиту.
— фиксируем изменение проекта
Чтобы проверить последние коммиты напишем команду
git log — список коммитов с полной информацией
ВАЖНО! После этой команды станет недоступна командная строка, чтобы вернуться наберите “q” в нижней строке.
git log —oneline — список коммитов с краткой информацией
И последний шаг – выгрузка на GitHub
git push —set-upstream origin master – загружаем все на удаленный репозиторий. Приписка —set-upstream origin master – связывает нашу локальную ветку master с одноименной удаленной.
Проверяем на GitHub и видим, что все файлы успешно загружены
Теперь предположим, что у нас уже есть локальный репозиторий и он связан с удаленным. Допустим какой- то программист сделал изменения в проекте и «запушили» на GitHub. Как получить обновленный код?
Для этого есть команда
git pull – обновить локальную копию удаленного репозитория
Теперь у вас на компьютере актуальная версия проекта. Можно снова править, коммитить и пушить.
Работа с ветками
Ветка в Git это подвижный указатель на один из коммитов. Обычно ветка указывает на последний коммит в цепочке коммитов. Ветка берет свое начало от какого-то одного коммита.
Во время создания проекта под управлением системы контроля версий создается ветка по умолчанию – master.
Ветка по сути — это ответвление от текущей версии проекта. Все изменения, которые будет вносить разработчик, будут сохраняться в ветке и когда функция будет полностью реализована и проверена, разработчик сможет слить все свои изменения с веткой master
Как часто бывает, над проектом работает сразу несколько программистов, и допустим, один из них работает над какой-нибудь новой функцией. Если он будет вносить изменения в master, то эти изменения могут повлиять на работоспособность проекта.
Чтобы создать ветку нужно прописать
Теперь, нужно перейти на новую ветку
Но можно все сделать за один шаг
Когда программист решает, что его функция полностью работает, он может перекинуть все изменения с рабочей ветки на ветку master. Для этого нужно переключить на основную ветку и сделать merge:
Теперь можно коммитить и пушить изменения.
Попов Даниил, после окончания базового курса, октябрь 2020
Git для новичков (часть 1)
Что такое Git и зачем он нужен?
С помощью Git-a вы можете откатить свой проект до более старой версии, сравнивать, анализировать или сливать свои изменения в репозиторий.
Репозиторием называют хранилище вашего кода и историю его изменений. Git работает локально и все ваши репозитории хранятся в определенных папках на жестком диске.
Так же ваши репозитории можно хранить и в интернете. Обычно для этого используют три сервиса:
Как работает
В итоге получается очень простой граф, состоящий из одной ветки ( main ) и четырех commit. Все это может превратиться в более сложный граф, состоящий из нескольких веток, которые сливаются в одну.
Об этом мы поговорим в следующих статьях. Для начала разберем работу с одной веткой.
Установка
Основой интерфейс для работы с Git-ом является консоль/терминал. Это не совсем удобно, тем более для новичков, поэтому предлагаю поставить дополнительную программу с графическим интерфейсом (кнопками, графиками и т.д.). О них я расскажу чуть позже.
Но для начала, все же установим сам Git.
Windows. Проходим по этой ссылке, выбираем под вашу ОС (32 или 64 битную), скачиваем и устанавливаем.
Для Mac OS. Открываем терминал и пишем:
Linux. Открываем терминал и вводим следующую команду.
Настройка
Вы установили себе Git и можете им пользоваться. Давайте теперь его настроим, чтобы когда вы создавали commit, указывался автор, кто его создал.
Открываем терминал (Linux и MacOS) или консоль (Windows) и вводим следующие команды.
Создание репозитория
Теперь вы готовы к работе с Git локально на компьютере.
Создадим наш первый репозиторий. Для этого пройдите в папку вашего проекта.
Теперь Git отслеживает изменения файлов вашего проекта. Но, так как вы только создали репозиторий в нем нет вашего кода. Для этого необходимо создать commit.
Отлично. Вы создали свой первый репозиторий и заполнили его первым commit.
Процесс работы с Git
Не стоит после каждого изменения файла делать commit. Чаще всего их создают, когда:
Создан новый функционал
Добавлен новый блок на верстке
Исправлены ошибки по коду
Вы завершили рабочий день и хотите сохранить код
Это поможет держать вашу ветки в чистоте и порядке. Тем самым, вы будете видеть историю изменений по каждому нововведению в вашем проекте, а не по каждому файлу.
Визуальный интерфейс
Как я и говорил ранее, существуют дополнительные программы для облегчения использования Git. Некоторые текстовые редакторы или полноценные среды разработки уже включают в себя вспомогательный интерфейс для работы с ним.
Но существуют и отдельные программы по работе с Git. Могу посоветовать эти:
Я не буду рассказывать как они работают. Предлагаю разобраться с этим самостоятельно.
Создаем свой первый проект и выкладываем на GitHub
Давайте разберемся как это сделать, с помощью среды разработки Visual Studio Code (VS Code).
Перед началом предлагаю зарегистрироваться на GitHub.
Создайте папку, где будет храниться ваш проект. Если такая папка уже есть, то создавать новую не надо.
Установите себе дополнительно анализаторы кода для JavaScript и PHP
Откройте вашу папку, которую создали ранее
После этого у вас появится вот такой интерфейс
Здесь будут располагаться все файлы вашего проекта
Здесь можно работать с Git-ом
Кнопка для создания нового файла
Кнопка для создания новой папки
Давайте теперь перейдем во вкладу для работы с Git-ом.
Откроется вот такое окно:
Кнопка для публикации нашего проекта на GitHub
Вы создали и опубликовали репозиторий на GitHub.
Теперь сделаем изменения в коде и попробуем их снова опубликовать. Перейдите во вкладку с файлами, отредактируйте какой-нибудь файл, не забудьте нажать crtl+s (Windows) или cmd+s (MacOS), чтобы сохранить файл. Вернитесь обратно во вкладу управления Git.
Если посмотреть на значок вкладки Git, то можно увидеть цифру 1 в синем кружке. Она означает, сколько файлов у нас изменено и незакоммичено. Давайте его закоммитим и опубликуем:
Кнопка для просмотра изменений в файле. Необязательно нажимать, указал для справки
Добавляем наш файл для будущего commit
Отправляем наш commit в GitHub
Поздравляю, вы научились создавать commit и отправлять его в GitHub!
Это первая вводная статья по утилите Git. Здесь мы рассмотрели:
Как его устанавливать
Как его настраивать
Как инициализировать репозиторий и создать commit через консоль
Как на примере VS Code, опубликовать свой код на GitHub
Забегая вперед, советую вам погуглить, как работают следующие команды:
P.S. Для облегчения обучения, оставлю вам ссылку на бесплатный тренажер по Git.
Что такое Git Bash и как его установить на Windows?
Git Bash — это командная строка, с помощью которой пользователи могут использовать функции Git. Он эмулирует среду bash в Windows и позволяет пользователю использовать большинство стандартных команд Unix. Это для пользователей, которые знакомы с терминалом bash операционных систем Unix. Существует также Git CMD, которая похожа на обычную командную строку Windows, где пользователи могут использовать все функции Git через командную строку. Большинство пользователей, которые являются новичками в GitHub, не знают о Git Bash и о том, как он работает. В этой статье мы расскажем вам, что такое Git Bash и как вы можете установить или запустить его в первый раз.
Что такое Git Bash?
Git Bash — это приложение для сред Microsoft Windows, которое предоставляет эмуляцию bash, используемую для запуска Git из командной строки. Это не простой bash, скомпилированный для Windows, а пакет, содержащий Bash, SSH, SCP и некоторые другие утилиты Unix, скомпилированные для Windows. Он также содержит новое окно терминала интерфейса командной строки под названием minty. Эти утилиты связаны с этим пакетом Bash, чтобы создать полезный пакет программного обеспечения.
В Windows мы обычно запускаем команды в CMD, но на самом деле это исполняемые файлы, которые существуют в папке C: Windows System32. То же самое касается bash, для работы команд требуются утилиты. В системах Unix эти утилиты будут находиться в каталоге / usr / bin. Итак, после установки Git Bash эти утилиты будут установлены в папку C: Program Files Git usr bin.
Загрузка и установка Git Bash для Windows
Установка Git Bash проста, как и установка любого другого программного обеспечения. Вы можете скачать его с официального сайта. Тем не менее, он имеет несколько параметров в установке, которые вы можете настроить в зависимости от ваших требований. Мы собираемся показать вам шаги для каждого важного параметра в установке Git Bash.
Запуск и тестирование Git Bash
Если вы знакомы с работой в командной строке, вам будет гораздо легче начать работу с Git Bash. Он похож на CMD в Windows, вы можете открыть его и сменить каталог на папку, в которой вы хотите работать, или вы можете напрямую открыть ее внутри папки. Чтобы подключить Git Bash к вашей учетной записи GitHub, требуется несколько шагов и войдите в учетную запись GitHub. Для начала выполните следующие шаги:
Примечание. Если у вас уже есть хранилище, пропустите шаг 2 и шаг 3.
Git за полчаса: руководство для начинающих
В последние годы популярность git демонстрирует взрывной рост. Эта система контроля версий используется различными проектами с открытым исходным кодом.
Новичков часто пугает большое количество замысловатых команд и сложных аргументов. Но для начала все они и не нужны. Можно начать с изучения наиболее часто используемых команд, и после этого постепенно расширять свои знания. Именно так мы и поступим в этой статье. Поехали!
Основы
Git — это набор консольных утилит, которые отслеживают и фиксируют изменения в файлах (чаще всего речь идет об исходном коде программ, но вы можете использовать его для любых файлов на ваш вкус). С его помощью вы можете откатиться на более старую версию вашего проекта, сравнивать, анализировать, сливать изменения и многое другое. Этот процесс называется контролем версий. Существуют различные системы для контроля версий. Вы, возможно, о них слышали: SVN, Mercurial, Perforce, CVS, Bitkeeper и другие.
Git является распределенным, то есть не зависит от одного центрального сервера, на котором хранятся файлы. Вместо этого он работает полностью локально, сохраняя данные в папках на жестком диске, которые называются репозиторием. Тем не менее, вы можете хранить копию репозитория онлайн, это сильно облегчает работу над одним проектом для нескольких людей. Для этого используются сайты вроде github и bitbucket.
Установка
Установить git на свою машину очень просто:
Если вы новичок, клиент с графическим интерфейсом(например GitHub Desktop и Sourcetree) будет полезен, но, тем не менее, знать команды очень важно.
Настройка
Итак, мы установили git, теперь нужно добавить немного настроек. Есть довольно много опций, с которыми можно играть, но мы настроим самые важные: наше имя пользователя и адрес электронной почты. Откройте терминал и запустите команды:
Теперь каждое наше действие будет отмечено именем и почтой. Таким образом, пользователи всегда будут в курсе, кто отвечает за какие изменения — это вносит порядок.
Создание нового репозитория
Командная строка должна вернуть что-то вроде:
Это значит, что наш репозиторий был успешно создан, но пока что пуст. Теперь создайте текстовый файл под названием hello.txt и сохраните его в директории git_exercise.
Определение состояния
status — это еще одна важнейшая команда, которая показывает информацию о текущем состоянии репозитория: актуальна ли информация на нём, нет ли чего-то нового, что поменялось, и так далее. Запуск git status на нашем свежесозданном репозитории должен выдать:
Сообщение говорит о том, что файл hello.txt неотслеживаемый. Это значит, что файл новый и система еще не знает, нужно ли следить за изменениями в файле или его можно просто игнорировать. Для того, чтобы начать отслеживать новый файл, нужно его специальным образом объявить.
Подготовка файлов
В git есть концепция области подготовленных файлов. Можно представить ее как холст, на который наносят изменения, которые нужны в коммите. Сперва он пустой, но затем мы добавляем на него файлы (или части файлов, или даже одиночные строчки) командой add и, наконец, коммитим все нужное в репозиторий (создаем слепок нужного нам состояния) командой commit.
В нашем случае у нас только один файл, так что добавим его:
Если нам нужно добавить все, что находится в директории, мы можем использовать
Проверим статус снова, на этот раз мы должны получить другой ответ:
Файл готов к коммиту. Сообщение о состоянии также говорит нам о том, какие изменения относительно файла были проведены в области подготовки — в данном случае это новый файл, но файлы могут быть модифицированы или удалены.
Коммит(фиксация изменений)
Коммит представляет собой состояние репозитория в определенный момент времени. Это похоже на снапшот, к которому мы можем вернуться и увидеть состояние объектов на определенный момент времени.
Чтобы зафиксировать изменения, нам нужно хотя бы одно изменение в области подготовки (мы только что создали его при помощи git add), после которого мы может коммитить:
Удаленные репозитории
1. Подключение к удаленному репозиторию
Чтобы загрузить что-нибудь в удаленный репозиторий, сначала нужно к нему подключиться. В нашем руководстве мы будем использовать адрес https://github.com/tutorialzine/awesome-project, но вам посоветуем попробовать создать свой репозиторий в GitHub, BitBucket или любом другом сервисе. Регистрация и установка может занять время, но все подобные сервисы предоставляют хорошую документацию.
Чтобы связать наш локальный репозиторий с репозиторием на GitHub, выполним следующую команду в терминале. Обратите внимание, что нужно обязательно изменить URI репозитория на свой.
Проект может иметь несколько удаленных репозиториев одновременно. Чтобы их различать, мы дадим им разные имена. Обычно главный репозиторий называется origin.
2. Отправка изменений на сервер
В зависимости от сервиса, который вы используете, вам может потребоваться аутентифицироваться, чтобы изменения отправились. Если все сделано правильно, то когда вы посмотрите в удаленный репозиторий при помощи браузера, вы увидите файл hello.txt
3. Клонирование репозитория
Сейчас другие пользователи GitHub могут просматривать ваш репозиторий. Они могут скачать из него данные и получить полностью работоспособную копию вашего проекта при помощи команды clone.
Новый локальный репозиторий создается автоматически с GitHub в качестве удаленного репозитория.
4. Запрос изменений с сервера
Если вы сделали изменения в вашем удаленном репозитории, другие пользователи могут скачать изменения при помощи команды pull.
Так как новых коммитов с тех пор, как мы склонировали себе проект, не было, никаких изменений доступных для скачивания нет.
Ветвление
Во время разработки новой функциональности считается хорошей практикой работать с копией оригинального проекта, которую называют веткой. Ветви имеют свою собственную историю и изолированные друг от друга изменения до тех пор, пока вы не решаете слить изменения вместе. Это происходит по набору причин:
1. Создание новой ветки
Основная ветка в каждом репозитории называется master. Чтобы создать еще одну ветку, используем команду branch
Это создаст новую ветку, пока что точную копию ветки master.
2. Переключение между ветками
Сейчас, если мы запустим branch, мы увидим две доступные опции:
master — это активная ветка, она помечена звездочкой. Но мы хотим работать с нашей “новой потрясающей фичей”, так что нам понадобится переключиться на другую ветку. Для этого воспользуемся командой checkout, она принимает один параметр — имя ветки, на которую необходимо переключиться.
3. Слияние веток
Наша “потрясающая новая фича” будет еще одним текстовым файлом под названием feature.txt. Мы создадим его, добавим и закоммитим:
Изменения завершены, теперь мы можем переключиться обратно на ветку master.
Теперь, если мы откроем наш проект в файловом менеджере, мы не увидим файла feature.txt, потому что мы переключились обратно на ветку master, в которой такого файла не существует. Чтобы он появился, нужно воспользоваться merge для объединения веток (применения изменений из ветки amazing_new_feature к основной версии проекта).
Теперь ветка master актуальна. Ветка amazing_new_feature больше не нужна, и ее можно удалить.
Дополнительно
В последней части этого руководства мы расскажем о некоторых дополнительных трюках, которые могут вам помочь.
1. Отслеживание изменений, сделанных в коммитах
У каждого коммита есть свой уникальный идентификатор в виде строки цифр и букв. Чтобы просмотреть список всех коммитов и их идентификаторов, можно использовать команду log:
[spoiler title=’Вывод git log’]
[/spoiler]
Как вы можете заметить, идентификаторы довольно длинные, но для работы с ними не обязательно копировать их целиком — первых нескольких символов будет вполне достаточно. Чтобы посмотреть, что нового появилось в коммите, мы можем воспользоваться командой show [commit]
[spoiler title=’Вывод git show’]
[/spoiler]
Чтобы увидеть разницу между двумя коммитами, используется команда diff (с указанием промежутка между коммитами):
[spoiler title=’Вывод git diff’]
[/spoiler]
Мы сравнили первый коммит с последним, чтобы увидеть все изменения, которые были когда-либо сделаны. Обычно проще использовать git difftool, так как эта команда запускает графический клиент, в котором наглядно сопоставляет все изменения.
2. Возвращение файла к предыдущему состоянию
3. Исправление коммита
Если вы опечатались в комментарии или забыли добавить файл и заметили это сразу после того, как закоммитили изменения, вы легко можете это поправить при помощи commit —amend. Эта команда добавит все из последнего коммита в область подготовленных файлов и попытается сделать новый коммит. Это дает вам возможность поправить комментарий или добавить недостающие файлы в область подготовленных файлов.
Для более сложных исправлений, например, не в последнем коммите или если вы успели отправить изменения на сервер, нужно использовать revert. Эта команда создаст коммит, отменяющий изменения, совершенные в коммите с заданным идентификатором.
Самый последний коммит может быть доступен по алиасу HEAD:
Для остальных будем использовать идентификаторы:
При отмене старых коммитов нужно быть готовым к тому, что возникнут конфликты. Такое случается, если файл был изменен еще одним, более новым коммитом. И теперь git не может найти строчки, состояние которых нужно откатить, так как они больше не существуют.
4. Разрешение конфликтов при слиянии
Помимо сценария, описанного в предыдущем пункте, конфликты регулярно возникают при слиянии ветвей или при отправке чужого кода. Иногда конфликты исправляются автоматически, но обычно с этим приходится разбираться вручную — решать, какой код остается, а какой нужно удалить.
Давайте посмотрим на примеры, где мы попытаемся слить две ветки под названием john_branch и tim_branch. И Тим, и Джон правят один и тот же файл: функцию, которая отображает элементы массива.
Джон использует цикл:
Тим предпочитает forEach:
Они оба коммитят свой код в соответствующую ветку. Теперь, если они попытаются слить две ветки, они получат сообщение об ошибке:
Система не смогла разрешить конфликт автоматически, значит, это придется сделать разработчикам. Приложение отметило строки, содержащие конфликт:
[spoiler title=’Вывод’]
Когда все готово, нужно закоммитить изменения, чтобы закончить процесс:
Как вы можете заметить, процесс довольно утомительный и может быть очень сложным в больших проектах. Многие разработчики предпочитают использовать для разрешения конфликтов клиенты с графическим интерфейсом. (Для запуска нужно набрать git mergetool).
Вот хорошие примеры файлов, которые нужно игнорировать:
Символ слэша в конце некоторых линий означает директорию (и тот факт, что мы рекурсивно игнорируем все ее содержимое). Звездочка, как обычно, означает шаблон.
Заключение.
Вот и все! Наше руководство окончено. Мы очень старались собрать всю самую важную информацию и изложить ее как можно более сжато и кратко.
Git довольно сложен, и в нем есть еще много функций и трюков. Если вы хотите с ними познакомиться, вот некоторые ресурсы, которые мы рекомендуем:













