{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 2.4. A typical workflow with Git branching" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "/home/cyrille/git/cookbook-2nd/chapter02\n" ] } ], "source": [ "pwd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "cd myproject" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "git branch newidea" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* master\n", " newidea\n" ] } ], "source": [ "git branch" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Switched to branch 'newidea'\n" ] } ], "source": [ "git checkout newidea" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " master\n", "* newidea\n" ] } ], "source": [ "git branch" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "echo \"print('new')\" > newfile.py" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "print('new')\n" ] } ], "source": [ "cat newfile.py" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[newidea 8ebee32] Testing new idea\n", " 1 file changed, 1 insertion(+)\n", " create mode 100644 newfile.py\n" ] } ], "source": [ "git add newfile.py\n", "git commit -m \"Testing new idea\"" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "file.txt newfile.py\n" ] } ], "source": [ "ls" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Switched to branch 'master'\n" ] } ], "source": [ "git checkout master" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "file.txt\n" ] } ], "source": [ "ls" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Updating 045df6a..8ebee32\n", "Fast-forward\n", " newfile.py | 1 +\n", " 1 file changed, 1 insertion(+)\n", " create mode 100644 newfile.py\n" ] } ], "source": [ "git merge newidea" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "file.txt newfile.py\n" ] } ], "source": [ "ls" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "HEAD is now at 045df6 Add exclamation mark to file.txt\n" ] } ], "source": [ "git reset --hard HEAD~1" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "* master\n", " new idea\n" ] } ], "source": [ "git branch" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Deleted branch newidea (was 8ebee32).\n" ] } ], "source": [ "git branch -D newidea" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "file.txt\n" ] } ], "source": [ "ls" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "echo \"new line\" >> file.txt" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello world!\n", "new line\n" ] } ], "source": [ "cat file.txt" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saved working directory and index state WIP on master:\n", "045df6a Add exclamation mark to file.txt\n", "HEAD is now at 045df6 Add exclamation mark to file.txt\n" ] } ], "source": [ "git stash" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello world!\n" ] } ], "source": [ "cat file.txt" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "On branch master\n", "Changes not staged for commit:\n", "\n", " modified: file.txt\n", "\n", "no changes added to commit\n", " (use \"git add\" and/or \"git commit -a\")\n", "Dropped refs/stash@{0} (c9071a)\n" ] } ], "source": [ "git stash pop" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Hello world!\n", "new line\n" ] } ], "source": [ "cat file.txt" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.9" } }, "nbformat": 4, "nbformat_minor": 2 }