diff --git a/git/stash.ipynb b/git/stash.ipynb new file mode 100644 index 00000000..22ce7bdc --- /dev/null +++ b/git/stash.ipynb @@ -0,0 +1,225 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "947a2fa1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'THIS IS A HOMETASK FROM GOSHA GOSHA #3.'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"THIS IS A HOMETASK FROM GOSHA GOSHA #3.\"\"\"" + ] + }, + { + "cell_type": "markdown", + "id": "9328cbe6", + "metadata": {}, + "source": [ + "# Ответы по теме: Git Stash\n", + "\n", + "## 1. Что делает команда `git stash`?\n", + "\n", + "### Ответ:\n", + "\n", + "Создает комит, который в себе сожержит 2(3) родителя. Эта група комитов и есть stash , который формирует снапшот проекта в момент вызова git stash push\n", + "\n", + "эта группа комитов имеет вид:\n", + "\n", + " для git stash push:\n", + "\n", + " .----W\n", + " / /\n", + " -----H----I\n", + "\n", + " для git stash push -u:\n", + "\n", + " U----W\n", + " / /\n", + " -----H----I\n", + "\n", + "это и есть по сути stash\n", + "---\n", + "\n", + "## 2. Как просмотреть список всех сохранённых изменений (стэшей)?\n", + "\n", + "### Ответ:\n", + "\n", + "git stash list\n", + "\n", + "---\n", + "\n", + "## 3. Какая команда применяется для использования верхнего стэша?\n", + "\n", + "### Ответ:\n", + "\n", + "git stash apply/pop\n", + "\n", + "---\n", + "\n", + "## 4. Как применить конкретный стэш по его номеру?\n", + "\n", + "### Ответ:\n", + "\n", + "git stash pop stash@{n}\n", + "\n", + "---\n", + "\n", + "## 5. Чем отличается команда `git stash apply` от `git stash pop`?\n", + "\n", + "### Ответ:\n", + "\n", + "apply не удаляет стеш после применения\n", + "\n", + "---\n", + "\n", + "## 6. Что делает команда `git stash drop`?\n", + "\n", + "### Ответ:\n", + "\n", + "удаляет последний стеш\n", + "\n", + "---\n", + "\n", + "## 7. Как полностью очистить все сохранённые стэши?\n", + "\n", + "### Ответ:\n", + "\n", + "git stash clear\n", + "\n", + "---\n", + "\n", + "## 8. В каких случаях удобно использовать `git stash`?\n", + "\n", + "### Ответ:\n", + "\n", + "Если нужно сделать снапшот , не сохраняя его в историю Git\n", + "\n", + "---\n", + "\n", + "## 9. Что произойдёт, если выполнить `git stash pop`, но в проекте есть конфликтующие изменения?\n", + "\n", + "### Ответ:\n", + "\n", + "ошибка\n", + "\n", + "---\n", + "\n", + "## 10. Можно ли восстановить удалённый стэш после выполнения `git stash drop`?\n", + "\n", + "### Ответ:\n", + "\n", + "git fsck --unreachable |\n", + "grep commit | cut -d\\ -f3 |\n", + "xargs git log --merges --no-walk --grep=WIP\n", + "\n", + "---\n", + "\n", + "## 11. Что делает команда `git stash save \"NAME_STASH\"`?\n", + "\n", + "### Ответ:\n", + "\n", + "то же самое что и push , но deprecated\n", + "\n", + "---\n", + "\n", + "## 12. Что делает команда `git stash apply \"NUMBER_STASH\"`?\n", + "\n", + "### Ответ:\n", + "\n", + "применяет стеш на текущем HEAD текущей ветки, если нету конфликтов\n", + "\n", + "---\n", + "\n", + "## 13. Что делает команда `git stash pop \"NUMBER_STASH\"`?\n", + "\n", + "### Ответ:\n", + "\n", + "применяет стеш на текущем HEAD текущей ветки, если нету конфликтов, затем удаляет его\n", + "\n", + "---\n", + "\n", + "# Практические задания\n", + "\n", + "## 14. Сохраните текущие изменения в стэш под названием `\"SENATOROV ver1\"`, вставьте скриншот из терминала\n", + "\n", + "### Команда:\n", + "\n", + "git stash push -m \"SENATOROV ver1\"\n", + "\n", + "### Скриншот:\n", + "![](1.png)\n", + "\n", + "\n", + "---\n", + "\n", + "## 15. Внесите любые изменения в ваш репозиторий и сохраните второй стэш под именем `\"SENATOROV ver2\"`\n", + "\n", + "### Команда:\n", + "\n", + "\n", + "\n", + "### Скриншот:\n", + "\n", + "\n", + "\n", + "---\n", + "\n", + "## 16. Восстановите ваш стэш `\"SENATOROV ver1\"`, вставьте скриншот из терминала\n", + "\n", + "### Команда:\n", + "\n", + "git stash pop \"stash@{1}\"\n", + "\n", + "### Скриншот:\n", + "\n", + "![](2.png)\n", + "\n", + "---\n", + "\n", + "## 17. Удалите все стэши из истории, вставьте скриншот из терминала\n", + "\n", + "### Команда:\n", + "\n", + "git stash clear\n", + "\n", + "### Скриншот:\n", + "\n", + "![](3.png)\n", + "\n", + "---" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "SENATOROV", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.14" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/git/stash.py b/git/stash.py new file mode 100644 index 00000000..95e96e70 --- /dev/null +++ b/git/stash.py @@ -0,0 +1,174 @@ +"""THIS IS A HOMETASK FROM GOSHA GOSHA #3.""" + +# # Ответы по теме: Git Stash +# +# ## 1. Что делает команда `git stash`? +# +# ### Ответ: +# +# Создает комит, который в себе сожержит 2(3) родителя. Эта група комитов и есть stash , который формирует снапшот проекта в момент вызова git stash push +# +# эта группа комитов имеет вид: +# +# для git stash push: +# +# .----W +# / / +# -----H----I +# +# для git stash push -u: +# +# U----W +# / / +# -----H----I +# +# это и есть по сути stash +# --- +# +# ## 2. Как просмотреть список всех сохранённых изменений (стэшей)? +# +# ### Ответ: +# +# git stash list +# +# --- +# +# ## 3. Какая команда применяется для использования верхнего стэша? +# +# ### Ответ: +# +# git stash apply/pop +# +# --- +# +# ## 4. Как применить конкретный стэш по его номеру? +# +# ### Ответ: +# +# git stash pop stash@{n} +# +# --- +# +# ## 5. Чем отличается команда `git stash apply` от `git stash pop`? +# +# ### Ответ: +# +# apply не удаляет стеш после применения +# +# --- +# +# ## 6. Что делает команда `git stash drop`? +# +# ### Ответ: +# +# удаляет последний стеш +# +# --- +# +# ## 7. Как полностью очистить все сохранённые стэши? +# +# ### Ответ: +# +# git stash clear +# +# --- +# +# ## 8. В каких случаях удобно использовать `git stash`? +# +# ### Ответ: +# +# Если нужно сделать снапшот , не сохраняя его в историю Git +# +# --- +# +# ## 9. Что произойдёт, если выполнить `git stash pop`, но в проекте есть конфликтующие изменения? +# +# ### Ответ: +# +# ошибка +# +# --- +# +# ## 10. Можно ли восстановить удалённый стэш после выполнения `git stash drop`? +# +# ### Ответ: +# +# git fsck --unreachable | +# grep commit | cut -d\ -f3 | +# xargs git log --merges --no-walk --grep=WIP +# +# --- +# +# ## 11. Что делает команда `git stash save "NAME_STASH"`? +# +# ### Ответ: +# +# то же самое что и push , но deprecated +# +# --- +# +# ## 12. Что делает команда `git stash apply "NUMBER_STASH"`? +# +# ### Ответ: +# +# применяет стеш на текущем HEAD текущей ветки, если нету конфликтов +# +# --- +# +# ## 13. Что делает команда `git stash pop "NUMBER_STASH"`? +# +# ### Ответ: +# +# применяет стеш на текущем HEAD текущей ветки, если нету конфликтов, затем удаляет его +# +# --- +# +# # Практические задания +# +# ## 14. Сохраните текущие изменения в стэш под названием `"SENATOROV ver1"`, вставьте скриншот из терминала +# +# ### Команда: +# +# git stash push -m "SENATOROV ver1" +# +# ### Скриншот: +# ![](1.png) +# +# +# --- +# +# ## 15. Внесите любые изменения в ваш репозиторий и сохраните второй стэш под именем `"SENATOROV ver2"` +# +# ### Команда: +# +# +# +# ### Скриншот: +# +# +# +# --- +# +# ## 16. Восстановите ваш стэш `"SENATOROV ver1"`, вставьте скриншот из терминала +# +# ### Команда: +# +# git stash pop "stash@{1}" +# +# ### Скриншот: +# +# ![](2.png) +# +# --- +# +# ## 17. Удалите все стэши из истории, вставьте скриншот из терминала +# +# ### Команда: +# +# git stash clear +# +# ### Скриншот: +# +# ![](3.png) +# +# ---