Как узнать ветку git
Управление ветками
Теперь, когда вы уже попробовали создавать, объединять и удалять ветки, пора познакомиться с некоторыми инструментами для управления ветками, которые вам пригодятся, когда вы начнёте использовать ветки постоянно.
Команда git branch делает несколько больше, чем просто создаёт и удаляет ветки. При запуске без параметров, вы получите простой список имеющихся у вас веток:
Вы всегда можете указать дополнительный аргумент для вывода той же информации, но относительно указанной ветки предварительно не извлекая и не переходя на неё.
Переименование ветки
Не переименовывайте ветки, которые всё ещё используются другими участниками. Не переименовывайте ветку в master/main/mainline, не прочитав раздел «Изменение имени главной ветки».
Теперь проверим, где мы сейчас находимся:
Теперь старое имя ветки полностью заменено исправленным.
Изменение имени главной ветки
Изменение имени ветки, например master/main/mainline/default, сломает интеграции, службы, вспомогательные утилиты и скрипты сборки, которые использует ваш репозиторий. Прежде чем сделать это, обязательно проконсультируйтесь с коллегами. Также убедитесь, что вы выполнили тщательный поиск в своём репозитории и обновили все ссылки на старое имя ветки в вашем коде или скриптах.
Переименуйте локальную ветку master в main с помощью следующей команды:
В итоге, состояние репозитория становится следующим:
Теперь, для завершения перехода на новую ветку перед вами стоят следующие задачи:
Все проекты, которые зависят от текущего, должны будут обновить свой код и/или конфигурацию.
Обновите конфигурацию всех запускаемых тестов.
Исправьте скрипты сборки и публикации артефактов.
Поправьте настройки репозитория на сервере: задайте новую ветку по умолчанию, обновите правила слияния, а также прочие настройки, которые зависят от имени веток.
Обновите документацию, исправив ссылки, указывающие на старую ветку.
Слейте или отмените запросы на слияние изменений, нацеленные на старую ветку.
Git checkout
Переключение веток аналогично переключению старых коммитов и файлов, в которых рабочий каталог обновляется в соответствии с выбранной веткой/ревизией; вместе с тем новые изменения сохраняются в истории проекта, то есть это не просто операция чтения.
Переключение веток
Наличие выделенной ветки для каждой новой функции сильно отличается от традиционного рабочего процесса в SVN. Это значительно облегчает проведение новых экспериментов без страха разрушить существующую функциональность и позволяет одновременно работать со множеством несвязанных функций. Кроме того, ветки облегчают ведение нескольких совместных рабочих процессов.
Использование: существующие ветки
В вышеприведенном примере показано, как просмотреть список доступных веток с помощью команды git branch и переключиться на конкретную ветку (в данном случае — на ветку feature_inprogress_branch ).
Новые ветки
Переключение веток
Переключение на удаленную ветку
При совместной работе команды нередко используют удаленные репозитории. Такие репозитории могут размещаться на сервере с предоставлением общего доступа либо это может быть локальная копия другого коллеги. Каждый удаленный репозиторий содержит собственный набор веток. Для переключения на удаленную ветку нужно сначала извлечь содержимое этой ветки.
В современных версиях Git переключение на удаленную ветку не отличается от переключения на локальную ветку.
В старых версиях Git необходимо создавать новую ветку на основе удаленного репозитория ( remote ).
Кроме того, можно переключиться на новую локальную ветку и сбросить ее до последнего коммита удаленной ветки.
Открепленные указатели HEAD
Резюме
Готовы попробовать ветвление?
Ознакомьтесь с этим интерактивным обучающим руководством.
GitHub: работа с ветками и коммитами
В предыдущих статьях мы рассказывали, что такое GitHub, как его настроить и как опубликовать свой проект. Но это лишь малая часть его инструментов. Одним из ключевых моментов для GitHub является работа с ветками — разбираемся с ними в этой статье.
Ветка (branch) — это история коммитов. Давайте сначала разберемся, что это такое.
Коммит (commit) — это информация об измененных файлах. Коммит состоит из автора коммита, измененных файлов, HEAD и времени. Для примеров мы будем использовать репозиторий и сделаем первый коммит, который отправим на сервер. Он нужен для того, чтобы разграничивать задачки. Так будет понятно, какой код в истории относится к той или иной задаче, чтобы потом мы могли быстро понять суть.
Например, у нас задача — сделать блок формы. Для этого мы сделаем нужные изменения в файле index.html & style.css, и даже через месяц сможем при помощи истории изменений просмотреть измененные куски кода именно для этого блока.
При помощи команды git log в консоли мы можем отслеживать историю коммитов в ветке.
На самом GitHub мы можем увидеть последний коммит в файле и последний коммит в ветке. Всю историю мы можем просмотреть, кликнув по кнопке n commits, где n — количество запущенных на сервер коммитов. У нас в ветке пока что один коммит, поэтому на ссылке надпись 1 commit.
Сама история будет выглядеть как список коммитов без подробностей об изменённых файлах. Здесь давайте подробнее остановимся на том, что такое HEAD коммита. Это специальный указатель, при помощи которого вы можете гибко управлять коммитами — например, склеивать или сбрасывать до нужного момента.
Если вы кликните по сообщению в коммите, в нашем случае это add first commit, то попадёте в список всех изменённых файлов.
Теперь подробнее разберем, как создавать коммит. Для начала нам нужно будет поменять файлы или добавить новые, чтобы было что коммитить, так как коммит — это история изменений. Как правило, в коммит включают изменения по одной задаче.
В нашем примере мы изменим содержание страницы index.html и добавим стили в style.css.
Изменения, не включенные в коммит, мы можем просмотреть при помощи команды git status.
Чтобы добавить файлы в коммит, мы будем использовать git add. Здесь мы можем указать нужные нам файлы для коммита, например, index.html. Если после этого мы сделаем git status, то эти файлики подсветятся зелёным — это означает, что мы можем добавить их к коммиту.
Если мы запушим наш результат на GitHub, то увидим наш коммит.
После того, как мы поменяли наш коммит локально, запушим его на сервер при помощи ключа force. Обычный push не сработает, так как у нас уже есть коммит на сервере — здесь будьте аккуратны, ведь вы меняете историю не только локально, но и удалённо.
Теперь поговорим про ветки (branch). Ветка — это история изменений. Сейчас у в репозитории одна ветка main, в которой хранится стабильная версия. Как правило, новые задачи делаются в новых ветках, а потом вливаются в main после ревью кода.
Посмотрим, как выглядит наша ветка с двумя коммитами в графике.
Ветки можно просматривать при помощи команды git branch.
Пробежимся git log и сравним наши ветки.
Тем не менее, если мы зайдем на GitHub, то обнаружим, что у нас там только одна ветка — main. Так происходит, потому что ветка form-index существует пока только на нашем компьютере, то есть локально.
Чтобы наша новая ветка появилась на сервере, нам нужно запушить наши изменения.
Если посмотрим на историю коммитов в form, то увидим, что она отличается от main на один коммит.
Мы можем создавать новые ветки не только из main, но и из других веток — так делают редко. Самое главное здесь понять, что если мы создали новую ветку из другой ветки, то мы наследуем историю коммитов ветки, из которой создали ветвление, но только в момент создания.
Давайте создадим ветку form-index-fix и посмотрим на историю коммитов в ней.
Теперь поэкспериментируем и посмотрим, что будет, если мы внесём изменение в ветку и забудем их закоммитить: обычный механизм через checkout не сработает, консоль попросит закоммитить изменения.
Если ветку нужно удалить на сервере, то сделать это можно при помощи интерфейса GitHub — нет рекомендаций, когда нужно удалять удалённые ветки.
Команды для консоли
В предыдущих статьях мы рассказывали, что такое GitHub, как его настроить и как опубликовать свой проект. Но это лишь малая часть его инструментов. Одним из ключевых моментов для GitHub является работа с ветками — разбираемся с ними в этой статье.
Ветка (branch) — это история коммитов. Давайте сначала разберемся, что это такое.
Коммит (commit) — это информация об измененных файлах. Коммит состоит из автора коммита, измененных файлов, HEAD и времени. Для примеров мы будем использовать репозиторий и сделаем первый коммит, который отправим на сервер. Он нужен для того, чтобы разграничивать задачки. Так будет понятно, какой код в истории относится к той или иной задаче, чтобы потом мы могли быстро понять суть.
Например, у нас задача — сделать блок формы. Для этого мы сделаем нужные изменения в файле index.html & style.css, и даже через месяц сможем при помощи истории изменений просмотреть измененные куски кода именно для этого блока.
При помощи команды git log в консоли мы можем отслеживать историю коммитов в ветке.
На самом GitHub мы можем увидеть последний коммит в файле и последний коммит в ветке. Всю историю мы можем просмотреть, кликнув по кнопке n commits, где n — количество запущенных на сервер коммитов. У нас в ветке пока что один коммит, поэтому на ссылке надпись 1 commit.
Сама история будет выглядеть как список коммитов без подробностей об изменённых файлах. Здесь давайте подробнее остановимся на том, что такое HEAD коммита. Это специальный указатель, при помощи которого вы можете гибко управлять коммитами — например, склеивать или сбрасывать до нужного момента.
Если вы кликните по сообщению в коммите, в нашем случае это add first commit, то попадёте в список всех изменённых файлов.
Теперь подробнее разберем, как создавать коммит. Для начала нам нужно будет поменять файлы или добавить новые, чтобы было что коммитить, так как коммит — это история изменений. Как правило, в коммит включают изменения по одной задаче.
В нашем примере мы изменим содержание страницы index.html и добавим стили в style.css.
Изменения, не включенные в коммит, мы можем просмотреть при помощи команды git status.
Чтобы добавить файлы в коммит, мы будем использовать git add. Здесь мы можем указать нужные нам файлы для коммита, например, index.html. Если после этого мы сделаем git status, то эти файлики подсветятся зелёным — это означает, что мы можем добавить их к коммиту.
Если мы запушим наш результат на GitHub, то увидим наш коммит.
После того, как мы поменяли наш коммит локально, запушим его на сервер при помощи ключа force. Обычный push не сработает, так как у нас уже есть коммит на сервере — здесь будьте аккуратны, ведь вы меняете историю не только локально, но и удалённо.
Теперь поговорим про ветки (branch). Ветка — это история изменений. Сейчас у в репозитории одна ветка main, в которой хранится стабильная версия. Как правило, новые задачи делаются в новых ветках, а потом вливаются в main после ревью кода.
Посмотрим, как выглядит наша ветка с двумя коммитами в графике.
Ветки можно просматривать при помощи команды git branch.
Пробежимся git log и сравним наши ветки.
Тем не менее, если мы зайдем на GitHub, то обнаружим, что у нас там только одна ветка — main. Так происходит, потому что ветка form-index существует пока только на нашем компьютере, то есть локально.
Чтобы наша новая ветка появилась на сервере, нам нужно запушить наши изменения.
Если посмотрим на историю коммитов в form, то увидим, что она отличается от main на один коммит.
Мы можем создавать новые ветки не только из main, но и из других веток — так делают редко. Самое главное здесь понять, что если мы создали новую ветку из другой ветки, то мы наследуем историю коммитов ветки, из которой создали ветвление, но только в момент создания.
Давайте создадим ветку form-index-fix и посмотрим на историю коммитов в ней.
Теперь поэкспериментируем и посмотрим, что будет, если мы внесём изменение в ветку и забудем их закоммитить: обычный механизм через checkout не сработает, консоль попросит закоммитить изменения.
Если ветку нужно удалить на сервере, то сделать это можно при помощи интерфейса GitHub — нет рекомендаций, когда нужно удалять удалённые ветки.
Как получить текущее название ветки в Git?
Я из фона Subversion и, когда у меня была ветка, я знал, над чем я работал, с «Эти рабочие файлы указывают на эту ветку».
Но с Git Я не уверен, когда редактирую файл в NetBeans или Notepad ++, независимо от того, привязан ли он к мастеру или другой ветке.
Нет проблем с git в bash, это говорит мне, что я делаю.
ОТВЕТЫ
Ответ 1
Если вы хотите получить только название ветки, в которой вы находитесь, вы можете сделать:
Ответ 2
Чтобы отобразить текущую ветку, в которой вы находитесь, без других перечисленных веток, вы можете сделать следующее:
Ответ 3
Чтобы отобразить только название ветки в Git v1.8 и более поздних версиях (спасибо Грегу за указание на это):
В Git v1.7 + вы также можете:
Оба должны указывать одно и то же имя ветки, если вы находитесь на ветке. Если вы находитесь в отдельной голове, ответы различаются.
На более раннем клиенте это работает:
— Дариен 26. Март 2014
Ответ 4
Для моей собственной справки (но это может быть полезно для других) я сделал обзор большинства (основных командных строк) методов, упомянутых в этом потоке, каждый из которых применяется к нескольким случаям использования: HEAD is (указывает на):
(К вашему сведению, это было сделано с помощью git версии 1.8.3.1)
Ответ 5
Еще одна альтернатива:
Ответ 6
Хорошо достаточно просто, я получил его в одном лайнере (bash)
(кредит: ограниченное искупление)
И пока я там, один лайнер для получения удаленной ветки отслеживания (если есть)
Ответ 7
Вы можете просто ввести командную строку (консоль) в Linux в каталоге репозитория:
и вы увидите текст, среди которого что-то похожее на:
Ответ 8
Я использую это в скриптах, которые нуждаются в текущем имени ветки. Он покажет вам текущую короткую символическую ссылку на HEAD, которая будет вашим текущим именем ветки.
Ответ 9
будет отображаться только название ветки
Ответ 10
Найденное решение командной строки той же длины, что и Oliver Refalo, используя хороший ol awk:
awk читает, что «делать вещи в <> в строках, соответствующих регулярному выражению». По умолчанию он принимает поля с разделителями пробелов, поэтому вы печатаете второй. Если вы можете предположить, что только строка с вашей ветвью имеет *, вы можете сбросить ^. Ах, bash гольф!
Ответ 11
git branch показывает только текущее имя ветки.
Хотя ветка git покажет вам все ветки и выделит текущую звездочку звездочкой, она может быть слишком громоздкой при работе с большим количеством веток.
Чтобы показать только ту ветку, в которой вы находитесь, используйте:
Ответ 12
Ответ 13
Как git-prompt.sh от contrib/ делает (git версия 2.3.0), как определено в __git_ps1 вспомогательной функции
Во-первых, есть особый случай, если обнаружена перебазировка. Git использует неименованный филиал (отдельный HEAD) во время процесса переадресации, чтобы сделать его атомарным, а исходная ветвь сохраняется в другом месте.
Я надеюсь, что это поможет.
Ответ 14
вы можете использовать git bash в рабочем каталоге команда выполняется следующим образом
он расскажет вам, на какой ветке вы находитесь есть много полезных команд, некоторые из которых
— короткая Дайте вывод в коротком формате.
— фарфоровая [=] Дайте результат в формате простого для разбора скриптов. Это похоже на короткий вывод, но будет оставаться стабильным в версиях git и независимо от пользовательской конфигурации. Подробнее см. Ниже.
Параметр версии используется для указания версии формата. Это необязательно и по умолчанию используется формат оригинальной версии v1.
— долго Дайте результат в формате long-format. Это значение по умолчанию.
Ответ 15
Извините, это еще один ответ командной строки, но это то, что я искал, когда нашел этот вопрос, и многие из этих ответов были полезны. Моим решением является следующая функция оболочки bash:
Ответ 16
Со временем у нас может быть действительно длинный список ветвей.
В то время как некоторые из других решений велики, вот что я делаю (упрощенное от ответа Иакова):
работает, но только если есть локальные изменения
Ответ 17
Я рекомендую использовать любую из этих двух команд.
ИЛИ (более многословно)
Ответ 18
Менее шумная версия для статуса git поможет
Ответ 19
В Netbeans убедитесь, что аннотации версий включены (View → Show Versioning Этикетки). Затем вы можете увидеть название ветки рядом с именем проекта.
Ответ 20
Ответ 21
У меня есть простой script, называемый git-cbr (текущая ветвь), которая выводит текущее название ветки.
Я помещаю этот script в пользовательскую папку (
Ответ 22
Откройте терминал (ctrl-alt-t) и введите команды
/.bashrc (для Ubuntu) и добавьте следующее вверху:
Затем вставьте код
в конце того же файла вы вставляли код установки ранее. Это даст вам раскрашенный результат:
Ответ 23
Следующая команда оболочки сообщает ветке, в которой вы находитесь.
Ответ 24
Если вы действительно хотите, чтобы последняя ветвь/тег была выгружена в отдельном состоянии HEAD.
Обновление Это лучше, если у вас есть и не боятся awk.
Ответ 25
также даст название ветки вместе с изменениями.
Ответ 26
Возвращает имя ветки или SHA1, когда на отдельной голове:
Это короткая версия ответа @dmaestro12 и без поддержки тегов.
Ответ 27
Я знаю, что это поздно, но на linux/mac, из терминала вы можете использовать следующее.
Ответ на приведенную выше команду будет выглядеть следующим образом:
Ответ 28
вы также можете использовать переменную GIT_BRANCH, как показано здесь: https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin
Плагин git устанавливает несколько переменных среды, которые вы можете использовать в своих скриптах:
Ответ 29
Добавьте его в PS1 используя Mac:
Перед запуском команды выше:
После выполнения этой команды:
Ответ 30
Прямая копия результата в картон. Благодаря @olivier-refalo для начала.