как узнать текущую ветку 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

Чтобы исправить баг или сделать новую фитчу в проекте, обычно создают новую ветку. Зачем? Чтобы избежать путаницы. Если бы все делалось в основной ветке, в проекте было бы сложно разобраться, особенно если над ним одновременно работает много людей.
Поэтому только по окончании работы над задачей изменения в ветке сливают в основную ветку master.

Создание ветки

Чтобы создать новую ветку testing локально, выполним команду:

На момент выполнения команды вы находились в какой-то ветке, допустим в master. Состояние этой ветки будет скопировано в ветку testing, и в testing можно будет редактировать файлы и делать снимки, не трогая пока основную ветку master.

Переключение на ветку

Предыдущая команда создаст ветку, но не переключит нас на нее, мы все еще останемся работать в старой ветке. Чтобы перейти на ветку testing и начать работать в ней, выполним команду:

Имейте в виду, что GIT не позволит перейти на другую ветку, если в текущей ветке – в которой мы находимся – есть изменения, которые не зафиксированы (commit) либо не спрятаны (stash). Это нормально, ведь при смене ветке в текущем каталоге сменятся файлы, и git-у надо знать, как быть с текущими изменениями.

Читайте также:  ламерский вопрос что это

Создание и переключение единой командой

Чтобы не выполнять предыдущие команды по очереди, можно написать их одной строкой:

Эта команда создаст ветку testing и сразу переключит нас на нее. Обычно именно это и требуется сделать.

Как переключиться на чью-то ветку из удаленного репозитория

Важно понимать, что GIT не позволит вам работать над чужой веткой. Принцип такой – вы создаете локальную копию чужой ветки, и над ней уже работаете.

Но для начала надо обновить локальный репозиторий – скопировать в него все ветки, которые есть в удаленном репозитории:

Теперь можно посмотреть, какие ветки есть в удаленном репозитории:

Допустим, там есть ветка dev1. Переключимся на нее, создав локальную ветку с таким же именем:

Вообще-то можно было написать проще:

Как создать подветку ветки

Обычно мы ответвляемся от основной ветки master, но не всегда. Иногда требуется сделать ответвление от созданной ветки – так сказать, ответвление второго порядка.

Предыдущая команда, с помощью которой мы создавали ветку:

создает ответвление от основной ветки master.

Если нам надо ответвиться не от основной ветки, а от вновь созданной testing, то выполним поочередно команды:

Первая команда переключит нас на ветку testing.
Вторая команда создаст ветку с именем subbranch_of_testing, ответвляющуюся от testing, и переключит нас на нее.
Как понятно из имени, subbranch_of_testing – это подветка ветки testing.

Как посмотреть ветки

Чтобы увидеть все созданные локально ветки, выполним команду:

Появится список веток. Текущая ветка будет выделена звездочкой.

Как переименовать ветку

Иногда оказывается, что первоначально созданное имя ветки не самое лучшее. Его можно изменить.

Локальную

Если еще не выполнена команда push, то достаточно переименовать локальную ветку.

Чтобы переименовать локальную ветку, выполним команду:

Например, переименуем ветку testing в ветку test:

Чтобы переименовать текущую ветку, выполним команду:

Например, текущая ветка у нас subbranch_of_testing. Переименуем ее в subbranch:

Удаленную

Переименовать удаленную ветку (ветку в удаленном репозитории) нельзя. Можно удалить ее и отправить в репозиторий локальную ветку с новым именем:

здесь origin – имя удаленного репозитория (обычно удаленный репозиторий так называется),
old-name – имя ветки локальной ветки,
new-name – новое имя ветки в удаленном репозитории.

Например, надо переименовать ветку testing в test:

Удаление локальной ветки

Чтобы удалить локальную ветку, выполните одну из команд:

Флаги:
-D сокращение для –delete –force удаляет ветку независимо от того, слиты ли ее изменения
-d сокращение для –delete
Например, удалим локальную ветку test:

Вообще-то локальную ветку обычно удаляют после того, как слили ее (выполнили merge) в ветку master, смотрите последний раздел в статье о слиянии веток.

Удаление ветки из удаленного репозитория

Чтобы удалить удаленную ветку, можно использовать две записи.
Либо через двоеточие, как мы уже делали при переименовании ветки:

Например, удалим ветку test из удаленного репозитория origin:

Либо с флагом –delete, так понятнее:

здесь origin – имя удаленного репозитория

Как слить ветки

Обычно сливают некоторую ветку (например, ветку-багфикс) в ветку master. Для этого сначала перейдем в ветку master (в ту ветку, в которую вливаем изменения):

А затем выполним слияние. Допустим, в ветку master надо слить ветку test :

Слияние веток не всегда происходит гладко, иногда требуется разрешить конфликты вручную. Для этого надо отредактировать конфликтые файлы, выполнить их commit.

В этой статье мы рассмотрели работу с ветками GIT и составили небольшую шпаргалку по использованию веток.

Источник

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?

Есть сервер 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, в которой представлены основные команды

Шпаргалка по основным командам

git add

Команда git add добавляет содержимое рабочей директории в индекс (staging area) для последующего коммита. По умолчанию git commit использует лишь этот индекс, так что вы можете использовать git add для сборки слепка вашего следующего коммита.

git status

Команда git status показывает состояния файлов в рабочей директории и индексе: какие файлы изменены, но не добавлены в индекс; какие ожидают коммита в индексе. Вдобавок к этому выводятся подсказки о том, как изменить состояние файлов.

git diff

git difftool

git commit

git reset

git rm

Команда git rm используется в Git для удаления файлов из индекса и рабочей директории. Она похожа на git add с тем лишь исключением, что она удаляет, а не добавляет файлы для следующего коммита.

git mv

Команда git mv — это всего лишь удобный способ переместить файл, а затем выполнить git add для нового файла и git rm для старого.

Читайте также:  как удалить ненужные шрифты в windows 10

git clean

Команда git clean используется для удаления мусора из рабочей директории. Это могут быть результаты сборки проекта или файлы конфликтов слияний.

Шпаргалка по ветвлению и слиянию

git branch

Команда git branch — это своего рода “менеджер веток”. Она умеет перечислять ваши ветки, создавать новые, удалять и переименовывать их.

git checkout

Команда git checkout используется для переключения веток и выгрузки их содержимого в рабочую директорию.

git merge

Команда git merge используется для слияния одной или нескольких веток в текущую. Затем она устанавливает указатель текущей ветки на результирующий коммит.

git mergetool

Команда git mergetool просто вызывает внешнюю программу слияний, в случае если у вас возникли проблемы слияния.

git log

Команда git log используется для просмотра истории коммитов, начиная с самого свежего и уходя к истокам проекта. По умолчанию, она показывает лишь историю текущей ветки, но может быть настроена на вывод истории других, даже нескольких сразу, веток. Также её можно использовать для просмотра различий между ветками на уровне коммитов.

git stash

Команда git stash используется для временного сохранения всех незакоммиченных изменений для очистки рабочей директории без необходимости коммитить незавершённую работу в новую ветку.

git tag

Команда git tag используется для задания постоянной метки на какой-либо момент в истории проекта. Обычно она используется для релизов.

Шпаргалка по совместной работе и обновлению проектов

Не так уж много команд в Git требуют сетевого подключения для своей работы, практически все команды оперируют с локальной копией проекта. Когда вы готовы поделиться своими наработками, всего несколько команд помогут вам работать с удалёнными репозиториями.

git fetch

Команда git fetch связывается с удалённым репозиторием и забирает из него все изменения, которых у вас пока нет и сохраняет их локально.

git pull

git push

Команда git push используется для установления связи с удалённым репозиторием, вычисления локальных изменений отсутствующих в нём, и собственно их передачи в вышеупомянутый репозиторий. Этой команде нужно право на запись в репозиторий, поэтому она использует аутентификацию.

git remote

Команда git remote служит для управления списком удалённых репозиториев. Она позволяет сохранять длинные URL репозиториев в виде понятных коротких строк, например «origin», так что вам не придётся забивать голову всякой ерундой и набирать её каждый раз для связи с сервером. Вы можете использовать несколько удалённых репозиториев для работы и git remote поможет добавлять, изменять и удалять их.

git archive

Команда git archive используется для упаковки в архив указанных коммитов или всего репозитория.

git submodule

Шпаргалка по осмотру и сравнению

git show

Команда git show отображает объект в простом и человекопонятном виде. Обычно она используется для просмотра информации о метке или коммите.

git shortlog

git describe

Команда git describe принимает на вход что угодно, что можно трактовать как коммит (ветку, тег) и выводит более-менее человекочитаемую строку, которая не изменится в будущем для данного коммита. Это может быть использовано как более удобная, но по-прежнему уникальная, замена SHA-1.

Шпаргалка по отладке

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

git bisect

Команда git bisect — это чрезвычайно полезная утилита для поиска коммита в котором впервые проявился баг или проблема с помощью автоматического бинарного поиска.

git blame

Команда git blame выводит перед каждой строкой файла SHA-1 коммита, последний раз менявшего эту строку и автора этого коммита. Это помогает в поисках человека, которому нужно задавать вопросы о проблемном куске кода.

git grep

Команда git grep используется для поиска любой строки или регулярного выражения в любом из файлов вашего проекта, даже в более ранних его версиях.

Если вы только начинаете работать с Git, или переходите на Git с другой СКВ, то такая шпаргалка может вам очень пригодиться.

Источник

Образовательный портал