Voici une petite feuille de triche pour les commandes de base bash, git, npm, yarn, package.json et semver.
Légende: [nom-répertoire] - signifie le nom du répertoire, | - signifie "ou".
Je recommande de saisir chaque commande dans le terminal et d'étudier attentivement la sortie, afin que vous vous en souveniez rapidement et que vous déterminiez les commandes dont vous avez besoin et celles dont vous n'avez pas besoin.
Je m'excuse pour les éventuelles erreurs et erreurs typographiques. Je serai heureux de vos commentaires et suggestions.
Sans autre préface.
Table des matières:
frapper
bash est un outil de ligne de commande qui vous permet de faire certaines choses courantes.
Installation: Dans mon cas, bash a été installé avec git.
Référence:
help
Historique des commandes:
history
Nettoyage du terminal:
clear
Sortie du terminal:
exit
Création d'annuaire:
// make directory
mkdir [dir-name]
//
mkdir my-app
//
mkdir -p {dir1,dir2}
//
mkdir -p my-app/{css,js}
Changer de répertoire:
// change directory
cd [dir-name]
//
cd my-app
//
cd !$
//
cd ..
//
cd ../..
//
cd -
//
cd ~
Le chemin vers le répertoire courant:
// print work directory
pwd
Liste des fichiers:
// list
ls
//
ls -a | -f
//
// ,
ls -l
Création de fichier:
touch [file-name]
//
touch index.html
//
touch my-app/{index.html,css/style.css,js/script.js}
Contenu du fichier:
cat [file-name]
//
cat index.html
//
cat [file-name] | sort | uniq
//
less [file-name] // q - exit
// n
head -50 [file-name]
// n
tail -50 [file-name]
//
grep [string] [file-name]
//
unzip [achive-name]
//
file [file-name]
Copier, déplacer et supprimer un fichier:
// copy
cp [file1] [file2]
// move
mv [file1] [file2]
//
//
mv [dir1]/*.* [dir2]
// remove
rm [file-name]
//
rmdir [dir-name]
//
rm -r [dir-name]
//
rm -rf [dir-name]
Sortie vers la borne de la ligne:
echo [string]
//
echo hello
//
echo hello > greet.txt
//
echo hello >> greet.txt
Téléchargement de fichiers:
wget [url]
Connecteurs:
true && echo hello
false || echo hello
echo hello ; ls
Convoyeur:
// - \n
cat [file] | wc -l
git
git est un système de contrôle de version distribué qui vous permet de contrôler le processus de modification d'un projet.
Livre Pro Git .
Screencast par Ilya Kantor .
Démarrage rapide: Git How To .
Installation: git-scm.com .
Vérification de l'installation:
git --version
Référence:
git help
git help [command-name]
git [command-name] --help | -h
Paramètres minimum:
// --local -
// --global -
// --system - , ..
git config --global user.name "My Name"
git config --global user.email "myemail@example.com"
Paramètres additionnels:
//
git config --list | -l --global
//
git config --global --edit | -e
Créer un référentiel:
git init
Nettoyage du référentiel:
// -d - , -x - , -f -
git clean | -dxf
Suppression de fichiers et de répertoires:
// remove
git rm [file-name]
git rm -r [dir-name]
git rm --force | -f
Déplacement de fichiers:
// git add + git remove
// move
git mv [old-file] [new-file]
Affichez l'état du référentiel:
git status
Ajout de modifications:
git add [file-name]
git add --force | -f
//
git add . | --all | -A
// .gitkeep
Ajout d'un message (commit):
//
git commit
// , git add . | -A
// ,
git commit --message | -m "My Message"
// , git add [file-name]
git commit --all | -a -m | -am "My Message"
//
git commit --amend "My Message" | --no-edit
Afficher le commit:
//
git show
//
git show [hash] // 4
//
git show :/[string]
//
git show [tag-name]
Affichage de la différence entre les commits:
git diff HEAD | @ // HEAD - , ; @ - HEAD
// staged
git diff --staged | --cached
git diff [hash1] [hash2]
//
git diff [branch1]...[branch2]
//
git commit --verbose | -v
//
git diff --word-diff | --color-words
Afficher l'historique des modifications:
git log
// n -
git log -n
// --since, --after -
// --until, --before -
//
git log -p
//
git log --graph --oneline --stat
//
git log --pretty=format
//
git log --pretty=format:'%C(red)%h %C(green)%cd %C(reset)| %C(blue)%s%d %C(yellow)[%an]' --date=short | format-local:'%F %R'
// , , ; i -
git log --grep | -G [string] | [file] | [branch] & -i
//
git log --grep [string1] --grep [string2] --all-match
//
git log -L '/<head>/','/<\/head>/':index.html
//
git log --author=[name]
Annulation des modifications:
git reset
// --hard -
// --soft -
// --mixed - : ,
git reset --hard [hash] | @~ // @~ - HEAD
//
git reset --hard ORIG_HEAD
//
git checkout
git restore
Travailler avec des succursales:
//
git branch
//
git branch [branch-name]
//
git checkout [branch-name]
// branch + checkout
git checkout -b [branch-name]
//
git branch -m [old-branch] [new-branch]
//
git branch -d [branch-name]
//
git merge [branch-name]
Résolution des conflits de fusion:
// , ,
//
git checkout --ours
//
git checkout --theirs
//
git reset --merge
git merge --abort
//
git checkout --conflict=diff3 --merge [file-name]
//
git merge --continue
Référentiel distant:
//
git clone [url] & [dir]
//
git remote
git remote show
git remote add [shortname] [url]
git remote rename [old-name] [new-name]
//
// git fetch + git merge
git pull
//
git push
Mots clés:
//
git tag
//
git tag [tag-name]
//
git tag v1-beta
//
git tag -a v1 -m "My Version 1"
//
git tag -d [tag-name]
Débogage
git bisect
git blame
git grep
Enregistrement des modifications non validées:
//
git stash
//
git stash pop
Copier un commit:
git cherry-pick | -x [hash]
//
//
git cherry-pick --abort
//
git cherry-pick --continue
git cherry-pick --no-commit | -n
// --cherry = --cherry-mark --left-right --no-merges
git log --oneline --cherry [branch1] [branch2]
Déménagement:
git rebase [branch]
//
//
git rebase --abort
//
git rebase --skip
//
git rebase --continue
//
git rebase --preserve-merges | -p
//
git rebase -i [branch]
Compléter automatiquement les conflits en double:
// rerere - reuse recorder resolution
// rerere.enabled true | false
// rerere.autoUpdate true | false
// rerere-train.sh - rerere
git rerere forget [file-name]
Commits inversés:
git revert @ | [hash]
//
// git reset --hard @~
git revert [hash] -m 1
// git merge [branch]
//
git revert [hash]
// rebase
git rebase [branch1] [branch2] | --onto [branch1] [hash] [branch2]
git merge [branch]
git rebase [hash] --no-ff
Un exemple d'alias (raccourcis) pour .gitconfig:
[alias]
aa = add -A
co = checkout
ci = commit -m
st = status
br = branch
Exemple .gitconfig:
[user]
name = [My Name]
email = [myemail@example.com]
username = [myusername]
[core]
editor = [myeditor]
whitespace = fix,-indent-with-non-tab,trailing-space,cr-at-eol
pager = delta
[web]
browser = google-chrome
[instaweb]
httpd = apache2 -f
[rerere]
enabled = 1
autoupdate = 1
[push]
default = matching
[color]
ui = auto
[color "branch"]
current = yellow bold
local = green bold
remote = cyan bold
[color "diff"]
meta = yellow bold
frag = magenta bold
old = red bold
new = green bold
whitespace = red reverse
[color "status"]
added = green bold
changed = yellow bold
untracked = red bold
[difftool]
prompt = false
[delta]
features = line-numbers decorations
line-numbers = true
[delta "decorations"]
minus-style = red bold normal
plus-style = green bold normal
minus-emph-style = white bold red
minus-non-emph-style = red bold normal
plus-emph-style = white bold green
plus-non-emph-style = green bold normal
file-style = yellow bold none
file-decoration-style = yellow box
hunk-header-style = magenta bold
hunk-header-decoration-style = magenta box
minus-empty-line-marker-style = normal normal
plus-empty-line-marker-style = normal normal
line-numbers-right-format = "{np:^4}│ "
[github]
user = [username]
token = token
[gitflow "prefix"]
versiontag = v
[sequence]
editor = interactive-rebase-tool
[alias]
a = add --all
ai = add -i
###
ap = apply
as = apply --stat
ac = apply --check
###
ama = am --abort
amr = am --resolved
ams = am --skip
###
b = branch
ba = branch -a
bd = branch -d
bdd = branch -D
br = branch -r
bc = rev-parse --abbrev-ref HEAD
bu = !git rev-parse --abbrev-ref --symbolic-full-name "@{u}"
bs = !git-branch-status
###
c = commit
ca = commit -a
cm = commit -m
cam = commit -am
cem = commit --allow-empty -m
cd = commit --amend
cad = commit -a --amend
ced = commit --allow-empty --amend
###
cl = clone
cld = clone --depth 1
clg = !sh -c 'git clone git://github.com/$1 $(basename $1)' -
clgp = !sh -c 'git clone git@github.com:$1 $(basename $1)' -
clgu = !sh -c 'git clone git@github.com:$(git config --get user.username)/$1 $1' -
###
cp = cherry-pick
cpa = cherry-pick --abort
cpc = cherry-pick --continue
###
d = diff
dp = diff --patience
dc = diff --cached
dk = diff --check
dck = diff --cached --check
dt = difftool
dct = difftool --cached
###
f = fetch
fo = fetch origin
fu = fetch upstream
###
fp = format-patch
###
fk = fsck
###
g = grep -p
###
l = log --oneline
lg = log --oneline --graph --decorate
###
ls = ls-files
lsf = !git ls-files | grep -i
###
m = merge
ma = merge --abort
mc = merge --continue
ms = merge --skip
###
o = checkout
om = checkout master
ob = checkout -b
opr = !sh -c 'git fo pull/$1/head:pr-$1 && git o pr-$1'
###
pr = prune -v
###
ps = push
psf = push -f
psu = push -u
pst = push --tags
###
pso = push origin
psao = push --all origin
psfo = push -f origin
psuo = push -u origin
###
psom = push origin master
psaom = push --all origin master
psfom = push -f origin master
psuom = push -u origin master
psoc = !git push origin $(git bc)
psaoc = !git push --all origin $(git bc)
psfoc = !git push -f origin $(git bc)
psuoc = !git push -u origin $(git bc)
psdc = !git push origin :$(git bc)
###
pl = pull
pb = pull --rebase
###
plo = pull origin
pbo = pull --rebase origin
plom = pull origin master
ploc = !git pull origin $(git bc)
pbom = pull --rebase origin master
pboc = !git pull --rebase origin $(git bc)
###
plu = pull upstream
plum = pull upstream master
pluc = !git pull upstream $(git bc)
pbum = pull --rebase upstream master
pbuc = !git pull --rebase upstream $(git bc)
###
rb = rebase
rba = rebase --abort
rbc = rebase --continue
rbi = rebase --interactive
rbs = rebase --skip
###
re = reset
rh = reset HEAD
reh = reset --hard
rem = reset --mixed
res = reset --soft
rehh = reset --hard HEAD
remh = reset --mixed HEAD
resh = reset --soft HEAD
rehom = reset --hard origin/master
###
r = remote
ra = remote add
rr = remote rm
rv = remote -v
rn = remote rename
rp = remote prune
rs = remote show
rao = remote add origin
rau = remote add upstream
rro = remote remove origin
rru = remote remove upstream
rso = remote show origin
rsu = remote show upstream
rpo = remote prune origin
rpu = remote prune upstream
###
rmf = rm -f
rmrf = rm -r -f
###
s = status
sb = status -s -b
###
sa = stash apply
sc = stash clear
sd = stash drop
sl = stash list
sp = stash pop
ss = stash save
ssk = stash save -k
sw = stash show
st = !git stash list | wc -l 2>/dev/null | grep -oEi '[0-9][0-9]*'
###
t = tag
td = tag -d
###
w = show
wp = show -p
wr = show -p --no-color
###
svnr = svn rebase
svnd = svn dcommit
svnl = svn log --oneline --show-commit
###
subadd = !sh -c 'git submodule add git://github.com/$1 $2/$(basename $1)' -
subrm = !sh -c 'git submodule deinit -f -- $1 && rm -rf .git/modules/$1 && git rm -f $1' -
subup = submodule update --init --recursive
subpull = !git submodule foreach git pull --tags origin master
###
assume = update-index --assume-unchanged
unassume = update-index --no-assume-unchanged
assumed = !git ls -v | grep ^h | cut -c 3-
unassumeall = !git assumed | xargs git unassume
assumeall = !git status -s | awk {'print $2'} | xargs git assume
###
bump = !sh -c 'git commit -am \"Version bump v$1\" && git psuoc && git release $1' -
release = !sh -c 'git tag v$1 && git pst' -
unrelease = !sh -c 'git tag -d v$1 && git pso :v$1' -
merged = !sh -c 'git o master && git plom && git bd $1 && git rpo' -
aliases = !git config -l | grep alias | cut -c 7-
snap = !git stash save 'snapshot: $(date)' && git stash apply 'stash@{0}'
bare = !sh -c 'git symbolic-ref HEAD refs/heads/$1 && git rm --cached -r . && git clean -xfd' -
whois = !sh -c 'git log -i -1 --author=\"$1\" --pretty=\"format:%an <%ae>\"' -
serve = daemon --reuseaddr --verbose --base-path=. --export-all ./.git
###
behind = !git rev-list --left-only --count $(git bu)...HEAD
ahead = !git rev-list --right-only --count $(git bu)...HEAD
###
ours = "!f() { git checkout --ours $@ && git add $@; }; f"
theirs = "!f() { git checkout --theirs $@ && git add $@; }; f"
subrepo = !sh -c 'git filter-branch --prune-empty --subdirectory-filter $1 master' -
human = name-rev --name-only --refs=refs/heads/*
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
Exemple .gitignore:
### Node ###
# Logs
logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Optional npm cache directory
.npm
# Dependency directories
/node_modules
/jspm_packages
/bower_components
# Yarn Integrity file
.yarn-integrity
# Optional eslint cache
.eslintcache
# dotenv environment variables file(s)
.env
.env.*
#Build generated
dist/
build/
# Serverless generated files
.serverless/
### SublimeText ###
# cache files for sublime text
*.tmlanguage.cache
*.tmPreferences.cache
*.stTheme.cache
# workspace files are user-specific
*.sublime-workspace
# project files should be checked into the repository, unless a significant
# proportion of contributors will probably not be using SublimeText
# *.sublime-project
### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
### Vim ###
*.sw[a-p]
### WebStorm/IntelliJ ###
/.idea
modules.xml
*.ipr
*.iml
### System Files ###
*.DS_Store
# Windows thumbnail cache files
Thumbs.db
ehthumbs.db
ehthumbs_vista.db
# Folder config file
Desktop.ini
# Recycle Bin used on file shares
$RECYCLE.BIN/
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
npm
npm est un gestionnaire de packages qui vous permet d'installer des dépendances de projet.
Site officiel: npmjs.com .
Installation.
NPM installé avec Node.js .
De plus, npx est installé avec Node.js, ce qui vous permet d'exécuter des exécutables sans installer: npx create-react-app my-app.
Vérification de l'installation:
node --version | -v
npm --version | -v
Mise à jour:
npm i -g npm@latest
Liste des commandes disponibles:
npm help
npm help [command-name]
Initialisation du projet:
npm init
// auto
npm init --yes | -y
Installer les dépendances
npm install | i
//
npm explore [package-name]
//
npm doctor
//
npm ci
Réinstallation forcée des dépendances:
npm i --force | -f
Installer uniquement les packages de production:
npm i --only=production | --only=prod
Ajouter une dépendance:
npm i [package-name]
npm i [package-name@version]
//
npm i express
Ajout d'une dépendance de développement:
npm i --save-dev | -D [package-name]
//
npm i -D nodemon
Mise à jour des dépendances:
npm update | up [package-name]
Suppression des dépendances:
// dependency
npm remove | rm | r [package-name]
// devDependency
npm r -D [package-name]
Package global d'installation / mise à jour / désinstallation:
npm i/up/r -g [package-name]
//
npm i -g create-react-app
//
create-react-app my-app
Déterminer les packages obsolètes:
npm outdated
npm outdated [package-name]
Liste des dépendances installées:
npm list | ls
// top level
npm ls --depth=0 | --depth 0
// global + top level
npm ls -g --depth 0
Informations sur le paquet:
npm view | v [package-name]
//
npm v react
npm v react.description
Exécution de script / exécution de commande:
npm run [script]
//
// package.json: "scripts": { "dev": "nodemon server.js" }
npm run dev
// script start node server.js
npm start
npm stop
Suppression des packages en double:
npm dedupe | ddp
Suppression des packages superflus:
npm prune
Détection des vulnérabilités (menaces de sécurité):
npm audit
// json
npm audit --json
// plain text
npm audit --parseable
Corrigez automatiquement les vulnérabilités:
npm audit fix
fil
yarn, comme npm, est un gestionnaire de packages qui vous permet d'installer des dépendances de projet.
Site officiel: yarnpkg.com .
Installation:
npm i -g yarn
La commande "yarn dlx" vous permet d'exécuter des exécutables sans installer: yarn dlx create-react-app my-app. Pour ce faire, yarn doit être mis à jour vers la version 2: yarn set version berry.
Vérification de l'installation:
yarn --version | -v
Mise à jour:
yarn set version latest
Liste des commandes disponibles:
yarn help
yarn help [command-name]
Initialisation du projet:
yarn init
// auto
yarn init --yes | -y
// "private": true package.json
yarn init --private | -p
// auto + private
yarn init -yp
Installation des dépendances:
yarn
//
yarn install
//
yarn install --silent | -s
//
yarn --check-files
Réinstallation forcée des dépendances:
yarn install --force
Installer uniquement les packages de production:
yarn install --production | --prod
Ajouter une dépendance:
yarn add [package-name]
yarn add [package-name@version]
//
yarn add express
//
yarn add --silent
//
yarn add -s
Ajout d'une dépendance de développement:
yarn add --dev | -D [package-name]
//
yarn add -D nodemon
Mise à jour des dépendances:
yarn upgrade [package-name]
Suppression des dépendances:
yarn remove [package-name]
Package global d'installation / mise à jour / désinstallation:
yarn global add/upgrade/remove [package-name]
//
yarn global add create-react-app
//
create-react-app my-app
Liste des dépendances installées:
yarn list
// top level
yarn list --depth=0 | --depth 0
Informations sur le paquet:
yarn info [package-name]
//
yarn why [package-name]
//
yarn info react
yarn info react description
yarn why webpack
Exécution de script / exécution de commande:
yarn [script]
//
yarn run [script]
//
// package.json: "scripts": { "dev": "nodemon server.js" }
yarn dev
package.json
{
"name": "my-app",
"version": "1.0.0",
"description": "my awesome app",
"keywords": [
"amazing",
"awesome",
"best"
],
"private": true,
"main": "server.js",
"license": "MIT",
"homepage": "https://my-website.com",
"repository": {
"type": "git",
"url": "https://github.com/user/repo.git"
},
"repository": "github:user/repo",
"author": {
"name": "My Name",
"email": "myemail@example.com",
"url": "https://my-website.com"
},
"author": "My Name <myemail@example.com> (https://my-website.com)",
"contributers": [
{
"name": "Friend Name",
"email": "friendemail@example.com",
"url": "https://friend-website.com"
}
],
"contributors": "Friend Name <friendemail.com> (https://friend-website.com)",
"dependencies": {
"express": "^4.17.1"
},
"devDependencies": {
"nodemon": "^2.0.4"
},
"scripts": {
"start": "react-scripts start",
"dev": "nodemon server.js"
}
}
- nom - nom du projet
- version - version du projet (voir versioning)
- description - description du projet (pourquoi avez-vous besoin d'un package?)
- mots-clés - mots-clés (facilite la recherche dans le registre npm)
- private — true npm
- main —
- repository — ( )
- author — ( )
- contributors — (, )
- dependencies — (, )
- devDependencies — (, )
- scripts — ( , ), , , «yarn dev» «nodemon server.js»
Une liste complète des champs disponibles dans le fichier "package.json": npm-package.json
Les fichiers "package-lock.json" et "yarn.lock" contiennent des informations plus complètes sur les packages installés que package.json, par exemple, des versions spécifiques de packages au lieu d'une plage versions valides.
Gestion des versions
Chaque paquet a une version composée de trois chiffres (par exemple, 1.0.0), où le premier chiffre est la version majeure, le second est la version mineure (mineure) et le troisième est la version du correctif (correctif). La publication d'une nouvelle version s'appelle une version.
L'augmentation de chacun de ces nombres selon les règles de version sémantique (semver) signifie ce qui suit:
- majeur - rendant les modifications incompatibles avec la version précédente
- mineur - nouvelle fonctionnalité compatible avec la version précédente
- patch - corrections de bugs, améliorations mineures
Les plages de versions ou les versions valides sont déterminées à l'aide des opérateurs (comparateurs) suivants:
- * - toute version (identique à une chaîne vide)
- <1.0.0 - toute version inférieure à 1.0.0
- <= 1.0.0 - toute version inférieure ou égale à 1.0.0
- > 1.0.0 - toute version supérieure à 1.0.0
- > = 1.0.0 - toute version supérieure ou égale à 1.0.0
- = 1.0.0 - version 1.0.0 uniquement (l'opérateur "=" peut être omis)
- > = 1.0.0 <2.0.0 - supérieur ou égal à 1.0.0 et inférieur à 2.0.0
- 1.0.0-2.0.0 - un ensemble de versions inclus
- ^ 1.0.0 - versions mineures et correctives (> = 1.0.0 <2.0.0)
- ~ .1.0.0 - uniquement les versions de correctifs (> = 1.0.0 <1.1.0)
Détails pour semver: node-semver .
Merci de votre attention.