Difference between revisions of "Linux command: git"

From RHS Wiki
Jump to navigation Jump to search
Tag: visualeditor
 
(17 intermediate revisions by the same user not shown)
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 <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
  
== Modify remote url ==
+
==Modify remote url==
  git remote set-url origin <new url>/OTHERREPOSITORY.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 37: 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 --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 ==
+
==Cheat Sheet==
 
http://wiki.herrerosolis.com/images/4/46/Git-cheat-sheet.pdf
 
http://wiki.herrerosolis.com/images/4/46/Git-cheat-sheet.pdf

Latest revision as of 13:49, 9 April 2024

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>

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 -A
git commit -m "Message of commit"
git commit -am "Message"  # add and commit in one line
git push origin master

Branching

git checkout -b <branch_name>
git merge

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 -- .

add remote

git remote add <repository_name> <repository_path>

list remote

git remote -v

Modify remote url

git remote set-url origin <new_url/new_repository.git

remove remote

git rm <repository_name>

pull/push

git push <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:

#!/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

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"
  1. 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

git config core.editor "nano -w"

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.
Save and close the commit list file.
In each resulting commit file, type the new commit message, save the file, and close it.

git push --force


Create git aliases

count-lines Alias

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 }' #"

Cheat Sheet

http://wiki.herrerosolis.com/images/4/46/Git-cheat-sheet.pdf