как узнать ветку git
Как узнать ветку git
Создание репозиториев
git init [project-name] — создать новый локальный репозиторий с заданным именем.
git clone [url] — загрузить проект и его полную историю изменений.
Работа с изменениями
git status — полный список изменений файлов, ожидающих коммита.
git diff — показать изменения в файлах, которые еще не были добавлены в индекс коммита (staged).
git add [file] — сделать указанный файл готовым для коммита.
git add ‘*.txt’ — добавить только файлы, соответствующие указанному выражению.
git diff HEAD — показать что изменилось с последнего коммита.
git diff HEAD^ — показать что изменилось с предпоследнего коммита.
git diff [branch] — сравнить текущую ветку с заданной.
git reset [file] — убрать файлы из индекса коммита (изменения не теряются).
git commit — записать изменения в репозиторий. для написания сообщения откроется назначенный редактор.
Работа с ветками
git branch — список всех локальных веток в текущей директории.
git branch [branch-name] — создать новую ветку.
git checkout [branch-name] — переключиться на указанную ветку и обновить рабочую директорию.
git checkout [filename] — вернуть файл в первоначальное состояние если он еще не был добавлен в индекс коммита.
git merge [branch] — соединить изменения в текущей ветке с изменениями из заданной.
Работа с файлами
git rm [file] — удалить файл из рабочей директории и добавить в индекс информацию об удалении.
git mv [file-original] [file-renamed] — изменить имя файла и добавить в индекс коммита.
Отслеживание файлов
.gitignore — текстовый файл, в котором задаются правила для исключения файлов из репозитория. Например:
Сохранение фрагментов
git stash — положить во временное хранилище все отслеживаемые файлы.
git stash pop — восстановить последние файлы, положенные во временное хранилище.
git stash list — список всех сохраненных изменений во временном хранилище.
git stash drop — удалить последние файлы, положенные во временное хранилище.
Просмотр истории
git log — список изменения текущей ветки.
git diff [file-branch]..[second-branch] — посмотреть различия между двумя заданными ветками.
git show [commit] — показать метадату и изменения в заданном коммите.
git show [branch]:[file] — посмотреть на файл в другой ветке, не переключаясь на неё.
Отмена коммитов
git reset — убрать изменения из индекса коммита, сами изменения останутся.
git reset [commit/tag] — отменить все коммиты после указанного коммита, изменения будут сохранены локально.
Синхронизация изменений
git fetch [bookmark] — загрузить всю историю с заданного удаленного репозитория.
git merge [bookmark]/[branch] — слить изменения локальной ветки и заданной удаленной.
git push — запушить текущую ветку в удаленную ветку.
git push [remote] [branch] — запушить ветку в указанный репозиторий и удаленную ветку.
git push [bookmark] :[branch] — в удаленном репозитории удалить заданную ветку.
git pull — загрузить историю и изменения удаленной ветки и произвести слияние с текущей веткой.
git pull [remote][branch] — указать конкретную удаленную ветку для слияния.
git remote — посмотреть список доступных удаленных репозиториев.
git remote add [remote][url] — добавить новый удаленный репозиторий.
Git checkout
Переключение веток аналогично переключению старых коммитов и файлов, в которых рабочий каталог обновляется в соответствии с выбранной веткой/ревизией; вместе с тем новые изменения сохраняются в истории проекта, то есть это не просто операция чтения.
Переключение веток
Наличие выделенной ветки для каждой новой функции сильно отличается от традиционного рабочего процесса в SVN. Это значительно облегчает проведение новых экспериментов без страха разрушить существующую функциональность и позволяет одновременно работать со множеством несвязанных функций. Кроме того, ветки облегчают ведение нескольких совместных рабочих процессов.
Использование: существующие ветки
В вышеприведенном примере показано, как просмотреть список доступных веток с помощью команды git branch и переключиться на конкретную ветку (в данном случае — на ветку feature_inprogress_branch ).
Новые ветки
Переключение веток
Переключение на удаленную ветку
При совместной работе команды нередко используют удаленные репозитории. Такие репозитории могут размещаться на сервере с предоставлением общего доступа либо это может быть локальная копия другого коллеги. Каждый удаленный репозиторий содержит собственный набор веток. Для переключения на удаленную ветку нужно сначала извлечь содержимое этой ветки.
В современных версиях Git переключение на удаленную ветку не отличается от переключения на локальную ветку.
В старых версиях Git необходимо создавать новую ветку на основе удаленного репозитория ( remote ).
Кроме того, можно переключиться на новую локальную ветку и сбросить ее до последнего коммита удаленной ветки.
Открепленные указатели HEAD
Резюме
Готовы попробовать ветвление?
Ознакомьтесь с этим интерактивным обучающим руководством.
Управление ветками
Теперь, когда вы уже попробовали создавать, объединять и удалять ветки, пора познакомиться с некоторыми инструментами для управления ветками, которые вам пригодятся, когда вы начнёте использовать ветки постоянно.
Команда git branch делает несколько больше, чем просто создаёт и удаляет ветки. При запуске без параметров, вы получите простой список имеющихся у вас веток:
Вы всегда можете указать дополнительный аргумент для вывода той же информации, но относительно указанной ветки предварительно не извлекая и не переходя на неё.
Переименование ветки
Не переименовывайте ветки, которые всё ещё используются другими участниками. Не переименовывайте ветку в master/main/mainline, не прочитав раздел «Изменение имени главной ветки».
Теперь проверим, где мы сейчас находимся:
Теперь старое имя ветки полностью заменено исправленным.
Изменение имени главной ветки
Изменение имени ветки, например master/main/mainline/default, сломает интеграции, службы, вспомогательные утилиты и скрипты сборки, которые использует ваш репозиторий. Прежде чем сделать это, обязательно проконсультируйтесь с коллегами. Также убедитесь, что вы выполнили тщательный поиск в своём репозитории и обновили все ссылки на старое имя ветки в вашем коде или скриптах.
Переименуйте локальную ветку master в main с помощью следующей команды:
В итоге, состояние репозитория становится следующим:
Теперь, для завершения перехода на новую ветку перед вами стоят следующие задачи:
Все проекты, которые зависят от текущего, должны будут обновить свой код и/или конфигурацию.
Обновите конфигурацию всех запускаемых тестов.
Исправьте скрипты сборки и публикации артефактов.
Поправьте настройки репозитория на сервере: задайте новую ветку по умолчанию, обновите правила слияния, а также прочие настройки, которые зависят от имени веток.
Обновите документацию, исправив ссылки, указывающие на старую ветку.
Слейте или отмените запросы на слияние изменений, нацеленные на старую ветку.
git узнать текущую ветку
Список локальных веток
Чтобы вывести список локальных веток используется команда:
Список удаленных веток
Перед тем, как выполнять данную команду, можно сначала обновить удаленные ветки у себя в репозитории, для этого используется команда:
git fetch загружает коммиты, файлы и ссылки из удаленного репозитория. Данная команда выполняется, когда вы хотите посмотреть, что изменилось в удаленном репозитории, что кто-то другой сделал в нем. При этом очень важно, что git fetch не изменяет никаких ваших локальных данных, над которыми вы работаете.
Список всех веток
Написал небольшой скрипт, который берет название ткущего бранча в гите, и использует его в дальнейших манипуляциях.
Для того, чтобы узнать название ветки, достаточно выполнить команду git branch.
Однако проблема заключается в том, что команда выводит список всех веток, помечая рабочую ветку звездочкой (*):
Из всего этого списка нам нужно вычленить название dev, да еще и без звездочки.
Есть сервер git, туда я поставил web-интерфейс, и надо прикрутить ctags на файлы, для этого надо обработать каждый push в hook’ах, решил я сделать две ветки на репозитории origin:
Надо теперь как то узнавать элейес репозитория (origin или др.), и ветку, по http такая информация не передается.
проделал я в локальном репе:
после этого я посмотрел файл head:
в .git/HEAD на клиенте: ref: refs/heads/dev
на сервере ref: refs/heads/master
dev была создана после master
но HEAD по сути должен же указывать на последний коммит в дереве изменений? Почему на сервере master?
вот еще выполнил на сервере:
1 ответ 1
предварительное напоминание
в git-е веткой (branch) называется «скользящий» указатель на commit, а не набор commit-ов, как принято в некоторых других системах управления контролем версий.
но HEAD по сути должен же указывать на последний коммит в дереве изменений? Почему на сервере master?
в bare-репозитории файл HEAD ссылается на «ветку по умолчанию», что в первую очередь влияет на результаты клонирования этого репозитория: если при клонировании не указано, на какую ветку следует переключить рабочий каталог (working directory) по окончании клонирования, именно на эту ветку и произойдёт переключение.
Как получить текущее название ветки в 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 для начала.