Difference between revisions of "HowToGit"
From Lost In Wonderlands
(→useful commands) |
|||
Line 19: | Line 19: | ||
gitk --all | gitk --all | ||
+ | === [ https://git-scm.com/docs/git-init git-init] === | ||
git init | git init | ||
+ | |||
+ | === [ https://git-scm.com/docs/git-clone git-clone] === | ||
git clone | git clone | ||
− | + | === [https://git-scm.com/docs/git-config git-config] === | |
# [https://delicious-insights.com/fr/articles/configuration-git/ git attitude git config (french)] | # [https://delicious-insights.com/fr/articles/configuration-git/ git attitude git config (french)] | ||
git config --list | git config --list | ||
Line 112: | Line 115: | ||
mergetool.prompt false | mergetool.prompt false | ||
+ | |||
+ | === [https://git-scm.com/docs/git-log git-log] === | ||
git log | git log | ||
git log -graph | git log -graph | ||
Line 119: | Line 124: | ||
git log --oneline <filePath> | git log --oneline <filePath> | ||
− | + | === [https://git-scm.com/docs/git-branch git-branch] === | |
− | git | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
git branch | git branch | ||
git branch -a | git branch -a | ||
Line 138: | Line 134: | ||
git branch --set-upstream-to=origin/nomBranchRemote nomBranchLocale | git branch --set-upstream-to=origin/nomBranchRemote nomBranchLocale | ||
+ | |||
+ | === [https://git-scm.com/docs/git-tag git-tag] === | ||
git tag | git tag | ||
+ | === [https://git-scm.com/docs/git-status git-status] === | ||
+ | git status | ||
+ | |||
+ | === [https://git-scm.com/docs/git-stash git-stash] === | ||
+ | git stash | ||
+ | git stash pop | ||
+ | |||
+ | === [https://git-scm.com/docs/git-fetch git-fetch] === | ||
+ | git fetch | ||
+ | |||
+ | === [https://git-scm.com/docs/git-pull git-pull] === | ||
+ | git pull | ||
+ | git pull --rebase | ||
+ | |||
+ | === [https://git-scm.com/docs/git-checkout git-checkout] === | ||
git checkout | git checkout | ||
git checkout -b <branchname> | git checkout -b <branchname> | ||
− | |||
− | |||
+ | === [https://git-scm.com/docs/git-merge git-merge] === | ||
git merge | git merge | ||
+ | === [https://git-scm.com/docs/git-rebase git-rebase] === | ||
get rebase | get rebase | ||
git rebase -i | git rebase -i | ||
git rebase --interractive --onto | git rebase --interractive --onto | ||
− | |||
+ | === [https://git-scm.com/docs/git-cherry-pick git-cherry-pick ] === | ||
+ | git cherry-pick <commit sha1> | ||
+ | git cherry-pick --abort | ||
+ | |||
+ | === [https://git-scm.com/docs/git-rerere git-rerere ] === | ||
+ | git rerere can be activated and set to be used automatically by git rebase | ||
+ | === [https://git-scm.com/docs/git-reflog git-reflog] === | ||
git reflog | git reflog | ||
− | |||
+ | === [https://git-scm.com/docs/git-diff git-diff] === | ||
git diff | git diff | ||
− | |||
− | |||
git diff <filePath> | git diff <filePath> | ||
+ | |||
+ | === [https://git-scm.com/docs/git-difftool git-difftool] === | ||
+ | git difftool | ||
git difftool <filePath> | git difftool <filePath> | ||
+ | === [https://git-scm.com/docs/git-mergetool git-mergetool] === | ||
+ | git mergetool | ||
+ | |||
+ | === [https://git-scm.com/docs/git-reset git-reset] === | ||
+ | git reset | ||
+ | === [https://git-scm.com/docs/git-add git-add] === | ||
git add | git add | ||
git add -a | git add -a | ||
git add -p | git add -p | ||
+ | === [https://git-scm.com/docs/git-rm git-rm] === | ||
git rm | git rm | ||
+ | |||
+ | === [https://git-scm.com/docs/git-mv git-mv] === | ||
git mv | git mv | ||
+ | |||
+ | === [https://git-scm.com/docs/git-grep git-grep] === | ||
git grep | git grep | ||
+ | === [https://git-scm.com/docs/git-commit git-commit] === | ||
git commit | git commit | ||
git commit -m "commit message text" | git commit -m "commit message text" | ||
Line 179: | Line 211: | ||
git commit --amend | git commit --amend | ||
+ | === [https://git-scm.com/docs/git-push git-push] === | ||
git push | git push | ||
git push origin nomBranche | git push origin nomBranche | ||
+ | === [https://git-scm.com/docs/git-stash git-stash] === | ||
git stash | git stash | ||
git stash pop | git stash pop | ||
Line 187: | Line 221: | ||
git stash applymvnc | git stash applymvnc | ||
+ | === [https://git-scm.com/docs/git-stash git-reset] === | ||
git reset --hard origin/<myRemoteBranch> | git reset --hard origin/<myRemoteBranch> | ||
+ | |||
+ | === [https://git-scm.com/docs/git-alias git-alias] === | ||
alias: | alias: | ||
git config --global alias.newCommand 'Commande en entier sans le "git"' | git config --global alias.newCommand 'Commande en entier sans le "git"' | ||
Line 197: | Line 234: | ||
git config --global alias.cp 'cherry-pick' | git config --global alias.cp 'cherry-pick' | ||
+ | === [https://git-scm.com/docs/git-bisect git-bisect] === | ||
git bisect | git bisect | ||
+ | === [https://git-scm.com/docs/git-blame git-blame ] === | ||
git blame <filepath>, list all the changes on a file for each lines and tell which commiter did them (the name have to be set for each commiter) | git blame <filepath>, list all the changes on a file for each lines and tell which commiter did them (the name have to be set for each commiter) | ||
Revision as of 13:29, 6 May 2019
How To Git
NeXT Steps
here everything has yet to be done !
coming soon :
Everything You Always Wanted to Know on git [seldom]... (But Were Afraid to Ask)
a collection of links of interest
See also
useful commands
gitk gitk --all
=== [ https://git-scm.com/docs/git-init git-init] === git init
=== [ https://git-scm.com/docs/git-clone git-clone] === git clone
=== git-config === # git attitude git config (french) git config --list git config --list --show-origin
git config --global user.name "Your Name Comes Here" git config --global user.email you@yourdomain.example.com
core.whitespace true core.autocrlf true core.safecrlf true core.eol
core.symlinks false
core.whitespace true
A comma separated list of common whitespace problems to notice. git diff will use color.diff.whitespace to highlight them, and git apply --whitespace=error will consider them as errors. You can prefix - to disable any of them (e.g. -trailing-space):
blank-at-eol treats trailing whitespaces at the end of the line as an error (enabled by default).
space-before-tab treats a space character that appears immediately before a tab character in the initial indent part of the line as an error (enabled by default).
indent-with-non-tab treats a line that is indented with space characters instead of the equivalent tabs as an error (not enabled by default).
tab-in-indent treats a tab character in the initial indent part of the line as an error (not enabled by default).
blank-at-eof treats blank lines added at the end of file as an error (enabled by default).
trailing-space is a short-hand to cover both blank-at-eol and blank-at-eof.
cr-at-eol treats a carriage-return at the end of line as part of the line terminator, i.e. with it, trailing-space does not trigger if the character before such a carriage-return is not a whitespace (not enabled by default).
tabwidth=<n> tells how many character positions a tab occupies; this is relevant for indent-with-non-tab and when Git fixes tab-in-indent errors. The default tab width is 8. Allowed values are 1 to 63.
# setting editor #emacs git config --global core.editor emacs #vscode #vi, vim #nano #TextEdit # using notepad on window 64bits git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -nosession" # using notepad on window 32 bits git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -nosession"
# TextMate : l'invocation en ligne de commande mate doit être installée (ça se fait depuis Help > Terminal Usage… dans la v1 et depuis l'onglet Terminal des Préférences dans la v2), après quoi c'est juste mate -w. #SublimeText : il faut avoir un appel en ligne de commande, là aussi. Sur OSX avec ST2, j'ai un lien symbolique /usr/local/bin/subl vers /Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl, qui est fourni pour ça. Après quoi subl -w. #GEdit : gedit -w -s #GVim : gvim --nofork #Coda : Il vous faut installer coda-cli (généralement via Homebrew, toujours aussi utile…) après quoi coda -w. #Chocolat : Installez l'appel en ligne de commande (Chocolat > Install Command Line Tool…) après quoi choc -w #Notepad++ : vous aurez peut-être besoin d'adapter le chemin en fonction de là où vous avez installé Notepad++, mais voici l'idée : 'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin. #Ultra-Edit : uedit32 /fni # on macOS , depending on applications, you may have to go inside the application package
# setting diff tool git config --global core.editor emacs # P4Merge # Meld # kdiff3 # winMerge # TortoiseMerge
# setting merge tool git config --global core.editor emacs # P4Merge # Meld # kdiff3 # winMerge # TortoiseMerge
mergetool.keepBackup false mergetool.keepTemporaries false mergetool.prompt false
=== git-log === git log git log -graph git log -graph --oneline git log --oneline git log -- <filePath> git log --oneline <filePath>
=== git-branch === git branch git branch -a git branch -r
git branch -D <branchname> git branch -m newNameOfLocalBranch git branch -m branchToRename newNameOfBranchToRename git branch --set-upstream-to=origin/nomBranchRemote nomBranchLocale
=== git-tag === git tag
=== git-status === git status
=== git-stash === git stash git stash pop
=== git-fetch === git fetch
=== git-pull === git pull git pull --rebase
=== git-checkout === git checkout git checkout -b <branchname>
=== git-merge === git merge
=== git-rebase === get rebase git rebase -i git rebase --interractive --onto
=== git-cherry-pick === git cherry-pick <commit sha1> git cherry-pick --abort
=== git-rerere === git rerere can be activated and set to be used automatically by git rebase
=== git-reflog === git reflog
=== git-diff === git diff git diff <filePath>
=== git-difftool === git difftool git difftool <filePath>
=== git-mergetool === git mergetool
=== git-reset === git reset
=== git-add === git add git add -a git add -p
=== git-rm === git rm
=== git-mv === git mv
=== git-grep === git grep
=== git-commit === git commit git commit -m "commit message text" git commit -p git commit --amend
=== git-push === git push git push origin nomBranche
=== git-stash === git stash git stash pop git stash clear git stash applymvnc
=== git-reset === git reset --hard origin/<myRemoteBranch>
=== git-alias === alias: git config --global alias.newCommand 'Commande en entier sans le "git"' Exemple : git config --global alias.unstage 'reset HEAD --' Usefull ones : git config --global alias.st 'status' git config --global alias.co 'checkout' git config --global alias.cp 'cherry-pick'
=== git-bisect === git bisect
=== git-blame === git blame <filepath>, list all the changes on a file for each lines and tell which commiter did them (the name have to be set for each commiter)
How-To
- how to get a file history
git log -- <filePath> git log <filepath>
- using reflog and git reset to cancel actions
- resetting
- cancelling the last pushed commit
git revert
- cancelling the last commit (not yet pushed)
git reset HEAD~
- resetting a local branch after the remote branch on the server
git reset --hard origin/<myRemoteBranch>
- This removes everything from the index, then just run:
git rm -r --cached .
- Applying a .gitignore file added well after having committed file
git rm -r --cached . git add . git commit -m ".gitignore is now working"
- patches
- create a patch
git diff >> patch file git format-patch patch-file
** accept a patch git apply patch_file