Редактор git как выйти
Git-как закрыть редактор фиксации?
6 ответов:
сохраните файл в Редакторе. Если это Emacs: CTRL X CTRL S сохранить затем CTRL X CTRL C чтобы выйти или если это vi: : w q
пресс esc во-первых, чтобы выйти из редактирования. (в windows/vi)
были проблемы, а также. На Linux я использовал Ctrl + X (и Y для подтверждения), а затем я вернулся на оболочку, готовую тянуть/толкать.
на Windows GIT Bash Ctrl + X ничего не сделал бы и узнал, что он работает совсем как vi/vim. Нажмите Я для входа в режим встроенной вставки. Введите описание в самом верху, нажмите esc чтобы выйти из режима вставки, введите :x! (теперь курсор находится в снизу) и ударил введите сохранить и выйти.
при вводе :q! вместо этого выйдет из редактора без сохранения (и фиксация будет прервана)
после написания сообщения фиксации, просто нажмите Esc кнопка, а затем написать : wq или : wq! а то введите чтобы закрыть файл unix.
еще лучше, настроить редактор на то, что вам удобно (gedit в качестве примера):
вы можете прочитать текущую конфигурацию такой:
вы также можете добавить сообщение фиксации из командной строки.
и редактор не будет открыт в первую очередь.
У меня была эта проблема, я рисовал a a > как подсказка, и я не мог совершить. Я меняю «в комментарии для’ и это работает.
Я надеюсь, что это поможет кому-то!
Как выйти из редактора Vi или Vim?
Работал в командной строке. Попал в странный текстовый редактор, в котором не работает мышка. Вижу сообщение
Но команда пишется прямо в текстовый файл и не выполняется.
Что делать, как выйти?
3 ответа 3
Добро пожаловать в Vim!
Клавиша Esc переключает Vim в нормальный режим. Если в этом режиме нажать : (проверьте, что установлена английская раскладка и снят CapsLock, затем одновременно нажмите Shift и ; ), то символ : появится в нижней части экрана, и редактор перейдёт в режим командной строки. Это гарантирует, что вы сейчас именно вводите команду, а не редактируете файл. Помните, что регистр вводимых команд важен.
Выйти безопасно (не срабатывает, если есть не сохраненные изменения)
Выйти с подтверждением (запрашивает подтверждение, если есть не сохраненные изменения)
Записать (сохранить) изменения и выйти
Отменить (и потерять) изменения и выйти
Нажмите Enter чтобы выполнить введенную команду.
Этот ответ все-таки не охватывает все возможные способы выйти из Vim. Полный список можно найти в документации Vim.
На момент публикации все ссылки верны и ведут на англоязычную версию документации, но сайт временно недоступен. Когда он поднимется, я добавлю ссылки на русскоязычную версию.
Работаем с Git, основные команды для начинающих
Кто вносил изменения в код можно определить по имени пользователя git. Для этого сообщим git свое имя и email-адрес. Для этого введите:
После инициализации каталога будет выведено соответствующее сообщение:
$ git add
Для этого понадобится выполнить команду:
$ git status
Чтобы зарегистрировать добавление вышеприведенных файлов необходимо выполнить следующую команду:
–a означает: добавить все изменения в индекс до передачи.
-m : сообщение.
Подтверждение с описанием выполненных действий.
Мы сделали «снимок кода». Теперь мы можем редактировать файлы и регистрировать наши изменения.
$ git stash
$ git stash list
Чтобы просмотреть все сохраненные, но не зарегистрированные изменения понадобится следующая команда:
На изображении у нас одно незарегистрированное изменение. В самом файле эти изменения не будут отображены.
$ git stash pop
Восстановить же изменения поможет следующая команда:
$ git merge
Ветвление
Ветка позволяет отделить работу, например, над каким-то компонентом от основного кода сайта.
$ git checkout –b
Чтобы создать новую ветку выполните команду:
git init (инициализируем git реп-й)
Чтобы проинициализировать Git репозиторий введите команду:
git status (Проверяем статус)
Комнада, выводяюща статус репозитория, чтобы увидеть в каком состоянии находится наш проект:
git add (добавляем файл)
Чтобы сообщить Git о том, что пора начать отслеживать изменения, внесенные в файл, мы сначала должны добавить его с помощью:
Сейчас git отслеживает наш файл test.txt. Давайте выполним
снова, чтобы понять, что изменилось!
git commit (фиксируем изменения)
Чтобы сохранить изменения на данном этапе мы выполним команду создания коммита и передадим ей в качестве аргумента сообщение, описывающие изменения, сделанные в этом коммите.
Используем маску
К счастью, у нас есть возможность добавить все файлы, используя шаблон. Не забывайте про кавычки!
git commit –a –m ”new comment here”
Коммитится только то, что проиндексировано. Индексирование происходит функцией add (она и добавляет файлы и индексирует их).
Коммит идет не сразу: файлы, которые находятся под присмотром ГИТ необходимо проиндексировать (то есть если нам нужно сделать коммит для 1-файла, то мы помещаем его в индекс и закоммитится только он). С помощью ключа –a мы индексируем ВСЕ файлы и, соответственно, сразу выполняем коммит (например,
—amend
Эта команда берет область индексирования (add) и включает в коммит всю обнаруженную там информаци. Например,
Второй коммит заменит результат первого и в итоге останется 1 коммит
Работаем с GitHub
Зарегистрируйтесь на GitHub. Создайте репозиторий.
Чтобы разместить наш локальный репозиторий на GitHub, мы должны добавить удаленный репозиторий.
Эта команда принимает имя удаленного репозитория и его URL. В нашем случае это https://github.com/try-git/try_git.git
Выполняем команду с указанными аргументами:
git remote add origin https://github.com/try-git/try_git.git
Плюсы и минусы bitbucket.org и GitHub
На bitbucket.org можно создавать неограниченное количество приватных репозиториев (плата взимается, если к репо привязываются более 5 пользователей). На GitHub большинство проектов open source, также для приватного репо уже приходится платить – даже для 1-го пользователя. Для своих проектов я рекомендую все же использовать bitbucket.org.
Процесс разработки:
Эта команда показывает имя удаленного репо, если такой имеется в наличии.
Ключ –v показывает путь к удаленному репо.
Подробно о любой команде можно узнать:
Коммитим и пушим на GitHub (global настройки matching и simple)
Если мы выполнима для настройки глобального конфига следующую команду:
То по команде git push произойдет следующее: если на боевом репо есть 2 ветки, которые соответствуют 2-м локальным веткам, то на удаленный репо протолкнутся эти 2 ветки.
В данном случае протолкнется лишь текущая ветка.
git remote (прсматриваем уд. реп.)
Команда git remote позволяет просмотреть удаленные репозитории
git remote add (добавляем уд. реп.)
Добавление удаленных репозиториев под короким именем:
git remote add [сокращенное имя] [url]
В уже сущест. реп. добавляем реп. сторонний и стягиваем из него ветку master
Иниц. пустой реп.
Добавляем реп.
извлекаем все данные (.git)
и стягиваем ветку master из реп. kuku
git remote show (получаем инфо. об уд. реп.)
Команда git remote show [имя удал. реп.] позволяет просмотреть дополнительную информацию о конкретном удал. реп.
git fetch (извлечение данных из уд. реп.)
Извлечение данных из уд. реп. выполняется командой:
После исполнения данной команды у вас должны появиться ссылки на все ветки удаленного проекта
git push (проталкиваем изменения)
где origin – это куда отправляем (удаленный репозитарий), а
master это то, что отправляем (в нашем случае master ).
git pull (стягиваем изменения)
Давайте представим, что прошло какое-то время. Мы пригласили других людей в наш проект, они забрали наши изменения в свои локальные репозитории и внесли свои изменения, запушили их. Мы можем проверить изменения на GitHub и спуллить их с помощью команды:
git pull origin master
Забираем изменения из ветки ( master ) на удаленном сервере ( origin ) и проводим слияние с активной веткой.
git diff, git diff HEAD
Команда git diff показывает не все изменения, сделанные с момента последней фиксации состояния, а только те, которые еще не проиндексированы.
Ой! Похоже, кто-то еще вносил изменения в наш проект! Давайте посмотрим, что изменилось, с нашего последнего коммита, с помощью команды
git reset (Откатываем изменения/удаляем файлы из промежуточной области)
git reset octofamily/octodog.txt
git log (информация о последних коммитах)
Иногда просто хочется вернуться назад и забыть все изменения до определенного момента, потому что все они были неправильными. В таком случае Для просмотра изменений (истории коммитов) используется команда
покажет список последних коммитов и их хеши SHA1.
На самом верху мы видим самый последний коммит. Функция log очень богатая – позволяет смотреть, что было до и что было после, у git хорошая помощь (faq), чтобы просмотреть все возможности log можно воспользоваться командой:
Например, мы можем выводить историю в более удобном формате:
Ограничиваем коммиты по времени:
—stat используется для получения краткой статистики по каждому коммиту.
—graph добавляет графику с историей ветвлений и слияний
git checkout (Отмена изменений)
Файла был удален из промежуточной области. Но сам файл все еще находится в проекте! Файлы могут быть возвращены в состояние последнего коммита с помощью команды:
Для указания коммита достаточно первых нескольких символов его хеша ( 82f5 ), но можете скопировать и весь хеш.
git checkout (получаем уд. ветку)
Для получения собственной копии [имя_ветки] (из уд. реп.) можно воспользоваться командой :
(?) или просто git checkout [имя_ветки] ; но тут главное, чтобы [имя_ветки] присутствовала в уд. реп.
git branch (создаем ветку)
Когда разработчики работают над новой фичей или багом, они обычно создают копию (или ветку) кода проекта, в которую они могут коммитить независимо. Когда разработка завершена, изменения из этой копии (ветки) нужно влить (вмержить) обратно в основную ветку проекта.
Давайте создадим новую ветку и назовем ее clean_up :
git branch clean_up
Данная команда не обращается к серверу, а а берет локальные данные из кэша.
Для получений актуальной информации как на удаленном так и на локальном серверах можно использовать команду:
git rm (удаляем файлы)
merge (смержим в текущую ветку другую)
git merge clean_up
git clone
$ mkdir epicgame & cd epicgame
$ git init
$ git remote add
$ git clone
rejected
Конфликты
Сообщение о конфликте:
В статусе ( git st ) появляется блок:
То есть в самом файле:
Это указатель на тот commit, с которым мы сейчас работаем. Нужно выбрать или оставить свои изменения ( // Fry comment ) или оставить строку пользователя Bender ( // Bender comment ).
Разные полезные команды:
Добавляем пользователя:
(задаем email глобально)
(данные о гите и о пользователе; хранятся в c:\users\name_user\.gitconfig )
Игнорирование файлов:
В самом файле указываем игнорирование, например:
$ git rm
СВОЙ РЕДАКТОР ДЛЯ КОММЕНТАРИЕВ
Без ключа –m откроется редактор vim ( 😡 – означает сохранить и выйти).
Поменяем редактрор по умолчанию (vim), он будет открываться в том случае, если мы не прописываем комментарий в командной строке.
Изменения можно проверить в C:\Users\name_user\.gitconfig
ВЕТКИ ($ git checkout –b new_branch)
Создаем ветку new_f и тут же переходим в нее.
С использованием –v показывает ветки с последними коммитами.
merge
Указываем какой утилитой будем разрешать конфликты
Далее в случае наличия CONFLICT прописываем (этим мы запускаем утилиту):
guides
Введение
Данное краткое руководство демонстрирует основные команды в терминале Bash:
Открытие терминала
Первая задача: открыть терминал сразу в нужном каталоге.
Linux
В Linux достаточно щёлкнуть правой кнопкой мыши на каталоге и выбрать пункт меню Open in Terminal или Открыть в терминале :
В Mac всё немного сложнее, необходимо настроить отображение этого пункта меню в Finder.
После чего при клике правой кнопкой мыши на каталоге появится необходимый пункт меню:
Windows (Git Bash)
Первоначальная настройка Git
Вы можете выполнять команды относительно текущего каталога или относительно абсолютного пути.
Bash (Git Bash в том числе) используют символ / для разделения каталогов.
Ещё два специальных обозначения помимо корня файловой системы:
Важно: в терминале символ ` ` (пробел) является символом, разделяющим команды и опции. Поэтому если в пути есть пробел, то варианта два:
Переменные окружения
Командная оболочка устанавливает ряд переменных, которые выполняют специфические функции. Так, переменная с именем PATH содержит список путей, в которых будет производиться поиск программы, если вы наберёте её название в терминале.
Для вывода содержимого конкретной переменной используется команда echo следующим образом:
Команда printenv позволяет отобразить все переменные окружения:
Видно, что в переменных окружения содержится достаточно много информации о системе.
Автодополнение
В командных оболочках работает автодополнение по клавише Tab :
Используйте автодополнение, так как оно позволяет сократить время на набор команды.
Ключевые команды
В этом разделе будут описаны ключевые команды, необходимые нам для работы. Естественно, список этот далеко не полный.
Текущий рабочий каталог
Отображение текущего рабочего каталога:
Смена рабочего каталога
Переход в определённый каталог:
path может быть как абсолютным, так и относительным путём.
Например, перейти на каталог выше:
Перейти в подкаталог src :
Листинг каталога
Отображает листинг (содержимое каталога):
Создание файлов
В рамках рассмотрения Bash мы рассмотрим два текстовых редактора, которые позволят вам создавать и редактировать файлы в псевдографическом режиме.
Для того, чтобы создать файл достаточно ввести команду nano и имя файла:
Откроется редактор следующего вида:
То есть чтобы записать файл и выйти следует последовательно нажать Ctrl + O (запись) и Ctrl + X (выход).
Редактор nano установлен в большинстве Unix-подобных операционных системах и Git Bash.
На освоение работы в Vim нужно потратить достаточно много времени, для этого вы можете воспользоваться интерактивным учебником vimtutor :
VS Code
В видео-лекциях используется VS Code. В Windows вы можете правой кнопкой открыть каталог сразу в VS Code.
Создание каталогов
Позволяет создавать каталоги (создаст каталог tmp в текущем каталоге):
Перемещение файлов и каталогов
Перемещение (переименование) файлов и каталогов:
Введение в Git: от установки до основных команд
Авторизуйтесь
Введение в Git: от установки до основных команд
Введение в Git — это почти всегда пошаговая инструкция, но не всегда достаточно понятная. Именно поэтому мы дополнили гайд схемами, которые сделают информацию максимально доступной.
Примечание Вы читаете улучшенную версию некогда выпущенной нами статьи.
Основы Git
Git — это система контроля версий (VCS), которая позволяет отслеживать и фиксировать изменения в коде: вы можете восстановить код в случае сбоя или откатить до более ранних версий. А ещё это must-have инструмент для взаимодействия нескольких разработчиков на одном проекте. Подробнее об этом в руководстве по командной разработке с Git.
Установка Git
Настройка конфигурационного файла
Первое, что нужно сделать, — настроить имя пользователя и email для идентификации. Эти настройки хранятся в конфигурационном файле.
Создаём Git-репозиторий
Коммиты
Основы работы с Git предполагают понимание коммитов. Команда git commit откроет текстовый редактор для ввода сообщения коммита. Также эта команда принимает несколько аргументов:
Советы для эффективного введения в Git:
История коммитов в Git
Коммиты хранят состояние файловой системы в определённый момент времени и указатели на предыдущие коммиты. Каждый коммит содержит уникальную контрольную сумму — идентификатор, который Git использует, чтобы ссылаться на коммит. Чтобы отслеживать историю, Git хранит указатель HEAD, который указывает на первый коммит (мы следуем по цепочке коммитов в обратном порядке, чтобы попасть к предыдущим коммитам).
Мы можем ссылаться на коммит либо через его контрольную сумму, либо через его позицию относительно HEAD, например HEAD
4 ссылается на коммит, который находится 4 коммитами ранее HEAD.
Файловая система Git
Git отслеживает файлы в трёх основных разделах:
Все основные команды по работе с файлами сводятся к пониманию того, как Git управляет этими тремя разделами. Существует распространённое заблуждение, что область подготовленных файлов только хранит изменения. Лучше думать об этих трёх разделах как об отдельных файловых системах, каждая из которых содержит свои копии файлов.
Просмотр изменений в файловых системах
Команда git status отображает все файлы, которые различаются между тремя разделами. У файлов есть 4 состояния:
Примечание Файл может быть одновременно в состоянии «изменён» и «подготовлен», если версия в рабочей директории новее, чем в области подготовленных файлов, которая в свою очередь новее версии в HEAD.
Чтобы посмотреть сами изменения, а не изменённые файлы, можно использовать следующие команды:
Обновление файловых систем
Команда git add обновляет область подготовленных файлов версиями файлов/папок из рабочей директории.
Команда git commit обновляет HEAD новым коммитом, который делает снимки файлов в области подготовленных файлов.
Действие команды git reset состоит из трёх потенциальных шагов:
С другой стороны, git checkout (уже без HEAD) перезаписывает версию файла в рабочей директории версией в области подготовленных файлов, то есть отменяет изменения с момента последней подготовленной версии.
Игнорирование файлов
Зачастую нам не нужно, чтобы Git отслеживал все файлы в репозитории, потому что в их число могут входить:
Просмотр изменений
Удалённые репозитории
При использовании команды git clone мы не только загружаем себе копию репозитория, но и неявно отслеживаем удалённый сервер, который находится по указанному адресу и которому присваивается имя origin.
Наиболее употребляемые команды:
Следующие команды работают с удалёнными ветками:
Таким образом несколько людей могут запрашивать изменения с сервера, делать изменения в локальных копиях и затем отправлять их на удалённый сервер, что позволяет взаимодействовать друг с другом в пределах одного репозитория.
GitHub
GitHub — это платформа, которая хранит Git-репозитории на своих серверах, и основы распределенной системы управления версиями Git подразумевает умение с ней работать. Вы можете хранить свои удалённые репозитории или участвовать в Open Source проектах на GitHub.
Да, есть и другие платформы, но GitHub идеален для введения в Git и дополняет VCS новыми возможностями.
После этого вам может понадобиться слить тематическую ветку вашего удалённого репозитория в основную ветку оригинального. Для этого вы можете создать новый Pull Request — запрос на внесение изменений, где GitHub проверяет наличие конфликтов прежде чем повзолить вам провести слияние. Зачастую существуют и другие проверки перед слиянием, например просмотр и одобрение кода или даже запуск тестов. В запросе можно обсудить код, а все коммиты, которые вы отправляете в удалённую тематическую ветку, будут автоматически добавлены в запрос, даже если он был создан до этих коммитов.
Работа с ветками
Ветвление — это возможность работать над разными версиями проекта: вместо одного списка с упорядоченными коммитами история будет расходиться в определённых точках. Каждая ветвь содержит легковесный указатель HEAD на последний коммит, что позволяет без лишних затрат создать много веток. Ветка по умолчанию называется master, но лучше назвать её в соответствии с разрабатываемой в ней функциональностью.
Итак, есть общий указатель HEAD и HEAD для каждой ветки. Переключение между ветками предполагает только перемещение HEAD в HEAD соответствующей ветки.
Локальный и удалённый репозитории могут иметь немало ветвей, поэтому когда вы отслеживаете удалённый репозиторий — отслеживается удалённая ветка ( git clone привязывает вашу ветку master к ветке origin/master удалённого репозитория).
Привязка к удалённой ветке:
В общем, git checkout связан с изменением места, на которое указывает HEAD ветки, что похоже на то, как git reset перемещает общий HEAD.
Прятки и чистка
Есть одна тонкость — при переключении веток Git требует, чтобы рабочее состояние было чистым, то есть все изменения в отслеживаемых файлах должны быть зафиксированы.
Прим. перев. Это не совсем так. При некоторых обстоятельствах Git может автоматически перенести незафиксированное изменение в другую ветку.
Слияние
Ветку, в которую мы хотим слить изменения, будем называть основной, а ветку, из которой мы будем их сливать, — тематической.
После открытия таких файлов вы увидите похожие маркеры разрешения конфликта:
Замените в этом блоке всё на версию, которую вы хотите оставить, и подготовьте файл. После разрешения всех конфликтов можно использовать git commit для завершения слияния.
Перемещение
Вместо совмещения двух ветвей коммитом слияния, перемещение заново воспроизводит коммиты тематической ветки в виде набора новых коммитов базовой ветки, что выливается в более чистую историю коммитов.
Перемещение vs. слияние
После слияния лог с историей может выглядеть довольно беспорядочно. С другой стороны, перемещение позволяет переписать историю в нормальной, последовательной форме. Но перемещение — не панацея от запутанных логов: перемещённые коммиты отличаются от оригинальных, хотя и имеют одного и того же автора, сообщение и изменения.
Перемещайте изменения только на вашей приватной локальной ветке — не перемещайте коммиты, от которых зависит ещё кто-то.
Откат коммитов — revert и reset
Похожие дебаты по поводу того, что лучше использовать, возникают, когда вы хотите откатить коммит. Команда git revert создаёт новый коммит, отменяющий изменения, но сохраняющий историю, в то время как git reset перемещает указатель HEAD, предоставляя более чистую историю (словно бы этого коммита никогда и не было). Важно отметить, что это также означает, что вы больше не сможете вернуться обратно к этим изменениям, например, если вы всё-таки решите, что отмена коммита была лишней. Чище — не значит лучше!
Продвинутое использование
На этом основное введение в Git заканчивается, и начинается более глубокое изучение.
Интерактивная подготовка
Правка истории
Вы можете поменять порядок коммитов, изменив порядок, в котором они перечислены.
Изменение сообщения/разбивка коммитов
Перезапись нескольких коммитов
Объединение нескольких коммитов
Если коммиты незначительные и небольшие, это может засорить историю проекта. В связи с этим можно объединить несколько коммитов в один большой. Используйте команду pick для выбора первого коммита и squash для последующих.
Перенос отдельного коммита
Обратите внимание, что таким образом создаётся новый коммит, который только повторяет diff выбранного коммита (то есть разницу между этим коммитом и предыдущим), но не его состояние.