git

Gitconfig

[core]
  editor = vim
[user]
  name = yourname
  email = youremail@yourhost
[merge]
  tool = vimdiff
[color]
  ui = true
[push]
  default = matching

Merge

Gitignore

# text files
*~
*.swp

# Latex:
*.log
*.fls
_out_/*.pdf
*.d
*.aux
*.bak
*.make
*.temp
*.acn
*.glo
*.ist
*.glg
*.gls
*.glsdefs
*.lof
*.lol
*.lot
*.toc
*.acr
*.alg
*-blx.bib
*.bbl
*.bcf
*.blg
*.xml
*.fdb_latexmk

Datei aus der History loeschen

git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch pfad/dateiname' \
  --prune-empty --tag-name-filter cat -- --all

Dann pushe es zu einer remote:

git push origin master --force

Teile einer Datei Commiten

git add --patch path/filename  
y stage this hunk for the next commit  
n do not stage this hunk the next commit  
q quit; do not stage this hunk or any of the remaining ones  
a stage this hunk and all later hunks in the file  
d do not stage this hunk or any of the later hunks in the file  
g select a hunk to go to  
/ search for a hunk matching the given regex  
j leave this hunk undecided, see next undecided hunk  
J leave this hunk undecided, see next hunk  
k leave this hunk undecided, see previous undecided hunk  
K leave this hunk undecided, see previous hunk  
s split the current hunk into smaller hunks  
e manually edit the current hunk  
? print help  

Cherry Pick

git log yourbranch
git cherry-pick <commit hash>