Files
collection/git.md

2.3 KiB

summary on some steps in the git workflow

Table of contents

<<<<<<< HEAD

terminology

term description
^ one commit back (in history), use <HEAD/branch/commit_hash>^
head pointer to branch (usually latest commit, unless detached=pointer to specific commit) currently checked out locally
index keeps track of staged/cached (with git add) changes
working tree local file working directory

branches

create a branch

To create a branch use subcommand branch or checkout with flag -b:

# create new branch ('base-branch' is optional)
git branch <branch-name> <base-branch>
git checkout -b <branch-name> <base-branch>

# switch branch ('checkout -b' combines the 'branch' and 'switch' subcommands)
git switch <branch-name>

submodules

To fetch submodules of a cloned repository use:

# do it manually
git submodule init
git submodule update

# do it all at once
git clone --recurse-submodules

# if repo is already cloned
git submodule update --init --recursive

removing files from index

To remove files from index without deleting them on disk, use:

git rm --cached <file-name>

This is helpful if one accidentally committed autogenerated files.

philosophies

Important things to always remember: - do renaming in seperate commit - don't merge conflicts with directories

merge

When following the philosophie of merging, one merges the target branch into ones working, solves all conflicts, tests the result and then merges the working branch into the target branch. This is done with

# merges 'target-branch' into curret branch
git merge <target-branch>

# proceeds after solving merge conflict
git merge --continue

rebase

When following the philosophie of rebasing, one rebases the feature branch onto the target branch. This is done with

# rebases current branch onto 'target-branch'
git rebase <target-branch>

# proceeds after solving rebase conflict
git rebase --continue