Berikut ini adalah contekan singkat untuk perintah bash, git, npm, yarn, package.json, dan semver dasar.
Legenda: [dir-name] - artinya nama direktori, | - berarti "atau".
Saya sarankan memasukkan setiap perintah di terminal dan mempelajari hasilnya dengan hati-hati, sehingga Anda akan segera mengingatnya dan menentukan perintah mana yang Anda perlukan dan mana yang tidak.
Saya mohon maaf atas kemungkinan kesalahan dan kesalahan ketik. Saya akan dengan senang hati memberikan komentar dan saran.
Tanpa kata pengantar lebih lanjut.
Daftar Isi:
pesta
bash adalah alat baris perintah yang memungkinkan Anda melakukan beberapa hal umum.
Instalasi: Dalam kasus saya, bash diinstal bersama dengan git.
Referensi:
help
Sejarah perintah:
history
Pembersihan terminal:
clear
Keluar dari terminal:
exit
Pembuatan direktori:
// make directory
mkdir [dir-name]
//
mkdir my-app
//
mkdir -p {dir1,dir2}
//
mkdir -p my-app/{css,js}
Ubah direktori:
// change directory
cd [dir-name]
//
cd my-app
//
cd !$
//
cd ..
//
cd ../..
//
cd -
//
cd ~
Jalur ke direktori saat ini:
// print work directory
pwd
Daftar file:
// list
ls
//
ls -a | -f
//
// ,
ls -l
Pembuatan file:
touch [file-name]
//
touch index.html
//
touch my-app/{index.html,css/style.css,js/script.js}
Isi file:
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]
Menyalin, memindahkan dan menghapus file:
// 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]
Output ke terminal jalur:
echo [string]
//
echo hello
//
echo hello > greet.txt
//
echo hello >> greet.txt
Unggah file:
wget [url]
Konektor:
true && echo hello
false || echo hello
echo hello ; ls
Konveyor:
// - \n
cat [file] | wc -l
git
git adalah sistem kontrol versi terdistribusi yang memungkinkan Anda mengontrol proses pembuatan perubahan pada sebuah proyek.
Buku Pro Git .
Screencast oleh Ilya Kantor .
Mulai Cepat: Git How To .
Instalasi: git-scm.com .
Pemeriksaan instalasi:
git --version
Referensi:
git help
git help [command-name]
git [command-name] --help | -h
Pengaturan minimum:
// --local -
// --global -
// --system - , ..
git config --global user.name "My Name"
git config --global user.email "myemail@example.com"
Pengaturan tambahan:
//
git config --list | -l --global
//
git config --global --edit | -e
Membuat repositori:
git init
Membersihkan repositori:
// -d - , -x - , -f -
git clean | -dxf
Menghapus file dan direktori:
// remove
git rm [file-name]
git rm -r [dir-name]
git rm --force | -f
Memindahkan file:
// git add + git remove
// move
git mv [old-file] [new-file]
Lihat status repositori:
git status
Menambahkan perubahan:
git add [file-name]
git add --force | -f
//
git add . | --all | -A
// .gitkeep
Menambahkan pesan (komit):
//
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
Lihat komit:
//
git show
//
git show [hash] // 4
//
git show :/[string]
//
git show [tag-name]
Melihat perbedaan antara komit:
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
Lihat riwayat perubahan:
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]
Pembatalan perubahan:
git reset
// --hard -
// --soft -
// --mixed - : ,
git reset --hard [hash] | @~ // @~ - HEAD
//
git reset --hard ORIG_HEAD
//
git checkout
git restore
Bekerja dengan cabang:
//
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]
Menyelesaikan konflik penggabungan:
// , ,
//
git checkout --ours
//
git checkout --theirs
//
git reset --merge
git merge --abort
//
git checkout --conflict=diff3 --merge [file-name]
//
git merge --continue
Repositori jarak jauh:
//
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
Tag:
//
git tag
//
git tag [tag-name]
//
git tag v1-beta
//
git tag -a v1 -m "My Version 1"
//
git tag -d [tag-name]
Debugging
git bisect
git blame
git grep
Menyimpan perubahan yang belum terikat:
//
git stash
//
git stash pop
Menyalin komit:
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]
Relokasi:
git rebase [branch]
//
//
git rebase --abort
//
git rebase --skip
//
git rebase --continue
//
git rebase --preserve-merges | -p
//
git rebase -i [branch]
Konflik duplikat pelengkapan otomatis:
// rerere - reuse recorder resolution
// rerere.enabled true | false
// rerere.autoUpdate true | false
// rerere-train.sh - rerere
git rerere forget [file-name]
Lakukan sebaliknya:
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
Contoh alias (pintasan) untuk .gitconfig:
[alias]
aa = add -A
co = checkout
ci = commit -m
st = status
br = branch
Contoh .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
Contoh .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 adalah manajer paket yang memungkinkan Anda menginstal dependensi proyek.
Situs resmi: npmjs.com .
Instalasi.
NPM diinstal dengan Node.js .
Selain itu, npx diinstal bersama dengan Node.js, yang memungkinkan Anda menjalankan file yang dapat dieksekusi tanpa menginstal: npx create-react-app my-app.
Pemeriksaan instalasi:
node --version | -v
npm --version | -v
Memperbarui:
npm i -g npm@latest
Daftar perintah yang tersedia:
npm help
npm help [command-name]
Inisialisasi proyek:
npm init
// auto
npm init --yes | -y
Menginstal dependensi
npm install | i
//
npm explore [package-name]
//
npm doctor
//
npm ci
Penginstalan ulang paksa dari dependensi:
npm i --force | -f
Menginstal hanya paket produksi:
npm i --only=production | --only=prod
Tambahkan ketergantungan:
npm i [package-name]
npm i [package-name@version]
//
npm i express
Menambahkan ketergantungan pengembangan:
npm i --save-dev | -D [package-name]
//
npm i -D nodemon
Pembaruan ketergantungan:
npm update | up [package-name]
Menghapus ketergantungan:
// dependency
npm remove | rm | r [package-name]
// devDependency
npm r -D [package-name]
Paket instal / perbarui / copot global:
npm i/up/r -g [package-name]
//
npm i -g create-react-app
//
create-react-app my-app
Menentukan paket usang:
npm outdated
npm outdated [package-name]
Daftar dependensi yang diinstal:
npm list | ls
// top level
npm ls --depth=0 | --depth 0
// global + top level
npm ls -g --depth 0
Informasi paket:
npm view | v [package-name]
//
npm v react
npm v react.description
Jalankan skrip / eksekusi perintah:
npm run [script]
//
// package.json: "scripts": { "dev": "nodemon server.js" }
npm run dev
// script start node server.js
npm start
npm stop
Menghapus paket duplikat:
npm dedupe | ddp
Menghapus paket asing:
npm prune
Deteksi kerentanan (ancaman keamanan):
npm audit
// json
npm audit --json
// plain text
npm audit --parseable
Perbaikan otomatis dari kerentanan:
npm audit fix
benang
yarn, seperti npm, adalah manajer paket yang memungkinkan Anda menginstal dependensi proyek.
Situs resmi: yarnpkg.com .
Instalasi:
npm i -g yarn
Perintah "yarn dlx" memungkinkan Anda menjalankan file yang dapat dieksekusi tanpa menginstal: yarn dlx create-react-app my-app. Untuk melakukan ini, benang perlu diperbarui ke versi 2: benang versi set versi berry.
Pemeriksaan instalasi:
yarn --version | -v
Memperbarui:
yarn set version latest
Daftar perintah yang tersedia:
yarn help
yarn help [command-name]
Inisialisasi proyek:
yarn init
// auto
yarn init --yes | -y
// "private": true package.json
yarn init --private | -p
// auto + private
yarn init -yp
Menginstal dependensi:
yarn
//
yarn install
//
yarn install --silent | -s
//
yarn --check-files
Penginstalan ulang paksa dari dependensi:
yarn install --force
Menginstal hanya paket produksi:
yarn install --production | --prod
Tambahkan ketergantungan:
yarn add [package-name]
yarn add [package-name@version]
//
yarn add express
//
yarn add --silent
//
yarn add -s
Menambahkan ketergantungan pengembangan:
yarn add --dev | -D [package-name]
//
yarn add -D nodemon
Pembaruan ketergantungan:
yarn upgrade [package-name]
Menghapus ketergantungan:
yarn remove [package-name]
Paket instal / perbarui / copot global:
yarn global add/upgrade/remove [package-name]
//
yarn global add create-react-app
//
create-react-app my-app
Daftar dependensi yang diinstal:
yarn list
// top level
yarn list --depth=0 | --depth 0
Informasi paket:
yarn info [package-name]
//
yarn why [package-name]
//
yarn info react
yarn info react description
yarn why webpack
Jalankan skrip / eksekusi perintah:
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"
}
}
- nama - nama proyek
- versi - versi proyek (lihat pembuatan versi)
- description - deskripsi proyek (mengapa Anda membutuhkan paket?)
- keywords - keywords (memudahkan pencarian di registry npm)
- private — true npm
- main —
- repository — ( )
- author — ( )
- contributors — (, )
- dependencies — (, )
- devDependencies — (, )
- scripts — ( , ), , , «yarn dev» «nodemon server.js»
Daftar lengkap kolom yang tersedia di file "package.json": npm-package.json
File "package-lock.json" dan "yarn.lock" berisi informasi yang lebih lengkap tentang paket yang diinstal daripada package.json, misalnya, versi paket tertentu daripada rentang versi yang valid.
Pembuatan versi
Setiap paket memiliki versi tiga digit (misalnya 1.0.0), dengan digit pertama adalah versi mayor, yang kedua adalah versi minor, dan yang ketiga adalah versi tambalan (patch). Rilis versi baru disebut rilis.
Meningkatkan setiap angka ini menurut aturan pembuatan versi semantik (semver) berarti sebagai berikut:
- mayor - membuat perubahan tidak kompatibel dengan versi sebelumnya
- minor - fungsionalitas baru yang kompatibel dengan versi sebelumnya
- patch - perbaikan bug, perbaikan kecil
Rentang versi atau rilis valid ditentukan menggunakan operator berikut (pembanding):
- * - versi apa pun (sama seperti string kosong)
- <1.0.0 - versi apa pun yang kurang dari 1.0.0
- <= 1.0.0 - versi apa pun yang kurang dari atau sama dengan 1.0.0
- > 1.0.0 - versi apa pun yang lebih besar dari 1.0.0
- > = 1.0.0 - versi apa pun yang lebih besar dari atau sama dengan 1.0.0
- = 1.0.0 - hanya versi 1.0.0 (operator "=" dapat dihilangkan)
- > = 1.0.0 <2.0.0 - lebih besar dari atau sama dengan 1.0.0 dan kurang dari 2.0.0
- 1.0.0-2.0.0 - satu set versi inklusif
- ^ 1.0.0 - rilis minor dan patch (> = 1.0.0 <2.0.0)
- ~ .1.0.0 - hanya rilis patch (> = 1.0.0 <1.1.0)
Detail untuk semver: node-semver .
Terima kasih atas perhatian Anda.