| Line 1: |
Line 1: |
| − | == Install== | + | ==Install== |
| | sudo add-apt-repository ppa:git-core/ppa -y | | sudo add-apt-repository ppa:git-core/ppa -y |
| | sudo apt-get update | | sudo apt-get update |
| | sudo apt-get install git | | sudo apt-get install git |
| | git --version | | git --version |
| − | == Clone == | + | ==Clone== |
| | git clone <repository_path> | | git clone <repository_path> |
| − | == add/commit/push == | + | ===Clone with submodules=== |
| | + | git clone --recurse-submodules -j8 git@git.rra.lan:python/pilaf/Converter.git |
| | + | |
| | + | *Note: -j8 increases performance cloning up to 8 submodules at a time |
| | + | |
| | + | To update repositories with submodules use: |
| | + | git pull --recurse-submodules |
| | + | |
| | + | ==add/commit/push== |
| | git add . | | git add . |
| | git add -A | | git add -A |
| | git commit -m "Message of commit" | | git commit -m "Message of commit" |
| | + | git commit -am "Message" # add and commit in one line |
| | git push origin master | | git push origin master |
| | | | |
| − | == Branching == | + | ==Branching== |
| | git checkout -b <branch_name> | | git checkout -b <branch_name> |
| | git merge | | git merge |
| | | | |
| − | === git Successful Feature Branching Workflow === | + | ===git Successful Feature Branching Workflow=== |
| | Onece you have cloned the master repository: | | Onece you have cloned the master repository: |
| − | * Create a branch for each feature | + | |
| − | * Merge branches with --no-ff | + | *Create a branch for each feature |
| | + | *Merge branches with --no-ff |
| | | | |
| | git checkout -b <branch_name> | | git checkout -b <branch_name> |
| Line 29: |
Line 39: |
| | git reset --hard f414f31 | | git reset --hard f414f31 |
| | | | |
| − | == Undo last changes == | + | ==Undo last changes== |
| | git checkout -- . | | git checkout -- . |
| | | | |
| − | == add remote == | + | ==add remote== |
| | git remote add <repository_name> <repository_path> | | git remote add <repository_name> <repository_path> |
| | | | |
| − | == list remote == | + | ==list remote== |
| | git remote -v | | git remote -v |
| | | | |
| − | == Modify remote url == | + | ==Modify remote url== |
| | git remote set-url origin <new_url/new_repository.git | | git remote set-url origin <new_url/new_repository.git |
| | | | |
| − | == remove remote == | + | ==remove remote== |
| | git rm <repository_name> | | git rm <repository_name> |
| | | | |
| − | == pull/push == | + | ==pull/push== |
| | git push <repository_name> | | git push <repository_name> |
| | git pull <repository_name> | | git pull <repository_name> |
| Line 51: |
Line 61: |
| | git push --all origin | | git push --all origin |
| | | | |
| − | === Tags === | + | ===Tags=== |
| | To fetch tags: | | To fetch tags: |
| | git fetch --tags | | git fetch --tags |
| Line 57: |
Line 67: |
| | git push origin --tags | | git push origin --tags |
| | | | |
| − | === Full copy of remote repository: === | + | ===Full copy of remote repository:=== |
| | <nowiki>#!/bin/bash | | <nowiki>#!/bin/bash |
| − | for branch in `git branch -r | grep -v HEAD | grep -v master`; do | + | for branch in `git branch -r | grep -v HEAD | grep -v master`; do |
| − | echo ${branch##*/} $branch
| + | echo ${branch##*/} $branch |
| − | done | + | done |
| − | git fetch --all | + | git fetch --all |
| − | git pull -v</nowiki> | + | git pull -v</nowiki> |
| | | | |
| − | == Add .gitignore == | + | ==Add .gitignore== |
| | Add the file to the git folder | | Add the file to the git folder |
| | To stop following and delete the files that were allready being tracked: | | To stop following and delete the files that were allready being tracked: |
| Line 72: |
Line 82: |
| | git commit -m ".gitignore now working" | | git commit -m ".gitignore now working" |
| | | | |
| − | # To undo git rm --cached filename use: git add filename | + | #To undo git rm --cached filename use: git add filename |
| − | == git config == | + | |
| | + | ==git config== |
| | git config --global push.default [matching | simple] | | git config --global push.default [matching | simple] |
| | git config --global user.name "Nombre Apellido" | | git config --global user.name "Nombre Apellido" |
| | git config --global user.email "user@domain.com" | | git config --global user.email "user@domain.com" |
| − | === Self Signed Certificates === | + | |
| | + | ===Default editor=== |
| | + | <syntaxhighlight lang="bash"> |
| | + | git config core.editor "nano -w" |
| | + | </syntaxhighlight> |
| | + | |
| | + | ==Self Signed Certificates== |
| | To allow cloning and pushing to a git repository over https whit a self signed certificate you must configure: | | To allow cloning and pushing to a git repository over https whit a self signed certificate you must configure: |
| | git config --global http.sslVerify false | | git config --global http.sslVerify false |
| | + | or |
| | + | git -c http.sslVerify=false clone https://domain.com/path/to/git |
| | | | |
| − | == assume-unchanged == | + | ==assume-unchanged== |
| | This will make git to stop tracking changes on <file> | | This will make git to stop tracking changes on <file> |
| | git update-index --assume-unchanged <file> | | git update-index --assume-unchanged <file> |
| Line 90: |
Line 109: |
| | To view which files are not being tracked: | | To view which files are not being tracked: |
| | git ls-files -v|grep '^h' | | git ls-files -v|grep '^h' |
| − | == Set upstream branch == | + | ==Set upstream branch== |
| | git branch --set-upstream-to=origin/master | | git branch --set-upstream-to=origin/master |
| | | | |
| − | == Change last commit == | + | ==Change last commit== |
| | git commit --amend | | git commit --amend |
| | | | |
| − | == Change older commit messages == | + | ==Change older commit messages== |
| | git rebase -i HEAD~n | | git rebase -i HEAD~n |
| | Replace pick with reword before each commit message you want to change.<br /> | | Replace pick with reword before each commit message you want to change.<br /> |
| Line 104: |
Line 123: |
| | | | |
| | | | |
| | + | == Create git aliases == |
| | | | |
| | + | === count-lines Alias === |
| | + | <syntaxhighlight lang="bash"> |
| | + | git config --global alias.count-lines "! git log --author=\"\$1\" --pretty=tformat: --numstat | awk '{ add += \$1; subs += \$2; loc += \$1 - \$2 } END { printf \"added lines: %s, removed lines: %s, total lines: %s\n\", add, subs, loc }' #" |
| | + | </syntaxhighlight> |
| | | | |
| − | == Cheat Sheet == | + | ==Cheat Sheet== |
| | http://wiki.herrerosolis.com/images/4/46/Git-cheat-sheet.pdf | | http://wiki.herrerosolis.com/images/4/46/Git-cheat-sheet.pdf |