Changes

Jump to navigation Jump to search
3,053 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 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 <branch_name>
+
  git checkout -b <branch_name>
 
  git merge
 
  git merge
   −
== Undo last changes ==
+
===git Successful Feature Branching Workflow===
 +
Onece you have cloned the master repository:
 +
 
 +
*Create a branch for each feature
 +
*Merge branches with --no-ff
 +
 
 +
git checkout -b <branch_name>
 +
Write your new code
 +
Switch to the master branch to merge
 +
git merge --no-ff <brach_to_merge_name>
 +
 
 +
Set the current branch to specific commit:
 +
git reset --hard f414f31
 +
 
 +
==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
   −
== remove remote ==
+
==Modify remote url==
 +
git remote set-url origin <new_url/new_repository.git
 +
 
 +
==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>
 +
 +
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
 +
To stop following and delete the files that were allready being tracked:
 +
git rm -r --cached .
 +
git add .
 +
git commit -m ".gitignore now working"
 +
 +
#To undo git rm --cached filename use: git add filename
 +
 +
==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>
 +
git update-index --assume-unchanged <file>
 +
 +
To include again this file run:
 +
git update-index --no-assume-unchanged <file>
 +
 +
To view which files are not being tracked:
 +
git ls-files -v|grep '^h'
 +
==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

Navigation menu