{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Git ",
    "_rss_description": "Git — распределённая система управления версиями, которая позволяет разработчикам отслеживать изменения в коде и координировать работу над проектами. Здесь я рассказываю, что нового узнал о Git.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/modenov.ru\/blog\/tags\/git\/",
    "feed_url": "https:\/\/modenov.ru\/blog\/tags\/git\/json\/",
    "icon": "https:\/\/modenov.ru\/blog\/pictures\/userpic\/userpic@2x.jpg?1756117061",
    "authors": [
        {
            "name": "Владимир Моденов",
            "url": "https:\/\/modenov.ru\/blog\/",
            "avatar": "https:\/\/modenov.ru\/blog\/pictures\/userpic\/userpic@2x.jpg?1756117061"
        }
    ],
    "items": [
        {
            "id": "86",
            "url": "https:\/\/modenov.ru\/blog\/all\/samye-chasto-ispolzuemye-komandy-git-na-kazhdy-den\/",
            "title": "Самые часто используемые команды Git на каждый день",
            "content_html": "<p>В своей работе с <a href=\"https:\/\/habr.com\/ru\/articles\/541258\/\">гитом<\/a> я чаще использую одни и те же команды (работаю через консоль в операционной системе, чтобы быстрее привыкнуть ко всем командам, которые я изучаю). Чтобы новичку было проще ориентироваться в часто используемых командах Git, я создал эту шпаргалку. И себе повторить, и другим в помощь.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg\" width=\"1600\" height=\"1000\" alt=\"Самые часто используемые команды Git\" \/>\n<\/div>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git init<\/code><\/pre><p>Инициализирует новый Git-репозиторий в текущей директории. Эта команда создаст новый подкаталог <tt>.git<\/tt>, который будет содержать все необходимые файлы для репозитория.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git clone https:\/\/github.com\/username\/repo.git<\/code><\/pre><p>Клонирует удалённый репозиторий на ваш локальный компьютер. Команда создаст копию репозитория repo в текущей директории.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git add файл.txt<\/code><\/pre><p>Добавляет изменения в индекс (staging area) для последующего коммита. Эта команда добавит файл <tt>файл.txt<\/tt> в индекс. Чтобы добавить все изменения, можно использовать команду <tt>git add .<\/tt><\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git commit -m &quot;Сообщение о коммите&quot;<\/code><\/pre><p>Сохраняет изменения из индекса в репозиторий. Команда создаст новый коммит с указанным сообщением.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git status<\/code><\/pre><p>Показывает текущее состояние рабочего каталога и индекса. Команда выведет информацию о том, какие файлы изменены, добавлены в индекс или не отслеживаются.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git log<\/code><\/pre><p>Показывает историю коммитов в текущей ветке. Команда выведет список всех коммитов с их хешами, авторами и сообщениями.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git branch<\/code><\/pre><p>Показывает список веток или создаёт новую ветку. Эта команда выведет список всех локальных веток. Чтобы создать новую ветку, используйте команду:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git branch новая-ветка<\/code><\/pre><h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git checkout новая-ветка<\/code><\/pre><p>Переключает на другую ветку или восстанавливает файлы. Эта команда переключит вас на ветку <tt>новая-ветка<\/tt>. Чтобы восстановить файл, используйте команду:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git checkout файл.txt<\/code><\/pre><h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git merge другая-ветка<\/code><\/pre><p>Объединяет изменения из одной ветки в другую. Эта команда объединит изменения из ветки <tt>другая-ветка<\/tt> в текущую ветку.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git pull origin main<\/code><\/pre><p>Загружает изменения из удалённого репозитория и объединяет их с текущей веткой. Команда загрузит изменения из ветки <tt>main<\/tt> удалённого репозитория <tt>origin<\/tt> и объединит их с текущей веткой.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git push origin main<\/code><\/pre><p>Отправляет локальные коммиты в удалённый репозиторий. Эта команда отправит изменения из локальной ветки <tt>main<\/tt> в удалённый репозиторий <tt>origin<\/tt>.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git stash<\/code><\/pre><p>Сохраняет текущие изменения в «стэш» для временного хранения. Команда сохранит все изменения и вернёт рабочий каталог в состояние последнего коммита.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git reflog<\/code><\/pre><p>Команда показывает журнал ссылок, позволяя отслеживать изменения <tt>HEAD<\/tt>.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git reset --hard HEAD~1<\/code><\/pre><p>Сбрасывает изменения в индексе или рабочем каталоге. Эта команда вернёт репозиторий на один коммит назад, удалив все изменения.<\/p>\n<h2>***<\/h2>\n<pre class=\"e2-text-code\"><code class=\"\">git tag -a v1.0 -m &quot;Версия 1.0&quot;<\/code><\/pre><p>Создаёт метку (тег) для определённого коммита. Команда создаст аннотированный тег <tt>v1.0<\/tt> с сообщением.<\/p>\n<h2>***<\/h2>\n<p>Шпаргалку создал; шпаргалку опубликовал. Кто молодец? Вовка молодец. И вы, что дочитали!<\/p>\n<p>Понятное дело, что список далеко неполный, и вообще здесь мало по-настоящему продвинутых команд и техник работы с гитом в командах. Но начать, а самое главное — публиковать в удалённые репозитории 99% своего кода этого хватит просто с лихвой.<\/p>\n",
            "summary": "В своей работе с Git я чаще использую одни и те же команды. Чтобы новичку было проще ориентироваться в них, я создал эту шпаргалку. И себе повторить, и другим в помощь.",
            "date_published": "2024-08-31T22:36:09+03:00",
            "date_modified": "2024-08-31T22:36:04+03:00",
            "tags": [
                "git",
                "разработка"
            ],
            "image": "https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg",
            "_date_published_rfc2822": "Sat, 31 Aug 2024 22:36:09 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "86",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg",
                    "https:\/\/modenov.ru\/blog\/pictures\/frontend.png"
                ]
            }
        },
        {
            "id": "85",
            "url": "https:\/\/modenov.ru\/blog\/all\/chto-delaet-komanda-git-reflog-i-kak-ona-rabotaet\/",
            "title": "Что делает команда git reflog и как она работает?",
            "content_html": "<p>Команда <tt>git reflog<\/tt> в Git используется для отображения журнала ссылок (reflog) в репозитории. Этот журнал хранит информацию о всех изменениях, которые происходили с указателями (например, ветками и HEAD). Этот инструмент позволяет отслеживать, где находились ветки и какие коммиты были сделаны, даже если они не видны в обычной истории коммитов.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg\" width=\"1600\" height=\"1000\" alt=\"команда git reflog Git\" \/>\n<\/div>\n<h2>Как работает команда git reflog<\/h2>\n<p>Каждый раз, когда вы выполняете операции, которые изменяют состояние вашего репозитория (например, коммиты, переключение веток, слияния и т. д.), Git записывает это изменение в reflog. Это позволяет вернуться к предыдущим состояниям, даже если вы потеряли доступ к ним через обычные команды (к примеру, <tt>git log<\/tt>).<\/p>\n<h2>Основные команды и примеры:<\/h2>\n<p>✵ Просмотр reflog:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git reflog<\/code><\/pre><p>Эта команда выведет список всех изменений, которые произошли с HEAD, включая коммиты, переключения веток и другие операции. Каждая запись будет содержать хеш коммита, описание действия и дату.<\/p>\n<p>✵ Восстановление состояния из reflog:<\/p>\n<p>Если вы случайно удалили ветку или сделали `reset`, вы можете использовать reflog, чтобы найти нужный коммит и восстановить его. Например, если вы видите в выводе `git reflog` запись с хешем `abc1234`, вы можете вернуться к этому коммиту:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git checkout abc1234<\/code><\/pre><h2>Пример использования:<\/h2>\n<p>Предположим, вы работаете над проектом и сделали несколько коммитов. Затем вы случайно выполнили команду<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git reset --hard HEAD~2<\/code><\/pre><p>, что вернуло ваш репозиторий на два коммита назад, и вы потеряли последние два коммита.<\/p>\n<p>✵ Вы можете проверить reflog, чтобы увидеть, где находился HEAD до выполнения команды:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git reflog<\/code><\/pre><p>✵ В выводе вы увидите что-то вроде этого:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">abc1234 HEAD@{0}: reset: moving to HEAD~2\ndef5678 HEAD@{1}: commit: Добавлен новый функционал\nghi9012 HEAD@{2}: commit: Исправлена ошибка<\/code><\/pre><p>✵ Теперь можно восстановить последний коммит, используя его хеш:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git checkout def5678<\/code><\/pre><p>✵ Если захотите вернуть HEAD на это состояние, можете выполнить:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git reset --hard def5678<\/code><\/pre>",
            "summary": "Что делает команда git reflog и как она работает в Git? Рассказываю и показываю в небольшой заметке в своём блоге.",
            "date_published": "2024-08-29T22:28:30+03:00",
            "date_modified": "2024-08-29T22:28:16+03:00",
            "tags": [
                "git",
                "разработка"
            ],
            "image": "https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg",
            "_date_published_rfc2822": "Thu, 29 Aug 2024 22:28:30 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "85",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg",
                    "https:\/\/modenov.ru\/blog\/pictures\/frontend.png"
                ]
            }
        },
        {
            "id": "84",
            "url": "https:\/\/modenov.ru\/blog\/all\/komanda-git-stash-dlya-chego-nuzhna-i-kak-rabotaet\/",
            "title": "Команда git stash: для чего нужна и как работает",
            "content_html": "<p>Команда <tt>git stash<\/tt> в Git используется для временного сохранения (или «прихоронения») изменений в рабочем каталоге, чтобы вы могли вернуться к чистому состоянию репозитория. Это полезно, когда вам нужно переключиться на другую ветку или выполнить другую задачу, но вы не хотите коммитить незавершенные изменения.<\/p>\n<p>Подробнее — в этой небольшой заметке.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg\" width=\"1600\" height=\"1000\" alt=\"Команда git stash\" \/>\n<\/div>\n<p>Когда вы выполняете команду <tt>git stash<\/tt>, Git сохраняет ваши изменения (как в отслеживаемых, так и в неотслеживаемых файлах) и возвращает рабочий каталог в состояние последнего коммита. Вы можете позже восстановить эти изменения.<\/p>\n<h2>Основные команды и примеры:<\/h2>\n<p>✵ Сохранение изменений в stash:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash<\/code><\/pre><p>Это сохранит все изменения в отслеживаемых файлах и вернет рабочий каталог в состояние последнего коммита.<\/p>\n<p>✵ Сохранение изменений с сообщением:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash save &quot;Сообщение о стэше&quot;<\/code><\/pre><p>Это позволяет вам добавить описание к вашему stash, что может быть полезно для идентификации изменений позже.<\/p>\n<p>✵ Просмотр списка сохраненных stash:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash list<\/code><\/pre><p>Эта команда покажет список всех сохраненных stash с их идентификаторами и сообщениями.<\/p>\n<p>✵ Восстановление изменений из stash:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash apply<\/code><\/pre><p>Эта команда применит последние сохраненные изменения из stash к вашему рабочему каталогу, но не удалит их из списка stash.<\/p>\n<p>✵ Восстановление конкретного stash:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash apply stash@{1}<\/code><\/pre><p>Здесь <tt>stash@{1}<\/tt> — это идентификатор конкретного stash, который вы хотите восстановить.<\/p>\n<p>✵ Удаление stash после применения: если вы хотите удалить stash после его применения, используйте:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash pop<\/code><\/pre><p>Эта команда применит изменения и удалит их из списка stash.<\/p>\n<p>✵ Удаление конкретного stash:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash drop stash@{0}<\/code><\/pre><p>Это удалит указанный stash из списка.<\/p>\n<p>✵ Очистка всех stash:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash clear<\/code><\/pre><p>Эта команда удалит все сохраненные stash.<\/p>\n<h2>Пример использования:<\/h2>\n<p>Предположим, вы работаете над новой функцией в ветке <i>feature<\/i>, и у вас есть незавершенные изменения. Вдруг вам нужно переключиться на ветку <i>main<\/i>, чтобы исправить срочную ошибку.<\/p>\n<p>✵ Вы сохраняете свои изменения:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash<\/code><\/pre><p>✵ Переключаетесь на ветку <i>main<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git checkout main<\/code><\/pre><p>✵ Исправляете ошибку и коммитите изменения.<\/p>\n<p>✵ Возвращаетесь к ветке <i>feature<\/i>:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git checkout feature<\/code><\/pre><p>✵ Восстанавливаете свои изменения:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">git stash pop<\/code><\/pre><p>Теперь вы можете продолжить работу над своей функцией с сохраненными изменениями.<\/p>\n",
            "summary": "Для чего и где используется команда git stash в Git? Это бывает полезно, когда вам нужно переключиться на другую ветку или выполнить другую задачу, но вы не хотите коммитить незавершенные изменения. Подробнее в блоге.",
            "date_published": "2024-08-29T22:14:39+03:00",
            "date_modified": "2024-08-29T22:14:07+03:00",
            "tags": [
                "git",
                "разработка"
            ],
            "image": "https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg",
            "_date_published_rfc2822": "Thu, 29 Aug 2024 22:14:39 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "84",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "highlight\/highlight.js",
                    "highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg",
                    "https:\/\/modenov.ru\/blog\/pictures\/frontend.png"
                ]
            }
        },
        {
            "id": "87",
            "url": "https:\/\/modenov.ru\/blog\/all\/poluchil-dva-novyh-sertifikata-s-purpleschool\/",
            "title": "Получил два новых сертификата в школе PurpleSchool",
            "content_html": "<p>По Git’у и общим принципам современной разработки.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1697\" data-ratio=\"1.4141666666667\">\n<img src=\"https:\/\/modenov.ru\/blog\/pictures\/modenov-cert-code-basics-purpleschool.jpg\" width=\"1697\" height=\"1200\" alt=\"PurpleSchool сертификат\" \/>\n<img src=\"https:\/\/modenov.ru\/blog\/pictures\/modenov-cert-git-purpleschool.jpg\" width=\"1697\" height=\"1200\" alt=\"PurpleSchool сертификат\" \/>\n<\/div>\n<\/div>\n<p>Недавно увлёкся веб-разработкой и решил с самого начала потихонечку идти по собственному роадмапу в этом направлении. В качестве основного источника знаний выбрал школу <a href=\"https:\/\/purpleschool.ru\/profession\/frontend?utm_source=ref&utm_campaign=ref&referralId=9601\">PurpleSchool<\/a>. В отличие от других российских онлайн-школ, PurpleSchool не тратит деньги на агрессивный маркетинг и бездумный набор учеников, а концентрируется на точечном обучении своих студентов фронтенду и бекенду.<\/p>\n<p>Основатель и преподаватель школы — разработчик Антон Ларичев, и мне очень нравится, как он объясняет материал. Пока закончил два модуля и буду двигаться дальше.<\/p>\n<h2>Мои области развития потихонечку, но ползут вперёд:<\/h2>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/modenov.ru\/blog\/pictures\/purpleschool.png\" width=\"2117\" height=\"1411\" alt=\"PurpleSchool карта развития фронтенд\" \/>\n<\/div>\n<p>Если вам тоже хочется развиваться в этом направлении — вот <a href=\"https:\/\/purpleschool.ru\/profession\/frontend?utm_source=ref&utm_campaign=ref&referralId=9601\">ссылка на курс<\/a>, который я сейчас сам прохожу.<\/p>\n",
            "summary": "Рассказываю про школу онлайн образования PurpleSchool, в которой я сейчас прохожу курс фронтенд-разработчика.",
            "date_published": "2024-08-29T18:39:48+03:00",
            "date_modified": "2024-08-31T23:37:53+03:00",
            "tags": [
                "git",
                "образование",
                "разработка",
                "сервисы",
                "фронтенд"
            ],
            "image": "https:\/\/modenov.ru\/blog\/pictures\/modenov-cert-code-basics-purpleschool.jpg",
            "_date_published_rfc2822": "Thu, 29 Aug 2024 18:39:48 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "87",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "jquery\/jquery.js",
                    "fotorama\/fotorama.css",
                    "fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/modenov.ru\/blog\/pictures\/modenov-cert-code-basics-purpleschool.jpg",
                    "https:\/\/modenov.ru\/blog\/pictures\/modenov-cert-git-purpleschool.jpg",
                    "https:\/\/modenov.ru\/blog\/pictures\/purpleschool.png",
                    "https:\/\/modenov.ru\/blog\/pictures\/git-logo.jpg",
                    "https:\/\/modenov.ru\/blog\/pictures\/education.jpg",
                    "https:\/\/modenov.ru\/blog\/pictures\/frontend.png",
                    "https:\/\/modenov.ru\/blog\/pictures\/2024-04-26-00-40-34-Nastroika-Yandeks.Diska.png"
                ]
            }
        }
    ],
    "_e2_version": 4199,
    "_e2_ua_string": "Aegea 11.5 (v4199)"
}