Changes

Jump to navigation Jump to search
2,012 bytes added ,  13:49, 9 April 2024
m
Line 1: Line 1: −
== Clone ==
+
==Install==
 +
sudo add-apt-repository ppa:git-core/ppa -y
 +
sudo apt-get update
 +
sudo apt-get install git
 +
git --version
 +
==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 24: 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>
   −
== Add .gitignore ==
+
To push all branches:
 +
git push --all origin
 +
 
 +
===Tags===
 +
To fetch tags:
 +
git fetch --tags
 +
To push tags:
 +
git push origin --tags
 +
 
 +
===Full copy of remote repository:===
 +
<nowiki>#!/bin/bash
 +
  for branch in `git branch -r | grep -v HEAD | grep -v master`; do
 +
      echo ${branch##*/} $branch
 +
  done
 +
  git fetch --all
 +
  git pull -v</nowiki>
 +
 
 +
==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 50: 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
   −
== assume-unchanged ==
+
==git config==
 +
git config --global push.default [matching | simple]
 +
git config --global user.name "Nombre Apellido"
 +
git config --global user.email "user@domain.com"
 +
 
 +
===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:
 +
git config --global http.sslVerify false
 +
or
 +
git -c http.sslVerify=false clone https://domain.com/path/to/git
 +
 
 +
==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 61: 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'
== Cheat Sheet ==
+
==Set upstream branch==
 +
git branch --set-upstream-to=origin/master
 +
 
 +
==Change last commit==
 +
git commit --amend
 +
 
 +
==Change older commit messages==
 +
git rebase -i HEAD~n
 +
Replace pick with reword before each commit message you want to change.<br />
 +
Save and close the commit list file.<br />
 +
In each resulting commit file, type the new commit message, save the file, and close it.<br />
 +
git push --force
 +
 
 +
 +
== 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==
 
http://wiki.herrerosolis.com/images/4/46/Git-cheat-sheet.pdf
 
http://wiki.herrerosolis.com/images/4/46/Git-cheat-sheet.pdf

Navigation menu