<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://178.140.10.58:8080/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://178.140.10.58:8080/feed.php">
        <title>Библиотека знаний - unix:git</title>
        <description>Заметки IT программиста</description>
        <link>http://178.140.10.58:8080/</link>
        <image rdf:resource="http://178.140.10.58:8080/lib/exe/fetch.php?media=wiki:dokuwiki.svg" />
       <dc:date>2026-04-17T09:30:37+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://178.140.10.58:8080/doku.php?id=unix:git:gitignore"/>
                <rdf:li rdf:resource="http://178.140.10.58:8080/doku.php?id=unix:git:history-change"/>
                <rdf:li rdf:resource="http://178.140.10.58:8080/doku.php?id=unix:git:mini-doc"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://178.140.10.58:8080/lib/exe/fetch.php?media=wiki:dokuwiki.svg">
        <title>Библиотека знаний</title>
        <link>http://178.140.10.58:8080/</link>
        <url>http://178.140.10.58:8080/lib/exe/fetch.php?media=wiki:dokuwiki.svg</url>
    </image>
    <item rdf:about="http://178.140.10.58:8080/doku.php?id=unix:git:gitignore">
        <dc:format>text/html</dc:format>
        <dc:date>2017-02-16T02:04:01+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>.gitignore файл</title>
        <link>http://178.140.10.58:8080/doku.php?id=unix:git:gitignore</link>
        <description>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:scm&amp;amp;do=showtag&amp;amp;tag=scm&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:scm&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; scm&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:git&amp;amp;do=showtag&amp;amp;tag=git&quot; class=&quot;wikilink1 tag label label-default mx-1&quot; title=&quot;tag:git&quot; rel=&quot;tag&quot;&gt;&lt;span class=&quot;iconify&quot;  data-icon=&quot;mdi:tag-text-outline&quot;&gt;&lt;/span&gt; git&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;gitignore_файл&quot;&gt;.gitignore файл&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;div class=&quot;plugin_note noteimportant&quot;&gt;Внимание .gitignore работает только с теми файлами, которые не содержатся в репозитории.
&lt;p&gt;
If a file is already being tracked by Git, adding the file to .gitignore won’t stop Git from tracking it. You’ll need to do git rm –cached &amp;lt;file&amp;gt; to keep the file in your tree and then ignore it.
&lt;/p&gt;

&lt;/div&gt;
&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;.gitignore \u0444\u0430\u0439\u043b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;gitignore_\u0444\u0430\u0439\u043b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;18-432&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;исключем_из_индекса&quot;&gt;Исключем из индекса&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если всетаки вы решили добавить в .gitignre фалы ранее закомиченные, их необходимо удалить из индекса или обновить индекс.
Для этого можете воспользоваться командами
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ git update-index --assume-unchanged -- &amp;lt;file&amp;gt;&lt;/pre&gt;

&lt;p&gt;
или 
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ git rm --cached &amp;lt;file&amp;gt;&lt;/pre&gt;

&lt;p&gt;
А для получения списка файлов можете воспольоваться
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;$ git status --porcelain&lt;/pre&gt;

&lt;p&gt;
И в нем найти необходимый файл с помощью grep
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043c \u0438\u0437 \u0438\u043d\u0434\u0435\u043a\u0441\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043c_\u0438\u0437_\u0438\u043d\u0434\u0435\u043a\u0441\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;433-1075&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;включаем_в_индекс&quot;&gt;Включаем в индекс&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;pre class=&quot;code&quot;&gt;$ git update-index --no-assume-unchanged -- &amp;lt;file&amp;gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0432 \u0438\u043d\u0434\u0435\u043a\u0441&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c_\u0432_\u0438\u043d\u0434\u0435\u043a\u0441&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;1076-1175&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit4&quot; id=&quot;особенности&quot;&gt;Особенности&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
.gitignore не влияет на git stash save, хотя влияет на git clean -df
&lt;/p&gt;

&lt;p&gt;
Почему так, я и не понял.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;1176-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://178.140.10.58:8080/doku.php?id=unix:git:history-change">
        <dc:format>text/html</dc:format>
        <dc:date>2015-09-25T09:20:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Редактирование истории в git</title>
        <link>http://178.140.10.58:8080/doku.php?id=unix:git:history-change</link>
        <description>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:scm&amp;amp;do=showtag&amp;amp;tag=scm&quot; class=&quot;wikilink1&quot; title=&quot;tag:scm&quot; rel=&quot;tag&quot;&gt;scm&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:git&amp;amp;do=showtag&amp;amp;tag=git&quot; class=&quot;wikilink1&quot; title=&quot;tag:git&quot; rel=&quot;tag&quot;&gt;git&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;редактирование_истории_в_git&quot;&gt;Редактирование истории в git&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
Более строго следует говорить не о &amp;quot;редактировании&amp;quot; или &amp;quot;изменении&amp;quot; истории,
а о cоздании &amp;quot;альтернативной&amp;quot; истории. Если специально ничего не предпринимать,
в репозитории git остаются все объекты &amp;quot;старой&amp;quot; истории, соответствующие
предыдущим коммитам и версиям файлов.
На эти объекты не будут &amp;quot;ссылаться&amp;quot; ветки, но если Вы вспомните их SHA1-ключи,
либо как-то специально позаботитесь их &amp;quot;пометить&amp;quot; (тэгом, или другой веткой),
то старая история будет c точки зрения git &amp;quot;ничем не хуже&amp;quot; новой.
&lt;/p&gt;

&lt;p&gt;
Почти во всех командах git можно ссылаться на коммиты любым способом:
 - с помощью SHA1-ключа, 
 - с помощью имени ветки (если это последний коммит на ветке),
 - с помощью тэга (если вы его предусмотрительно поставили git tag),
 - c помощью специальных имён, например HEAD - последний коммит на
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; данной ветке, HEAD^ - предпоследний (точнее, первый предок
 последнего коммита) и т.п. Подробности см. git-rev-parse --help&lt;/pre&gt;

&lt;p&gt;
Ниже в командах, которые допускают любую идентификацию коммита, я буду
указывать в качестве аргумента &amp;lt;id&amp;gt;, или &amp;lt;id-…&amp;gt;. Если допускается только
имя ветки, указывается &amp;lt;ветка&amp;gt;.
&lt;/p&gt;

&lt;p&gt;
Для начинающих я рекомендую приступая к редактированию истории пометить
все ключевые точки тэгами. Их хорошо видно в gitk.
Только не забудьте их потом удалить git tag -d
&lt;/p&gt;

&lt;p&gt;
В понятие истории git я буду включать не только совокупность коммитов
git-а, но и содержание рабочего каталога (да простят меня потомки).
&lt;/p&gt;

&lt;p&gt;
Типовые задачи редактирования истории:
&lt;/p&gt;

&lt;p&gt;
1. Отказаться от всех изменений в рабочем каталоге (аналог revert в svn).
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; Кошерный способ: git checkout -f
 Отказаться от части изменений можно с помощью: git checkout &amp;lt;path&amp;gt;
 НО: git checkout . не удалит, например, вновь добавленных файлов.
 Более жёсткий способ удалить _все_ изменения: git reset --hard HEAD&lt;/pre&gt;

&lt;p&gt;
2. &amp;quot;Сохранить&amp;quot; изменения (состояние) рабочего каталога.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; git stash
 При этом рабочий каталог &amp;quot;очищается&amp;quot; до HEAD, а сохранённые изменения
 можно в последствии &amp;quot;применить&amp;quot; к текущему, либо к любому другому
 состоянию рабочего каталога с помощью git stash apply
 В частности, это позволяет &amp;quot;переносить&amp;quot; изменения между ветками
 (хотя, лучше их оформлять как коммиты, и оперировать потом уже с ними).&lt;/pre&gt;

&lt;p&gt;
3. Отредактировать/дополнить последний коммит:
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; git commit --amend
 Можно применять даже если Вам просто понадобилось переписать commit-log
 (например, Вы его &amp;quot;недописали&amp;quot; или он оказался не в той кодировке).
 Фактически при выполнении этой операции будет создан _другой_ commit 
 object, и HEAD ветки будет связан с ним. (Старый объект в репозитории
 git тоже сохранится).&lt;/pre&gt;

&lt;p&gt;
4. &amp;quot;Отказаться&amp;quot; от нескольких последних коммитов в истории (в частности,
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  от последнего)
 Создать новую ветку new в нужной нам точке истории и переставить на
 неё существующую:
 git checkout &amp;lt;id&amp;gt; -b new
 git branch -M &amp;lt;нужная нам ветка&amp;gt;
 Например, отказаться от последнего коммита на ветке master (если мы
 на нём находимся), можно так:
 git checkout HEAD^ -b new_master
 git branch -M master
 После первой команды мы находимся &amp;quot;на один коммит назад&amp;quot; и создали там
 новую ветку с именем new_master (текущей веткой является new_master). 
 После второй команды мы &amp;quot;переименовали&amp;quot; new_master в master, -M позволяет
 проигнорировать, что master уже есть.
 Тоже самое можно сделать одной командой:
 git reset --hard &amp;lt;id&amp;gt;
 Но это менее безопасно (см. ниже).&lt;/pre&gt;

&lt;p&gt;
5. &amp;quot;Переставить&amp;quot; метки веток.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; git reset [--ключ] &amp;lt;id&amp;gt;
 Позволяет &amp;quot;передвинуть&amp;quot; текущий HEAD (и метку ветки) на заданный коммит.
 Есть три варианта, задаваемых ключами:
  --hard - &amp;quot;выкидывает&amp;quot; всё текущее состояние рабочий копии, вы оказываетесь
           на коммите &amp;lt;id&amp;gt;, как будто после него ничего не было;
           Т.е. это просто &amp;quot;перестановка ветки&amp;quot;.
  --soft - &amp;quot;сохраняет&amp;quot; изменения в рабочей копии (и в &amp;quot;индексе&amp;quot; git) и добавляет
           к ним изменения из &amp;quot;истории&amp;quot; от &amp;lt;id&amp;gt; до точки, из которой мы переходим.
           Более подробно см. п. &amp;quot;Слияние нескольких коммитов в один&amp;quot;.
  --mixed - (по умолчанию) - ведёт себя как --soft, но не изменяет состояние
           &amp;quot;индекса&amp;quot; git (оно будет соответствовать коммиту &amp;lt;id&amp;gt;, на который мы
           перешли) - новые и изменённые файлы не считаются &amp;quot;добавленными&amp;quot; в индекс,
           т.е. в отличии от --soft для них требуется явно делать git add, 
           git rm, .etc
 Поскольку git reset (особенно --hard), позволяет &amp;quot;потерять&amp;quot; последнее
 положение ветки (т.е. оставить HEAD &amp;quot;непомеченным&amp;quot;), следует использовать
 эту команду с осторожностью.&lt;/pre&gt;

&lt;p&gt;
6. Слияние нескольких коммитов в один.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; Если это &amp;quot;последние&amp;quot; коммиты в истории этой ветки:
 git reset --soft &amp;lt;id&amp;gt;
 git commit -a -s [--amend]
 Первая команда позволяет &amp;quot;отскочить&amp;quot; HEAD на несколько коммитов назад, при
 этом сохранив все &amp;quot;изменения&amp;quot; этих коммитов в рабочем каталоге.
 Например, git reset --soft HEAD^^ позволит &amp;quot;объединить&amp;quot; изменения последнего
 и предпоследнего коммитов.
 Если мы хотим &amp;quot;добавить&amp;quot; к этим изменениям, изменения из коммитов с другой
 ветки, нам поможет git cherry-pick --no-commit &amp;lt;id&amp;gt;
 Эта команда &amp;quot;добавляет&amp;quot; изменения коммита в рабочий каталог и в индекс, но не
 выполняет операцию commit.&lt;/pre&gt;

&lt;p&gt;
7. Удаление нескольких коммитов &amp;quot;внутри истории&amp;quot;. git-rebase magic
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; Например, у Вас есть история ветки:
  ...-(N-5)-(N-4)-(N-3)-(N-2)-(N-1)-(N) - ветка
 и вам захотелось удалить коммиты (N-4)-(N-2) включительно.
 Это можно сделать с помощью команды git-rebase:
 git-rebase --onto &amp;lt;ветка&amp;gt;~5 &amp;lt;ветка&amp;gt;~2 &amp;lt;ветка&amp;gt;
 Например, git-rebase --onto master~5 master~2 master
 Нотация &amp;lt;id&amp;gt;~&amp;lt;n&amp;gt; означает n-ый коммит назад, т.е. в данном случае:
  - master - (N)
  - master~2 - (N-2)
  - master~5 - (N-5)
 Смысл операции git-rebase --onto &amp;lt;id-newbase&amp;gt; &amp;lt;id-upstream&amp;gt; &amp;lt;id-head&amp;gt;:
  1) Переключиться на коммит &amp;lt;id-head&amp;gt; (== git checkout &amp;lt;ветка&amp;gt;, если
     &amp;lt;id-head&amp;gt; - это HEAD ветки)
  2) Начать новую ветку от точки &amp;lt;id-newbase&amp;gt;
  3) &amp;quot;Поместить&amp;quot; на новую ветку коммиты от &amp;lt;id-upstream&amp;gt; до &amp;lt;id-head&amp;gt;,
     не включая &amp;lt;id-upstream&amp;gt;
  4) Если &amp;lt;id-head&amp;gt; - это HEAD ветки, переставить &amp;lt;ветку&amp;gt; на то, что получилось
 В данном случае:
 От коммита (N-5) мы начинаем &amp;quot;применять&amp;quot; коммиты (N-1) и (N), и переставляем
 метку ветки, в результате чего получается &amp;quot;новая история&amp;quot;:
      (N-1)&amp;#039;-(N)&amp;#039; - ветка
       /
 ...-(N-5)-(N-4)-(N-3)-(N-2)-(N-1)-(N)
 &lt;/pre&gt;

&lt;p&gt;
8. Объединение коммита с &amp;quot;внутренним&amp;quot; коммитом в истории.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; Например, в коммите &amp;lt;id-src&amp;gt; Вы исправили ошибку в &amp;quot;старом исправлении&amp;quot; &amp;lt;id-dst&amp;gt;,
 которое было несколько коммитов назад.
 Последовательность действий:
 1) Создать новую ветку new_branch от коммита &amp;lt;id-dst&amp;gt;, который надо
    поменять (дополнить).
    git checkout &amp;lt;id-dst&amp;gt; -b new_branch
 2) Сделать cherry-pick коммита &amp;lt;id-src&amp;gt;, который вы хотите &amp;quot;приплюсовать&amp;quot; к
    внутреннему.
    git cherry-pick --no-commit &amp;lt;id-src&amp;gt;
 3) &amp;quot;Дополнить&amp;quot; последний коммит изменениями из рабочего каталога.
    git commit --amend
 4) Добавить в новую историю последовательность &amp;quot;правильных&amp;quot; коммитов:
    git rebase --onto HEAD &amp;lt;id-первый коммит&amp;gt;^  &amp;lt;id-последний коммит&amp;gt;
 5) Переставить ветку на новый HEAD
    git branch -f &amp;lt;имя ветки&amp;gt;&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt; Пояснения требуют два последних действия:
   git rebase в данном случае добавляет нужную последовательность коммитов 
   &amp;quot;в голову&amp;quot; новой ветки, но если &amp;lt;id-последний коммит&amp;gt; - это не HEAD
   старой ветки, то после git rebase новый HEAD не будет соответствовать
   ни какой ветке ! (так уж работает git rebase)
   Для этого требуется последняя операция, она явно переставляет ветку
   на HEAD.&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt; Если наше исправление было бы не закоммичено, можно было воспользоваться
 git stash и git stash apply вместо git cherry-pick.&lt;/pre&gt;

&lt;p&gt;
9. Редактирование &amp;quot;внутреннего&amp;quot; коммита.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt; Действия аналогичны п.8, но проще. Пусть мы находимся на ветке &amp;lt;имя ветки&amp;gt;.
 1) Извлечь коммит &amp;lt;id-dst&amp;gt;, подлежащий редактированию; ветку new_branch 
    создавать при этом не обязательно, но желательно:
    git checkout &amp;lt;id-dst&amp;gt; [-b new_branch]
 2) Исправить код, &amp;quot;дополнить&amp;quot; последний коммит изменениями из рабочего
    каталога.
    git commit -a --amend
 3) Добавить в новую историю последовательность &amp;quot;правильных&amp;quot; коммитов:
    git rebase --onto HEAD &amp;lt;id-dst&amp;gt; &amp;lt;имя ветки&amp;gt;
 4) Удалить ветку new_branch, если она была создана на шаге 1)
    git branch -D new_branch&lt;/pre&gt;
&lt;pre class=&quot;code&quot;&gt; Специально переставлять ветку &amp;lt;имя ветки&amp;gt; в данном случае не требуется, т.к.
 в команде git rebase в п. 3) в качестве последнего аргумента было имя ветки,
 а не просто SHA1-id. В такой ситуации эта команда &amp;quot;автоматически&amp;quot; переставит
 ref ветки.&lt;/pre&gt;

&lt;p&gt;
10. rebase ветки с помощью git rebase.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  git rebase &amp;lt;upstream-branch&amp;gt;
  Эта операция подробно рассмотрена в разъяснениях Никиты по идеологии и
  сценариям использования git.
  Не следует относится к git rebase &amp;quot;формально&amp;quot;: например, если Вы считаете,
  что некоторые коммиты с ветки разумнее было бы переместить на master, можно
  &amp;quot;продублировать&amp;quot; их на master с помощью git cherry-pick, после чего сделать
  git rebase. После этого, с веки эти коммиты волшебным образом исчезнут.&lt;/pre&gt;

&lt;p&gt;
11. &amp;quot;Откат&amp;quot; отдельного коммита.
&lt;/p&gt;
&lt;pre class=&quot;code&quot;&gt;  Строго говоря, это не редактирование истории: просто автоматически добавляется
  коммит (либо, изменение в рабочей копии), &amp;quot;отменяющее&amp;quot; заданный коммит.
  git revert [--no-commit] &amp;lt;id&amp;gt;
  Эту возможность следует использовать если Вы не хотите &amp;quot;честно&amp;quot; редактировать
  историю. Например, коммит надо откатить только на одной из ветвей, либо
  этот коммит был &amp;quot;очень давно&amp;quot;, и не хочется перестраивать из-за него всю
  историю целиком.&lt;/pre&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0432 git&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435_\u0438\u0441\u0442\u043e\u0440\u0438\u0438_\u0432_git&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;18-&amp;quot;} --&gt;</description>
    </item>
    <item rdf:about="http://178.140.10.58:8080/doku.php?id=unix:git:mini-doc">
        <dc:format>text/html</dc:format>
        <dc:date>2017-03-21T02:30:39+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Мини документация</title>
        <link>http://178.140.10.58:8080/doku.php?id=unix:git:mini-doc</link>
        <description>&lt;div class=&quot;tags&quot;&gt;&lt;span&gt;
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:scm&amp;amp;do=showtag&amp;amp;tag=scm&quot; class=&quot;wikilink1&quot; title=&quot;tag:scm&quot; rel=&quot;tag&quot;&gt;scm&lt;/a&gt;,
	&lt;a href=&quot;http://178.140.10.58:8080/doku.php?id=tag:git&amp;amp;do=showtag&amp;amp;tag=git&quot; class=&quot;wikilink1&quot; title=&quot;tag:git&quot; rel=&quot;tag&quot;&gt;git&lt;/a&gt;
&lt;/span&gt;&lt;/div&gt;

&lt;h1 class=&quot;sectionedit1&quot; id=&quot;мини_документация&quot;&gt;Мини документация&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;

&lt;p&gt;
 &lt;a href=&quot;http://marklodato.github.io/visual-git-guide/index-ru.html?no-svg&quot; class=&quot;urlextern&quot; title=&quot;http://marklodato.github.io/visual-git-guide/index-ru.html?no-svg&quot; rel=&quot;ugc nofollow&quot;&gt;http://marklodato.github.io/visual-git-guide/index-ru.html?no-svg&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041c\u0438\u043d\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043c\u0438\u043d\u0438_\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:1,&amp;quot;range&amp;quot;:&amp;quot;19-135&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit2&quot; id=&quot;init&quot;&gt;Init&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 mkdir new_repo1 &amp;amp;&amp;amp; cd new_repo1 &amp;amp;&amp;amp; git init
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 mkdir new_repo1 &amp;amp;&amp;amp; cd new_repo1 &amp;amp;&amp;amp; git init –bare origin
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Init&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;init&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:2,&amp;quot;range&amp;quot;:&amp;quot;136-264&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit3&quot; id=&quot;config&quot;&gt;Config&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Config&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;config&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:3,&amp;quot;range&amp;quot;:&amp;quot;265-284&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit4&quot; id=&quot;global&quot;&gt;Global&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git config –global user.name &amp;quot;Your Name&amp;quot;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git config –global user.email &amp;quot;your_email@whatever.com&amp;quot;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;git config –global core.filemode false&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Global&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;global&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:4,&amp;quot;range&amp;quot;:&amp;quot;285-456&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit5&quot; id=&quot;user&quot;&gt;User&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git config core.bare false - Делаем из bare репозитория обычный
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;git config core.filemode false&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;User&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;user&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:5,&amp;quot;range&amp;quot;:&amp;quot;457-605&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit6&quot; id=&quot;clone&quot;&gt;Clone&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git clone git@github.com/repo.git
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git clone –no-hardlinks origin master
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git clone –no-hardlinks ./repo1 ./repo2
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Clone&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;clone&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:6,&amp;quot;range&amp;quot;:&amp;quot;606-751&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit7&quot; id=&quot;add&quot;&gt;Add&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git add Копирует файлы (в их текущем состоянии) на сцену.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git commit Сохраняет снимок сцены в виде коммита.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git reset – Восстанавливает файлы на сцене, а именно копирует файлы из последнего коммита на сцену. Используйте эту команду для отмены изменений, внесенных командой git add файлы. Вы также можете выполнить git reset чтобы восстановить все файлы на сцене.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git checkout – Копирует файлы со сцены в рабочую директорию. Эту команду удобно использовать чтобы сбросить нежелательные изменения в рабочей директории.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=basic-usage.svg.png&quot; class=&quot;media&quot; title=&quot;basic-usage.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=basic-usage.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Вы можете использовать git reset -p, git checkout -p, и git add -p вместо (или вместе с) именами файлов, чтобы в интерактивном режиме выбирать, какие именно изменения будут скопированы.
&lt;/p&gt;

&lt;p&gt;
Также можно перепрыгнуть через сцену и сразу же получить файлы из истории прямо в рабочую директорию; или сделать коммит, минуя сцену.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=basic-usage-2.svg.png&quot; class=&quot;media&quot; title=&quot;basic-usage-2.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=basic-usage-2.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Add&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;add&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:7,&amp;quot;range&amp;quot;:&amp;quot;752-2293&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit8&quot; id=&quot;commit&quot;&gt;Commit&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git commit -a аналогичен запуску двух команд: git add для всех файлов, которые существовали в предыдущем коммите, и git commit.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git commit Создает новый коммит, в основе которого лежат уже существующие файлы, добавляя изменения только для указанных файлов. Одновременно, указанные файлы будут скопированы на сцену.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git checkout HEAD – Копирует файлы из текущего коммита и на сцену, и в рабочую директорию.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=conventions.svg.png&quot; class=&quot;media&quot; title=&quot;conventions.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=conventions.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Commit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;commit&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:8,&amp;quot;range&amp;quot;:&amp;quot;2294-3043&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit9&quot; id=&quot;diff&quot;&gt;Diff&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=diff.svg.png&quot; class=&quot;media&quot; title=&quot;diff.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=diff.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Diff&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;diff&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:9,&amp;quot;range&amp;quot;:&amp;quot;3044-3082&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit10&quot; id=&quot;commit1&quot;&gt;Commit&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=commit-master.svg.png&quot; class=&quot;media&quot; title=&quot;commit-master.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=commit-master.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Commit&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;commit1&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:10,&amp;quot;range&amp;quot;:&amp;quot;3083-3131&amp;quot;} --&gt;
&lt;h4 class=&quot;sectionedit11&quot; id=&quot;amend_перезаписать_последний_комит&quot;&gt;amend (Перезаписать последний комит)&lt;/h4&gt;
&lt;div class=&quot;level4&quot;&gt;

&lt;p&gt;
Если вы сделали ошибку в последнем коммите, её легко исправить с помощью команды git commit –amend. Эта команда создает новый коммит, родителем которого будет родитель ошибочного коммита. Старый ошибочный коммит будет отброшен, конечно же если только на него не будет ещё каких-либо других ссылок, что маловероятно.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=commit-amend.svg.png&quot; class=&quot;media&quot; title=&quot;commit-amend.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=commit-amend.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;amend (\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043a\u043e\u043c\u0438\u0442)&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;amend_\u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c_\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439_\u043a\u043e\u043c\u0438\u0442&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:11,&amp;quot;range&amp;quot;:&amp;quot;3132-3796&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit12&quot; id=&quot;checkout&quot;&gt;Checkout&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Команда checkout используется для копирования файлов из истории или сцены в рабочую директорию. Также она может использоваться для переключения между ветками.
&lt;/p&gt;

&lt;p&gt;
Когда вы указываете имя файла (и/или ключ -p), git копирует эти файлы из указанного коммита на сцену и в рабочую директорию. Например, git checkout HEAD~ foo.c копирует файл foo.c из коммита HEAD~ (предка текущего коммита) в рабочу директорию и на сцену. Если имя коммита не указано, то файл будет скопирован со сцены в рабочую директорию. Обратите внимание на то что при выполнении команды git checkout HEAD~ foo.c позиция указателя текущей ветки (HEAD) остаётся прежней, указатель никуда не перемещается.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=checkout-files.svg.png&quot; class=&quot;media&quot; title=&quot;checkout-files.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=checkout-files.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
В том случае если мы не указываем имя файла, но указываем имя (локальной) ветки, то указатель HEAD будет перемещен на эту ветку (мы переключимся на эту ветку). При этом сцена и рабочая директория будут приведены в соответствие с этим коммитом. Любой файл, который присутствует в новом коммите (a47c3 ниже) будет скопирован из истории; любой файл, который был в старом коммите (ed489), но отсутствует в новом, будет удален; любой файл, который не записан ни в одном коммите, будет проигнорирован.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=checkout-branch.svg.png&quot; class=&quot;media&quot; title=&quot;checkout-branch.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=checkout-branch.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
В том случае, если мы не указываем имя файла, и не указываем имя (локальной) ветки, а указываем тег, дистанционную (remote) ветку, SHA-1 хеш коммита или что-то вроде master~3, то мы получаем безымянную ветку, называемую «Detached HEAD» (оторванная голова). Это очень полезная штука, если нам надо осмотреться в истории коммитов. К примеру, вам захочется скомпилировать git версии 1.6.6.1. Вы можете набрать git checkout v1.6.6.1 (это тег, не ветка), скомпилировать, установить, а затем вернуться в другую ветку, скажем git checkout master. Тем не менее, коммиты из состояния «Detached HEAD» происходят по своим особым важным правилам
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=checkout-detached.svg.png&quot; class=&quot;media&quot; title=&quot;checkout-detached.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=checkout-detached.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Checkout&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;checkout&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:12,&amp;quot;range&amp;quot;:&amp;quot;3797-7003&amp;quot;} --&gt;
&lt;h3 class=&quot;sectionedit13&quot; id=&quot;коммит_из_состояния_detached_head&quot;&gt;Коммит из состояния «Detached HEAD»&lt;/h3&gt;
&lt;div class=&quot;level3&quot;&gt;

&lt;p&gt;
Когда мы находимся в состоянии оторванной головы (Detached HEAD), коммит совершается по тем же правилам, что и обычно за исключением одной маленькой особенности: ни один указатель ветки не будет изменен или добавлен к новому коммиту. Вы можете представить эту ситуацию как работу с анонимной веткой.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=commit-detached.svg.png&quot; class=&quot;media&quot; title=&quot;commit-detached.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=commit-detached.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Если после такого коммита вы переключитесь в ветку master, то коммит 2eecb, совершенный из состояния «Detached HEAD» потеряется и попросту будет уничтожен очередной сборкой мусора только потому нет ни одного объекта, который бы на него ссылался: ни ветки, ни тега.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=checkout-after-detached.svg.png&quot; class=&quot;media&quot; title=&quot;checkout-after-detached.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=checkout-after-detached.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
В том случае, если вы хотите сохранить этот коммит на будущее, вы можете создать на основе его новую ветку командой git checkout -b new.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=checkout-b-detached.svg.png&quot; class=&quot;media&quot; title=&quot;checkout-b-detached.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=checkout-b-detached.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041a\u043e\u043c\u043c\u0438\u0442 \u0438\u0437 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u00abDetached HEAD\u00bb&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043a\u043e\u043c\u043c\u0438\u0442_\u0438\u0437_\u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f_detached_head&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:13,&amp;quot;range&amp;quot;:&amp;quot;7004-8409&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit14&quot; id=&quot;reset&quot;&gt;Reset&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Команда reset перемещает указатель текущей ветки в другую позицию, и дополнительно может обновить сцену и рабочую директорию. Эту команду можно также использовать для того чтобы скопировать файл из истории на сцену, не задевая рабочую директорию.
&lt;/p&gt;

&lt;p&gt;
Если коммит указан без имен файлов, указатель ветки будет перемещен на этот коммит, а затем сцена приведется в соответствие с этим коммитом. Если мы используем ключ –soft, то сцена не будет изменена. Если мы используем ключ –hard, то будет обновлена и сцена, и рабочая директория.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=reset-commit.svg.png&quot; class=&quot;media&quot; title=&quot;reset-commit.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=reset-commit.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Если имя коммита не будет указано, по умолчанию оно будет HEAD. В этом случае указатель ветки не будет перемещен, но сцена (а также и рабочая директория, если был использован ключ –hard) будут приведены к состоянию последнего коммита.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=reset.svg.png&quot; class=&quot;media&quot; title=&quot;reset.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=reset.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&amp;lt;fc #008080&amp;gt;Если в команде указано имя файла (и/или ключ -p), то команда работает также как checkout с именем файла&amp;lt;/fc&amp;gt;, за исключением того, что только сцена (но не рабочая директория) будет изменена. Если вы подставите имя коммита на место двойной черты, вы сможете получить состояние файла из этого коммита, тогда как в случае с двойной чертой вы получите состояние файла из коммита, на который указывает HEAD.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=reset-files.svg.png&quot; class=&quot;media&quot; title=&quot;reset-files.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=reset-files.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Reset&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:14,&amp;quot;range&amp;quot;:&amp;quot;8410-10602&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit15&quot; id=&quot;checkout_vs_reset&quot;&gt;Checkout VS Reset&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=unix:git:uwgiw.png&quot; class=&quot;media&quot; title=&quot;unix:git:uwgiw.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=unix:git:uwgiw.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Checkout VS Reset&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;checkout_vs_reset&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:15,&amp;quot;range&amp;quot;:&amp;quot;10603-10658&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit16&quot; id=&quot;merge&quot;&gt;Merge&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Команда merge (слияние) создает новый коммит на основе текущего коммита, применяя изменения других коммитов. Перед слиянием сцена должна быть приведена в соответствие с текущим коммитом. Самый простой случай слияния — это когда другой коммит является предком текущего коммита: в этом случае ничего не происходит. Другой простой случай слияния — когда текущий коммит является предком другого коммита: в этом случае происходит быстрая перемотка (fast-forward). Ссылка текущей ветки будет просто перемещена на новый коммит, а сцена и рабочая директория будут приведены в соответствие с новым коммитом.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=merge-ff.svg.png&quot; class=&quot;media&quot; title=&quot;merge-ff.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=merge-ff.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Во всех других случаях выполняется «настоящее» слияние. Вы можете изменить стратегию слияния, но по умолчанию будет выполнено «рекурсивное» слияние, для которого будет взят текущий коммит (ed489 ниже на схеме), другой коммит (33104) и их общий предок (b325c); и для этих трех коммитов будет выполнено трехстороннее слияние. Результат этого слияние будет записан в рабочую директорию и на сцену, и будет добавлен результирующий коммит со вторым родителем (33104).
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=merge.svg.png&quot; class=&quot;media&quot; title=&quot;merge.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=merge.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Merge&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;merge&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:16,&amp;quot;range&amp;quot;:&amp;quot;10659-12636&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit17&quot; id=&quot;cherry_pick&quot;&gt;Cherry Pick&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Команда cherry-pick («вишенка в тортике») создает новый коммит на основе только одного сладкого «коммита-вишенки», применив все его изменения и сообщение.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=cherry-pick.svg.png&quot; class=&quot;media&quot; title=&quot;cherry-pick.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=cherry-pick.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Cherry Pick&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;cherry_pick&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:17,&amp;quot;range&amp;quot;:&amp;quot;12637-12964&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit18&quot; id=&quot;rebase&quot;&gt;Rebase&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Если находясь в ветке master выполнить git merge next, мы получим историю изменений раздваивающуюся после коммита на 2 ветви и заканчивающуюся автоматическим слиянием веток, родителями этого merge-коммита будут ревизии C (из master’а) и F (из бранча next). Избежать подобной ветвистости помогает волшебная команда git rebase.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=unix:git:git_063.gif&quot; class=&quot;media&quot; title=&quot;unix:git:git_063.gif&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=unix:git:git_063.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;  &lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=unix:git:git_064.gif&quot; class=&quot;media&quot; title=&quot;unix:git:git_064.gif&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=unix:git:git_064.gif&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Перебазирование (rebase) — это альтернатива слиянию для задач объединения нескольких веток. Если слияние создает новый коммит с двумя родителями, оставляя нелинейную историю, то перебазирование применяет все коммиты один за одним из одной ветки в другую, оставляя за собой линейную историю коммитов. По сути это автоматическое выполнение нескольких команд cherry-pick подряд.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=rebase.svg.png&quot; class=&quot;media&quot; title=&quot;rebase.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=rebase.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
На схеме выше вы видите как команда берет все коммиты, которые есть в ветке topic, но отсутствуют в ветке master (коммиты 169a6 and 2c33a), и воспроизводит их в ветке master. Затем указатель ветки перемещается на новое место. Следует заметить, что старые коммиты будут уничтожены сборщиком мусора, если на них уже ничего не будет ссылаться.
&lt;/p&gt;

&lt;p&gt;
Используйте ключ –onto чтобы ограничить глубину захвата объединяемой ветки. На следующей схеме вы можете увидеть как в ветку master приходят лишь последние коммиты из текущей ветки, а именно коммиты после (но не включая) 169a6, т. е. 2c33a.
&lt;/p&gt;

&lt;p&gt;
&lt;a href=&quot;http://178.140.10.58:8080/lib/exe/detail.php?id=unix%3Agit%3Amini-doc&amp;amp;media=rebase-onto.svg.png&quot; class=&quot;media&quot; title=&quot;rebase-onto.svg.png&quot;&gt;&lt;img src=&quot;http://178.140.10.58:8080/lib/exe/fetch.php?media=rebase-onto.svg.png&quot; class=&quot;media&quot; loading=&quot;lazy&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Есть также интерактивный режим перебазирования git rebase –interactive, с помощью которого вы сможете сделать вещи похитрее простого линейного применения коммитов, а именно сбрасывание (dropping), изменение порядка (reordering), правка (modifying) и выдавливание (squashing) коммитов. Нет наглядной схемы, чтобы показать эти возможности; за описанием лучше обратиться к справке по git-rebase(1).
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Rebase&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;rebase&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:18,&amp;quot;range&amp;quot;:&amp;quot;12965-15992&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit19&quot; id=&quot;детали&quot;&gt;Детали&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;

&lt;p&gt;
Содержание файлов не хранится в индексе (.git/index) или в объектах коммитов. Правильнее было бы сказать, что каждый файл хранится в базе данных объектов (.git/objects) в двоичном представлении; найти этот файл можно по его SHA-1 хешу. В файле индекса записаны имена файлов, их хеши и дополнительная информация. В информации о коммитах вы встретите тип данных дерево, для идентификации которого также используется SHA-1 хеш. Деревья описывают директории в рабочей директории, а также содержат информацию о других деревьях и файлах в принадлежащей к обозначенному дереву. Каждый коммит хранит идентификатор своего верхнего дерева, которое содержит все файлы и другие деревья, измененные в этом коммите.
&lt;/p&gt;

&lt;p&gt;
Если вы делаете коммит из состояния «оторванной головы» (detached HEAD), то на этот коммит будет ссылаться ссылка истории HEAD. Но рано или поздно время хранения этой ссылки истечет, и этот коммит будет уничтожен сборщиком мусора точно также, как это делается при выполнении команд git commit –amend и git rebase.
&lt;/p&gt;

&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0414\u0435\u0442\u0430\u043b\u0438&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0434\u0435\u0442\u0430\u043b\u0438&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:19,&amp;quot;range&amp;quot;:&amp;quot;15993-17808&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit20&quot; id=&quot;равнозначные_команды&quot;&gt;Равнозначные команды&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git reset –hard e3f1e37 и git checkout e3f1e37
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git add . &amp;amp;&amp;amp; git commit -m &amp;quot;Comment&amp;quot; и git commit -am &amp;quot;Comment&amp;quot;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 git checkout master~3 и git reset –hard HEAD~3
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u0420\u0430\u0432\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u0440\u0430\u0432\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u0435_\u043a\u043e\u043c\u0430\u043d\u0434\u044b&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:20,&amp;quot;range&amp;quot;:&amp;quot;17809-18038&amp;quot;} --&gt;
&lt;h2 class=&quot;sectionedit21&quot; id=&quot;наилучшая_замена_команд&quot;&gt;Наилучшая замена команд&lt;/h2&gt;
&lt;div class=&quot;level2&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;git pull origin master&lt;/strong&gt; на &lt;strong&gt;git pull –rebase origin master&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 &lt;strong&gt;git pull origin feature&lt;/strong&gt; на &lt;strong&gt;git pull –rebase origin feature&lt;/strong&gt;
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041d\u0430\u0438\u043b\u0443\u0447\u0448\u0430\u044f \u0437\u0430\u043c\u0435\u043d\u0430 \u043a\u043e\u043c\u0430\u043d\u0434&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0430\u044f_\u0437\u0430\u043c\u0435\u043d\u0430_\u043a\u043e\u043c\u0430\u043d\u0434&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:21,&amp;quot;range&amp;quot;:&amp;quot;18039-18243&amp;quot;} --&gt;
&lt;h1 class=&quot;sectionedit22&quot; id=&quot;легенда&quot;&gt;Легенда&lt;/h1&gt;
&lt;div class=&quot;level1&quot;&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 сцены — stage / index промежуточное состояние файлов, до создания комита
&lt;/div&gt;&lt;ul&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 Применяется для временного / промежуточного состояния файлов перед формированием комита.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level2&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 index — область зафиксированных изменений, т.е. всё то, что вы подготовили к сохранению в репозиторий.
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 repository
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 origin — Ссылка на внешний репозиторий
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;
	Применяется git checkout origin/master, git checkout -b test origin/test
&lt;/p&gt;
&lt;ul&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 HEAD — указатель на commit, в котором мы находимся.
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 master — имя ветки по-умолчанию, это тоже указатель на определённый коммит
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 origin — имя удалённого репозитория по умолчанию (можно дать другое)
&lt;/div&gt;&lt;/li&gt;
&lt;li class=&quot;level1&quot;&gt;&lt;div class=&quot;li&quot;&gt;
 fast-forward — Объединение веток, при котором не выполняется merge (а комиты просто складываются 1 за другим) и получила название fast-forward. Принудительное применение команды git merge –ff-only collider/terminate 
&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;
&lt;!-- EDIT{&amp;quot;target&amp;quot;:&amp;quot;section&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;\u041b\u0435\u0433\u0435\u043d\u0434\u0430&amp;quot;,&amp;quot;hid&amp;quot;:&amp;quot;\u043b\u0435\u0433\u0435\u043d\u0434\u0430&amp;quot;,&amp;quot;codeblockOffset&amp;quot;:0,&amp;quot;secid&amp;quot;:22,&amp;quot;range&amp;quot;:&amp;quot;18244-&amp;quot;} --&gt;</description>
    </item>
</rdf:RDF>
