Разное

Mv git: Git — git-mv Documentation

Содержание

git rm и git mv

Еще один важный практический вопрос при работе с Git — это операции с файлами.

В частности, это операции удаления и переименования файлов. В системе Git имеются специальные команды, которые очень похожи на консольные команды и в Linux/Mac OS. Но для Git они выглядят несколько иначе: — для удаления файлов и — для переименования файлов. Ниже я рассмотрю обе эти комадны более подробно.

Команда git rm

Для удаления файлов в системе Git, как уже упоминалось выше, имеется специальная команда . Ее отличие от обычной консольной команды (в том же Linux) заключается в особенности самой системы Git.

Как хорошо известно, в системе Git файл может одновременно существовать в трех ипостасях: в области “Working Directory”, в области “Staging Area”, в области “Repository”. Удаление файла из области “Working Directory” не приведет к его удалению из областей “Staging Area” и “Repository”.

Поэтому, чтобы удалить файл, нужно (в идеале) выполнить три команды подряд для удаления файла из Рабочей области “Working Directory”, затем из области индекса “Staging Area” и потом из области репозитория “Repository”:

$ rm index.html
$ git add .
$ git commit -m 'Delete file index.html'

Команда является ни чем иным, как “вшитым” в Git сокращением двух первых команд:

$ rm index.html
$ git add .

Сделано это всего лишь для удобства пользования системой Git. Давайте на примере посмотрим работу команды . Предположим, что имеется файл , который проиндексирован и зафиксирован.

Удалим его командой :

Видим, что файл был сразу удален из двух областей: рабочего каталога “Working Directory” и области индексации “Staging Area”. Но в репозитории файл все же остался, о чем говорит вывод команды .

Любой последующий commit зафиксирует удаление этого файла:

Команда git rm -cached

У команды имеется пара полезных ключей, одним из которых является ключ . Задача этого ключа — позволить команде удалить файл из области индексирования “Staging Area”, но при этом оставить его в области рабочего проекта “Working Directory”. Давайте рассмотрим пример, когда создан файл и произведена его индексация (но не фиксация):

Удалим его командой :

Отлично! Видим, что произошло удаление файла . Кроме того, команда показывает, что в рабочей области “Working Directory” имеется неотслеживаемый (untracked) файл по имени .

Команда git rm -f

В предыдущем разделе я рассмотрел вариант, когда созданный и проиндексированный файл удаляется из области индексирования “Staging Area”, но остается в области “Working Directory”. Выполняется это с помощью команды .

Логическим продолжением этой команды является та же самая команда , но с ключом . Такая команда удаляет проиндексированный (но еще не зафиксированный) файл как из области “Staging Area”, так и из области “Working Directory”.

Давайте рассмотрим на примере созданного и проиндексированного файла его удаление с помощью команды :

Файл удален как из области “Staging Area”, так и из области “Working Directory”. В итоге можно сказать, что между командой и командой практически нет никакой разницы.

Команда git mv — перемещение или переименование файлов

В системе Git имеется “своя” команда для перемещения или переименования файлов. Слово “своя” здесь не даром взято в кавычки — аналогия с командой полная. Команда перемещает или переименовывает файлы, автоматически “уведомляя” об этих событиях область “Staging Area”:

Остается только зафиксировать эти изменения любым коммитом:

$ git commit -m 'Move index.html to papka'
  [master 868d428] Move index.html to papka
   1 file changed, 0 insertions(+), 0 deletions(-)
   rename index.html => papka/index.html (100%)

Переименуем файл с помощью команды :

Вот и все несложные операции по перемещению\переименованию или удалению файлов с помощью команд и , под всевидящим оком Git.


git

Какова цель git-mv? | Блог о программировании

Git просто пытается угадать для вас, что вы пытаетесь сделать. Она делает все возможное, чтобы сохранить нерушимую историю. Конечно, это не идеально. Так что git mv позволяет вам быть явным с вашим намерением и избежать некоторых ошибок.

рассмотрим такой пример. Начиная с пустого РЕПО,

git init
echo "First" >a
echo "Second" >b
git add *
git commit -m "initial commit"
mv a c
mv b a
git status

результат:

# On branch master
# Changes not staged for commit:
#   (use "git add/rm <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   a
#   deleted:    b
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   c
no changes added to commit (use "git add" and/or "git commit -a")

автоопределение не 🙁
Или это сделал?

$ git add *
$ git commit -m "change"
$ git log c

commit 0c5425be1121c20cc45df04734398dfbac689c39
Author: Sergey Orshanskiy <*****@gmail.com>
Date:   Sat Oct 12 00:24:56 2013 -0400

    change

и затем

$ git log --follow c

Author: Sergey Orshanskiy <*****@gmail.com>
Date:   Sat Oct 12 00:24:56 2013 -0400

    change

commit 50c2a4604a27be2a1f4b95399d5e0f96c3dbf70a
Author: Sergey Orshanskiy <*****@gmail.com>
Date:   Sat Oct 12 00:24:45 2013 -0400

    initial commit

теперь попробуйте вместо этого (не забудьте удалить .git папка при экспериментировании):

git init
echo "First" >a
echo "Second" >b
git add *
git commit -m "initial commit"
git mv a c
git status

так:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   renamed:    a -> c


git mv b a
git status

теперь никто не совершенен:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   a
#   deleted:    b
#   new file:   c
#

в самом деле? Ну конечно же…

git add *
git commit -m "change"
git log c
git log --follow c

…и результат тот же, что и выше: только --follow показывает полную историю.


теперь, будьте осторожны с переименованием, как любой вариант может по-прежнему производить странно эффекты.
Пример:

git init
echo "First" >a
git add a
git commit -m "initial a"
echo "Second" >b
git add b
git commit -m "initial b"

git mv a c
git commit -m "first move"
git mv b a
git commit -m "second move"

git log --follow a

commit 81b80f5690deec1864ebff294f875980216a059d
Author: Sergey Orshanskiy <*****@gmail.com>
Date:   Sat Oct 12 00:35:58 2013 -0400

    second move

commit f284fba9dc8455295b1abdaae9cc6ee941b66e7f
Author: Sergey Orshanskiy <*****@gmail.com>
Date:   Sat Oct 12 00:34:54 2013 -0400

    initial b

сравните его с:

git init
echo "First" >a
git add a
git commit -m "initial a"
echo "Second" >b
git add b
git commit -m "initial b"

git mv a c
git mv b a
git commit -m "both moves at the same time"

git log --follow a

результат:

commit 84bf29b01f32ea6b746857e0d8401654c4413ecd
Author: Sergey Orshanskiy <*****@gmail.com>
Date:   Sat Oct 12 00:37:13 2013 -0400

    both moves at the same time

commit ec0de3c5358758ffda462913f6e6294731400455
Author: Sergey Orshanskiy <*****@gmail.com>
Date:   Sat Oct 12 00:36:52 2013 -0400

    initial a

Ups… Теперь история возвращается к начальная a вместо начальная b, что неверно. Поэтому, когда мы делали два хода за раз, Git запутался и не отслеживал изменения должным образом. Кстати, в моих экспериментах то же самое происходило, когда я удалял/создавал файлы вместо использования git mv. Действуйте осторожно; вы были предупрежденный…

Основные команды bash, git, npm и yarn, а также немного о package.json и semver / Хабр

Доброго времени суток, друзья!

Предлагаю вашему вниманию небольшую шпаргалку по основным командам bash, git, npm, yarn, package.json и semver.

Условные обозначения: [dir-name] — означает название директории, | — означает «или».

Рекомендую вводить каждую команду в терминале и внимательно изучать вывод, так вы быстро их запомните и определите, какие команды вам нужны, а какие нет.

Приношу извинения за возможные ошибки и опечатки. Буду рад любым замечаниям и предложениям.

Без дальнейших предисловий.

Оглавление:

bash

bash представляет собой инструмент командной строки, позволяющий выполнять некоторые распространенные действия.

Установка: в моем случае bash был установлен вместе с git.

Справка:

help

История команд:

history

Очистка терминала:

clear

Выход из терминала:

exit

Создание директории:

// make directory
mkdir [dir-name]
// пример
mkdir my-app
// несколько диреторий
mkdir -p {dir1,dir2}
// несколько вложенных директорий
mkdir -p my-app/{css,js}

Смена директории:

// change directory
cd [dir-name]
// пример
cd my-app
// сразу после создания
cd !$
// родительская директория
cd ..
// на два уровня выше
cd ../..
// предыдущая директория
cd -
// домашняя директория
cd ~

Путь к текущей директории:

// print work directory
pwd

Список файлов:

// list
ls
// включая скрытые файлы
ls -a | -f
// больше информации
// например, права доступа
ls -l

Создание файла:

touch [file-name]
// пример
touch index.html
// несколько файлов
touch my-app/{index.html,css/style.css,js/script.js}

Содержимое файла:

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]

Копирование, перемещение и удаление файла:

// 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]

Вывод в терминал строки:

echo [string]
// пример
echo hello
// создание или перезапись файла
echo hello > greet.txt
// добавление строки в файл
echo hello >> greet.txt

Загрузка файла:

wget [url]

Коннекторы:

true && echo hello
false || echo hello
echo hello ; ls

Конвейер:

// количество переносов строки - \n
cat [file] | wc -l

git

git представляет собой распределенную систему контроля версий, позволяющую контролировать процесс внесения изменений в проект.

Книга Pro Git.

Скринкаст Ильи Кантора.

Быстрый старт: Git How To.

Установка: git-scm.com.

Проверка установки:

git --version

Справка:

git help
git help [command-name]
git [command-name] --help | -h

Минимальные настройки:

// --local - настройки для текущего репо
// --global - настройки для текущего пользователя
// --system - настройки для всей системы, т.е. для всех пользователей
git config --global user.name "My Name"
git config --global user.email "[email protected]"

Дополнительные настройки:

// список глобальных настроек
git config --list | -l --global

// редактирование глобальных настроек
git config --global --edit | -e

Создание репозитория:

git init

Очистка репозитория:

// -d - включая директории, -x - включая игнорируемые файлы, -f - принудительная
git clean | -dxf

Удаление файлов и директорий:

// remove
git rm [file-name]
git rm -r [dir-name]

git rm --force | -f

Перемещение файлов:

// git add + git remove
// move
git mv [old-file] [new-file]

Просмотр состояния репозитория:

git status

Добавление изменений:

git add [file-name]

git add --force | -f

// все файлы
git add . | --all | -A

// для добавления пустой директории можно создать в ней пустой файл .gitkeep

Добавление сообщения (коммита):

// редактирование коммита
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

Просмотр коммита:

// последний коммит
git show

// другой коммит
git show [hash] // минимум первые 4 символа

// поиск изменений по сообщению или части сообщения
git show :/[string]

// поиск коммита по тегу
git show [tag-name]

Просмотр разницы между коммитами:

git diff HEAD | @ // HEAD - как правило, текущая ветка; @ - алиас для HEAD

// staged
git diff --staged | --cached

git diff [hash2] [hash3]

// разница между ветками
git diff [branch2]...[branch3]

// просмотр разницы между коммитами при редактировании сообщения
git commit --verbose | -v

// кастомизация выводимого сообщения
git diff --word-diff | --color-words

Просмотр истории изменений:

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]

Отмена изменений:

git reset
// --hard - включая рабочую директорию и индекс
// --soft - без рабочей директории и индекса
// --mixed - по умолчанию: без рабочей директории, но с индексом

git reset --hard [hash] | @~ // @~ - последний коммит в HEAD

// аналогично
git reset --hard ORIG_HEAD

// не путать с переключением ветки
git checkout

git restore

Работа с ветками:

// список веток
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]

Разрешение конфликтов при слиянии:

// обычно, при возникновении конфликта, открывается редактор

// принять изменения из сливаемой ветки
git checkout --ours

// принять изменения из текущей ветки
git checkout --theirs

// отмена слияния
git reset --merge
git merge --abort

// получение дополнительной информации
git checkout --conflict=diff3 --merge [file-name]

// продолжить слияние
git merge --continue

Удаленный репозиторий:

// клонирование
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

Теги:

// просмотр
git tag

// легковесная метка
git tag [tag-name]
//пример
git tag v1-beta

// аннотированная метка
git tag -a v1 -m "My Version 1"

// удаление
git tag -d [tag-name]

Отладка

git bisect

git blame

git grep

Сохранение незакоммиченных изменений:

// сохранение
git stash

// извлечение
git stash pop

Копирование коммита:

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 [branch2] [branch3]

Перебазирование:

git rebase [branch]

// при возникновении конфликта
// отмена
git rebase --abort

// пропустить
git rebase --skip

// продолжить
git rebase --continue

// предпочтение коммитов слияния
git rebase --preserve-merges | -p

// интерактивное перебазирование
git rebase -i [branch]

Автозавершение повторных конфликтов:

// rerere - reuse recorder resolution
// rerere.enabled true | false
// rerere.autoUpdate true | false
// rerere-train.sh - скрипт для обучения rerere
git rerere forget [file-name]

Обратные коммиты:

git revert @ | [hash]

// отмена слияния
// git reset --hard @~ не сработает
git revert [hash] -m 1

// git merge [branch] не сработает
// отмена отмены
git revert [hash]

// повторное слияние с rebase
git rebase [branch2] [branch3] | --onto [branch2] [hash] [branch3]

git merge [branch]

git rebase [hash] --no-ff

Пример алиасов (сокращений) для .gitconfig:

[alias]
    aa = add -A
    co = checkout
    ci = commit -m
    st = status
    br = branch

Пример .gitconfig:

[user]
	name = [My Name]
	email = [[email protected]]
	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 [email protected]:$1 $(basename $1)' -
	clgu = !sh -c 'git clone [email protected]:$(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

Пример .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 представляет собой пакетный менеджер, позволяющий устанавливать зависимости проекта.

Официальный сайт: npmjs.com.

Установка.

npm устанавливается вместе с Node.js.

Также вместе с Node.js устанавливается npx, позволяющий запускать исполняемые файлы без установки: npx create-react-app my-app.

Проверка установки:

node --version | -v
npm --version | -v

Обновление:

npm i -g npm@latest

Список доступных команд:

npm help
npm help [command-name]

Инициализация проекта:

npm init

// auto
npm init --yes | -y

Установка зависимостей

npm install | i

// проверка конкретной зависимости
npm explore [package-name]

// проверка всех зависимостей
npm doctor

// очистка
npm ci

Принудительная переустановка зависимостей:

npm i --force | -f

Установка только продакшн-пакетов:

npm i --only=production | --only=prod

Добавление зависимости:

npm i [package-name]
npm i [package-name@version]

// пример
npm i express

Добавление зависимости для разработки:

npm i --save-dev | -D [package-name]

// пример
npm i -D nodemon

Обновление зависимости:

npm update | up [package-name]

Удаление зависимости:

// dependency
npm remove | rm | r [package-name]

// devDependency
npm r -D [package-name]

Глобальная установка/обновление/удаление пакета:

npm i/up/r -g [package-name]

// пример
npm i -g create-react-app
// использование
create-react-app my-app

Определение устаревших пакетов:

npm outdated
npm outdated [package-name]

Список установленных зависимостей:

npm list | ls

// top level
npm ls --depth=0 | --depth 0

// global + top level
npm ls -g --depth 0

Информация о пакете:

npm view | v [package-name]

// пример
npm v react
npm v react.description

Запуск скрипта/выполнение команды:

npm run [script]

// пример
// package.json: "scripts": { "dev": "nodemon server.js" }
npm run dev
// script start или node server.js
npm start
npm stop

Удаление дублирующихся пакетов:

npm dedupe | ddp

Удаление посторонних пакетов:

npm prune

Обнаружение уязвимостей (угроз безопасности):

npm audit
// json
npm audit --json
// plain text
npm audit --parseable

Автоматическое исправление уязвимостей:

npm audit fix

yarn

yarn, как и npm, представляет собой пакетный менеджер, позволяющий устанавливать зависимости проекта.

Официальный сайт: yarnpkg.com.

Установка:

npm i -g yarn

Команда «yarn dlx» позволяет запускать исполняемые файлы без установки: yarn dlx create-react-app my-app. Для этого yarn необходимо обновить до второй версии: yarn set version berry.

Проверка установки:

yarn --version | -v

Обновление:

yarn set version latest

Список доступных команд:

yarn help
yarn help [command-name]

Инициализация проекта:

yarn init

// auto
yarn init --yes | -y

// "private": true в package.json
yarn init --private | -p

// auto + private
yarn init -yp

Установка зависимостей:

yarn
// или
yarn install

// тихая установка
yarn install --silent | -s

// проверка
yarn --check-files

Принудительная переустановка зависимостей:

yarn install --force

Установка только продакшн-пакетов:

yarn install --production | --prod

Добавление зависимости:

yarn add [package-name]
yarn add [package-name@version]

// пример
yarn add express

// тихая установка
yarn add --silent
// или
yarn add -s

Добавление зависимости для разработки:

yarn add --dev | -D [package-name]

// пример
yarn add -D nodemon

Обновление зависимости:

yarn upgrade [package-name]

Удаление зависимости:

yarn remove [package-name]

Глобальная установка/обновление/удаление пакета:

yarn global add/upgrade/remove [package-name]

// пример
yarn global add create-react-app
// использование
create-react-app my-app

Список установленных зависимостей:

yarn list

// top level
yarn list --depth=0 | --depth 0

Информация о пакете:

yarn info [package-name]
// или
yarn why [package-name]

// пример
yarn info react
yarn info react description
yarn why webpack

Запуск скрипта/выполнение команды:

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": "[email protected]",
    "url": "https://my-website.com"
  },
  "author": "My Name <[email protected]> (https://my-website.com)",
  "contributers": [
    {
      "name": "Friend Name",
      "email": "[email protected]",
      "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"
  }
}

  • name — название проекта
  • version — версия проекта (см. версионирование)
  • description — описание проекта (зачем нужен пакет?)
  • keywords — ключевые слова (облегчает поиск в реестре npm)
  • private — установка значения в true предотвращает случайную публикацию пакета в реестре npm
  • main — основная точка входа для функционирования проекта
  • repository — ссылка на репозиторий (один из вариантов)
  • author — автор проекта (один из вариантов)
  • contributors — участники проекта (люди, внесшие вклад в проект)
  • dependencies — зависимости проекта (пакеты, без которых приложение не будет работать)
  • devDependencies — зависимости для разработки (пакеты, без которых приложение будет работать)
  • scripts — команды (выполняемые сценарии, задачи), предназначенные для автоматизации, например, команда «yarn dev» запустит скрипт «nodemon server.js»

Полный список доступных полей файла «package.json»: npm-package.json

Файлы «package-lock.json» и «yarn.lock» содержат более полную информацию об установленных пакетах, чем package.json, например, конкретные версии пакетов вместо диапазона допустимых версий.

Версионирование

Каждый пакет имеет версию, состоящую из трех цифр (например, 1.0.0), где первая цифра — мажорная версия (major), вторая — минорная версия (minor), третья — патчевая версия (патч, patch). Выпуск новой версии называется релизом.

Увеличение каждой из этих цифр согласно правилам семантического версионирования (semver) означает следующее:

  • major — внесение несовместимых с предыдущей версией изменений
  • minor — новая функциональность, совместимая с предыдущей версией
  • patch — исправление ошибок, незначительные улучшения

Диапазоны версий или допустимые релизы определяются с помощью следующих операторов (компараторов):

  • * — любая версия (аналогично пустой строке)
  • <1.0.0 — любая версия, которая меньше 1.0.0
  • <=1.0.0 — любая версия, которая меньше или равна 1.0.0
  • >1.0.0 — любая версия, которая больше 1.0.0
  • >=1.0.0 — любая версия, которая больше или равна 1.0.0
  • =1.0.0 — только версия 1.0.0 (оператор «=» можно опустить)
  • >=1.0.0 <2.0.0 — больше или равно 1.0.0 и меньше 2.0.0
  • 1.0.0-2.0.0 — набор версий включительно
  • ^1.0.0 — минорные и патчевые релизы (>=1.0.0 <2.0.0)
  • ~.1.0.0 — только патчевые релизы (>=1.0.0 <1.1.0)

Подробные сведения о semver: node-semver.

Благодарю за внимание.

Git — Book

2nd Edition (2014)

Download Ebook

The entire Pro Git book, written by Scott Chacon and Ben Straub and published by Apress, is available here. All content is licensed under the Creative Commons Attribution Non Commercial Share Alike 3.0 license. Print versions of the book are available on Amazon.com.>

    1. 1.1
      О системе контроля версий
    2. 1.2
      Краткая история Git
    3. 1.3
      Основы Git
    4. 1.4
      Командная строка
    5. 1.5
      Установка Git
    6. 1.6
      Первоначальная настройка Git
    7. 1.7
      Как получить помощь?
    8. 1.8
      Заключение
    1. 2.1
      Создание Git-репозитория
    2. 2.2
      Запись изменений в репозиторий
    3. 2.3
      Просмотр истории коммитов
    4. 2.4
      Операции отмены
    5. 2.5
      Работа с удалёнными репозиториями
    6. 2.6
      Работа с метками
    7. 2.7
      Псевдонимы в Git
    8. 2.8
      Заключение
    1. 3.1
      О ветвлении в двух словах
    2. 3.2

Git-Mv – вопросы и ответы по программированию

У меня есть одна папка с ~ 300 файлами и ~ 30 папками. Я вырезал папку (Ctrl + X) и вставил (Ctrl + V) в ожидаемую папку. Тогда я только сделал git add -A . После выполнения git status я бы сказал,…

6 месяцев, 2 недели назад

J4N

Кто-то изменил имя файла и его содержимое таким образом, что git не смог обнаружить, что это тот же файл. Они также не использовали git mv , поэтому, когда я получил запрос на pull, я увидел добавл…

6 месяцев, 2 недели назад

Roberto

В прошлом месяце я начал вносить вклад в репозиторий GitHub, открывая соответствующее репо, создавая ветвь функции и затем отправляя запрос на перенос. Повторяя этот процесс в течение нескольких дн…

Я знаю, что git предоставляет ‘git rm’ и ‘git mv’ для удаления/перемещения файлов или каталогов. Но я не вижу практического варианта использования этого. Обычно я просто mv или rm файлы или что-то …

10 лет, 1 месяц назад

prosseek

Вопрос Имеет ли значение, если я перемещаю Git отслеживаемые файлы с помощью команды git mv , а не просто перемещать файлы с MS -DOS move или проводник Windows? В дни Subversion необходимо было

5 лет, 1 месяц назад

Lernkurve

Я использую GIT под окнами с помощью инструмента GIT Bash и пытаюсь переместить файл из одного каталога в другой. Я пробовал разные методы, такие как clean, commit again и т.д., Но каждый раз, когд…

Я прочитал несколько потоков для перемещения каталогов между репозиториями git, и тот, который я решил использовать, — это тот , который использует git subtree . Следуя шагам, все, кажется, работае…

У меня проблемы с моими местными веткими. Когда я пытаюсь выполнить git checkout <branch> я получаю это сообщение об ошибке: error: The following untracked working tree files would be overwri…

У меня есть следующая структура git — git-repo a — subdirectory 2015 — git-submodule b — git-submodule c — git-submodule d Я хотел бы переместить подмодуль git c в папку 2015. Я знаю «грязные…

У меня есть git-репозиторий с> 100 коммитами, которые я инициализировал некоторое время назад по следующему пути: /Users/myusername/ Однако все мои коммиты на самом деле предназначены для файлов…

Я читал, что при переименовании файлов в git вы должны зафиксировать любые изменения, выполнить переименование и затем сгенерировать свой переименованный файл. Git распознает файл из содержимого, в…

10 лет, 6 месяцев назад

Greg K

В bash я могу find. -name jndi.properties -exec rename ‘s/jndi/environment/’ {} \; find. -name jndi.properties -exec rename ‘s/jndi/environment/’ {} \; рекурсивно найти все файлы jndi.propertie и п…

4 года, 4 месяца назад

dr jerry

Это вопрос к другому вопросу, который я задал раньше . Перед редактированием первоначально созданный файл something переименовывается в someth

В моей папке проекта git мне нужно создать другую версию программного обеспечения, что я, конечно, могу сделать, создав новые ветки. Дело в том, что мне нужно переименовать разные файлы, не теряя к…

У меня есть две ветки, которые я пытаюсь объединить. В исходной ветки у меня есть несколько файлов, которые во 2-м ветке перемещаются в другое место. проблема в том, что когда я пытаюсь объединитьс…

3 года, 8 месяцев назад

ufk

Я случайно использовал mv для переименования файла, который находился под git. Я переименовал файл от нижнего регистра до верхнего регистра, сохраняя его имя. mv abc.java ABC.java Я также внес изме…

4 года, 7 месяцев назад

AshwiniR

git rm | Atlassian Git Tutorial

В начале использования Git часто возникает вопрос: «Как заставить Git больше не отслеживать какой-либо файл или несколько файлов?» Чтобы удалить файлы из репозитория Git, можно воспользоваться командой git rm. Ее действие противоположно действию команды git add .

Обзор команды git rm

Команда git rm позволяет удалять отдельные файлы или группы файлов. Основное назначение git rm — удаление отслеживаемых файлов из индекса Git. Кроме того, с помощью git rm можно удалить файлы одновременно из раздела проиндексированных файлов и рабочего каталога. Удалить с ее помощью файл только из рабочего каталога нельзя. Файлы, в отношении которых выполняется команда, должны быть идентичны файлам в текущем указателе HEAD. В случае расхождений между версией файла из указателя HEAD и версией из раздела проиндексированных файлов или рабочего дерева Git заблокирует удаление. Такая блокировка является механизмом безопасности, который предотвращает удаление изменений в процессе их внесения.

Обратите внимание, что git rm не удаляет ветки. Подробнее об использовании веток Git см. здесь.

Использование

Указывает файлы, подлежащие удалению. Можно указать один файл, несколько файлов через пробел (file1 file2 file3) или шаблон подстановки (~./directory/*).

Параметр -f применяется для отключения механизма безопасности, с помощью которого Git обеспечивает соответствие файлов в указателе HEAD текущему содержимому раздела проиндексированных файлов и рабочего каталога.

Параметр dry run является защитным механизмом. Он позволяет выполнить пробный запуск команды git rm без удаления файлов. В выводе отображаются файлы, которые могли бы быть удалены.

Параметр -r — это сокращение от слова recursive. При выполнении команды git rm в рекурсивном режиме она удаляет не только каталог назначения, но и все содержимое его вложенных каталогов.

Параметр разделителя позволяет явным образом отличить список имен файлов от аргументов, передаваемых команде git rm. Разделитель полезен, когда какие-либо из файлов имеют имена, аналогичные параметрам команды.

Параметр cached указывает, что должны быть удалены только файлы, находящиеся в разделе проиндексированных файлов. Файлы в рабочем каталоге при этом остаются нетронутыми.

Этот параметр заставляет команду завершиться со статусом sigterm, равным 0, даже если файлы, указанные для удаления, не найдены. Sigterm — это код состояния в Unix. Код 0 указывает на успешный вызов команды. Параметр --ignore-unmatch может быть полезен, если команда git rm используется в составе скрипта оболочки, который обеспечивает корректную работу при отказе.

Параметр quiet скрывает вывод команды git rm. Как правило, команда выводит по одной строке на каждый удаленный файл.

Отмена изменений, внесенных командой git rm

Изменения, вносимые при выполнении команды git rm, не являются окончательными. Эта команда обновляет раздел проиндексированных файлов и рабочий каталог. Изменения не сохраняются, пока не создан новый коммит и они не добавлены в историю коммитов. Так что изменения, внесенные командой git rm, можно «отменить» с помощью стандартных команд Git.

Команда git reset восстановит раздел индексированных файлов и рабочий каталог до коммита HEAD. В результате изменения, внесенные git rm, будут отменены.

Такого же результата можно добиться с помощью команды git checkout: она восстановит новейшую версию файла из указателя HEAD.

Если после выполнения git rm был создан новый коммит, из-за которого удаление сохранилось, можно воспользоваться командой git reflog, чтобы найти ссылку, предшествующую выполнению git rm. Подробнее об использовании git reflog см. здесь.

Пояснения

Аргумент file>, переданный команде, может содержать точные пути, шаблоны поиска файлов или имена каталогов. При выполнении команды удаляются только пути, зафиксированные в репозитории Git посредством коммитов.

Шаблоны поиска файлов позволяют задавать имена каталогов. При использовании шаблонов поиска следует быть внимательным. Рассмотрим примеры: directory/* и directory*. Использование первого шаблона приведет к удалению всех файлов в каталоге directory/, тогда как второй вызовет удаление всех каталогов, имя которых начинается на directory — например, directory1, directory2, directory_whatever и т. д., что может быть нежелательным.

Область действия команды git rm

Действие команды git rm распространяется только на текущую ветку. Удаление выполняется только в деревьях рабочего каталога и раздела проиндексированных файлов. Удаление файла не сохраняется в репозитории до тех пор, пока не создан новый коммит.

Почему следует использовать git rm, а не rm

Репозиторий Git обнаруживает выполнение стандартной команды оболочки rm для отслеживаемого им файла и соответствующим образом обновляет рабочий каталог. Но раздел проиндексированных файлов не обновляется. Чтобы внести в него изменения, для удаленных путей к файлам необходимо дополнительно выполнить команду git add. Команда git rm уменьшает количество действий, поскольку обновляет при удалении и рабочий каталог, и раздел проиндексированных файлов.

Примеры

git rm Documentation/\*.txt

В данном примере шаблон поиска файлов используется для удаления всех файлов *.txt в каталоге Documentation и всех его подкаталогах.

Обратите внимание, что символ звездочки * здесь экранируется символами косой черты. Это сделано, чтобы оболочка не расширяла шаблон. В таком варианте он включает только пути к файлам и подкаталогам, находящимся в каталоге Documentation/.

В этом примере команда выполняется с параметром force для всех файлов, соответствующих шаблону подстановки git-*.sh. Параметр force явным образом удаляет целевые файлы из рабочего каталога и раздела проиндексированных файлов.

Удаление файлов, которых уже нет в файловой системе

В разделе «Почему следует использовать git rm, а не rm» говорилось о том, что команда git rm предусмотрена для удобства: она сочетает функции стандартной команды оболочки rm и команды git add, позволяя удалить файл из рабочего каталога и раздела проиндексированных файлов. Если удалить несколько файлов с помощью стандартной команды оболочки rm, состояние репозитория может стать проблематичным.

Если требуется записать все явным образом удаленные файлы в составе следующего коммита, можно выполнить команду git commit -a. Она внесет все события удаления в раздел проиндексированных файлов для подготовки к следующему коммиту.

Если же стоит задача безвозвратно удалить файлы, удаленные с помощью команды оболочки rm, нужно воспользоваться следующей командой:

git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached

Эта команда создаст список удаленных файлов из рабочего каталога и передаст его команде git rm --cached, которая обновит раздел проиндексированных файлов.

Команда git rm: заключение

Команда git rm выполняет действия над двумя главными деревьями управления внутренним состоянием Git: рабочим каталогом и разделом проиндексированных файлов. Команда git rm позволяет удалять файлы из репозитория Git. Это удобный инструмент, объединяющий функции стандартной команды оболочки rm и команды git add: сначала git rm удаляет целевой объект из файловой системы, а затем добавляет событие удаления в раздел проиндексированных файлов. Эта команда — одна из многих, которые можно использовать для отмены изменений в Git.

git rm и git mv

Еще один важный практический вопрос при работе с Git — это операции с файлами.

В частности, это операции удаления и переименования файлов. В системе Git имеются специальные команды, которые очень похожи на консольные команды и в Linux / Mac OS. Но для Git они выглядят несколько иначе: — для удаления файлов и — для переименования файлов. Ниже я рассмотрю обе эти комадны более подробно.

Команда git rm

Для удаления файлов в системе Git, как уже упоминалось выше, имеется специальная команда .Ее отличие от обычной консольной команды (в том же Linux) заключается в особенностях самой системы Git.

Как хорошо известно, в системе Git может одновременно существовать в трех ипостасях: «Рабочий каталог», в области «Промежуточная область», в области «Репозиторий». Удаление файла из области «Рабочий каталог» не приведет к его удалению из областей «Промежуточная область» и «Репозиторий».

Поэтому, чтобы удалить файл, нужно (в идеале) выполнить команду подряд для удаления из Рабочей области «Рабочий каталог», из области индекса «Промежуточная область» и потом из репозитория «Репозиторий»:

  $ rm индекс.html
$ git add.
$ git commit -m 'Удалить файл index.html'  

Команда является ни чем иным, как «вшитым» в Git сокращением двух первых команд:

  $ rm index.html
$ git add.  

Сделано это всего лишь для удобства пользования системой Git. Давайте на пример посмотрим работу команды . Предположим, что имеется файл , который проиндексирован и зафиксирован.

Удалим его командой :

Видим, что файл был удален из двух областей: рабочего каталога «Рабочий каталог» и области индексации «Промежуточная область».Но в репозитории файл все же остался, о чем говорит вывод команды .

Любой последующий зафиксирует фиксацию удаления этого файла:

Команда git rm -cached

У команды имеется пара полезных ключей, одним из которых является ключ . Задача этого ключа — команда удалить файл из области индексирования «Промежуточной области», но при этом его в области рабочего проекта «Рабочий каталог». Давайте рассмотрим пример, когда создан файл и произведена его индекс (но не фиксация):

Удалим его командой :

Отлично! Видим, что произошло удаление файла .Кроме того, отряд показывает, что в рабочей области «Рабочий каталог» имеется неотслеживаемый (неотслеживаемый) файл по имени .

Команда git rm -f

В предыдущем разделе я рассмотрел вариант, когда созданный и проиндексированный файл удаляется из области индексирования, но остается в «Рабочем каталоге». Выполняется это с помощью команды .

Логическим продолжением этой команды является та же самая команда , но с ключом .Такая команда удаляет проиндексированный (но еще не зафиксированный) файл как из области «Промежуточная зона», так и из области «Рабочий каталог».

Давайте рассмотрим пример созданного и проиндексированного файла его удаление с помощью команды :

Файл удален как из области «Промежуточная область», так и из области «Рабочий каталог». В итоге можно сказать, что между командой и командой практически нет никакой разницы.

Команда git mv — перемещение переименование файлов

В системе Git имеется «своя» команда для перемещения или переименования файлов. Слово «своя» здесь не даром взято в кавычки — аналогия с командой полная. Команда перемещает или переименовывает файлы, автоматически «уведомляя» об этих событиях область «Staging Area»:

Остается только зафиксировать эти изменения любым коммитом:

  $ git commit -m 'Переместить индекс.html в papka '
  [master 868d428] Переместить index.html в папку papka
   1 файл изменен, 0 вставок (+), 0 удалений (-)
   переименовать index.html => papka / index.html (100%)  

Переименуем файл с помощью команды :

Вот и все несложные операции по перемещению \ переименованию или удалению файлов с помощью команд и , под всевидящим оком Git.


мерзавец

.

Какова цель git-mv? | Блог о программировании

Git просто пытается угадать для вас, что вы пытаетесь сделать. Она делает все возможное, чтобы сохранить нерушимую историю. Конечно, это не идеально. Так что git mv позволяет вам быть с вашим намерением и избежать некоторых ошибок явным.

рассмотрим такой пример. Начало с пустого РЕПО,

  git init
echo "Первый"> а
echo "Second"> b
git add *
git commit -m "начальная фиксация"
мв а с
mv b a
git status
  

результат:

  # Мастер филиала
# Изменения, не предназначенные для фиксации:
# (используйте "git add / rm ... "обновить то, что будет совершено)
# (используйте "git checkout - <файл> ...", чтобы отменить изменения в рабочем каталоге)
#
# изменено: a
# удалено: b
#
# Не отслеживаемые файлы:
# (используйте "git add  ..." для включения в то, что будет зафиксировано)
#
# c
в фиксацию изменений не добавлено (используйте "git add" и / или "git commit -a")
  

автоопределение не 🙁
Или это сделал?

  $ git add *
$ git commit -m "изменить"
$ git журнал c

совершить 0c5425be1121c20cc45df04734398dfbac689c39
Автор: Сергей Оршанский <***** @ gmail.com>
Дата: Сб 12 окт, 00:24:56 2013 -0400

    менять
  

и затем

  $ git log - следовать c

Автор: Сергей Оршанский <***** @ gmail.com>
Дата: Сб 12 окт, 00:24:56 2013 -0400

    менять

совершить 50c2a4604a27be2a1f4b95399d5e0f96c3dbf70a
Автор: Сергей Оршанский <***** @ gmail.com>
Дата: Сб 12 окт, 00:24:45 2013 -0400

    начальная фиксация
  

теперь попробуйте вместо этого (не забудьте удалить .git папка при экспериментировании):

  git init
echo "Первый"> а
echo "Second"> b
git add *
git commit -m "начальная фиксация"
git mv a c
git status
  

так:

  # Мастер филиала
# Изменения, которые необходимо зафиксировать:
# (используйте "git reset HEAD <файл>... "убрать сцену)
#
# переименовано: a -> c


git mv b a
git status
  

теперь никто не совершенен:

  # Мастер филиала
# Изменения, которые необходимо зафиксировать:
# (используйте "git reset HEAD <файл> ...", чтобы отключить сцену)
#
# изменено: a
# удалено: b
# новый файл: c
#
  

в самом деле? Ну конечно же …

  git add *
git commit -m "изменить"
git журнал c
git log - следовать c
  

… и результат тот же, что и выше: только - следуйте показывает полную историю.


теперь, будьте осторожны с переименованием, как любой вариант может по-прежнему выполнять странно эффекты .
Пример:

  git init
echo "Первый"> а
git добавить
git commit -m "начальная а"
echo "Second"> b
git добавить b
git commit -m "начальный б"

git mv a c
git commit -m "первый ход"
git mv b a
git commit -m "второй ход"

git log - подписаться на

совершить 81b80f5690deec1864ebff294f875980216a059d
Автор: Сергей Оршанский <***** @ gmail.com>
Дата: Сб 12 окт, 00:35:58 2013 -0400

    второй ход

совершить f284fba9dc8455295b1abdaae9cc6ee941b66e7f
Автор: Сергей Оршанский <***** @ gmail.com>
Дата: Сб 12 окт, 00:34:54 2013 -0400

    начальная б
  

сравните его с:

  git init
echo "Первый"> а
git добавить
git commit -m "начальная а"
echo "Second"> b
git добавить b
git commit -m "начальный б"

git mv a c
git mv b a
git commit -m "оба хода одновременно"

git log - подписаться на
  

результат:

  совершить 84bf29b01f32ea6b746857e0d8401654c4413ecd
Автор: Сергей Оршанский <***** @ gmail.com>
Дата: Сб 12 окт, 00:37:13 2013 -0400

    оба движения одновременно

совершить ec0de3c5358758ffda462913f6e6294731400455
Автор: Сергей Оршанский <***** @ gmail.com>
Дата: Сб 12 окт, 00:36:52 2013 -0400

    инициалы
  

Упс … Теперь история возвращается к начальная a вместо начальная b , что неверно. Поэтому, когда мы делали два хода за раз, Git запутался и не отслеживал изменения должным образом. Кстати, в моих экспериментах то же самое происходило, когда я удалял / создавал файлы вместо git mv . Действуйте осторожно; вы были предупрежденный …

.

Основные команды bash, git, npm и yarn, а также немного о package.json и semver / Хабр

Доброго времени суток, друзья!

Предлагаю вашему вниманию небольшую шпаргалку по основным командам bash, git, npm, yarn, package.json и semver.

Условные обозначения: [dir-name] — означает название директории, | — означает «или».

Рекомендую ввести каждую команду в терминале и внимательно изучить вывод, так вы быстро их запомните и определите, какие команды вам нужны, а какие нет.

Приношу извинения за возможные ошибки и опечатки. Буду рад любым замечаниям и предложениям.

Без дальнейших предисловий.

Оглавление:

bash

bash представляет собой инструмент командной строки, позволяющий выполнять некоторые распространенные действия.

Установка: в моем случае bash был установлен вместе с git.

Справка:

  справка
  

История команд:

  История
  

Очистка терминала:

  clear
  

Выход из терминала:

  exit
  

Создание директории:

  // сделать каталог
mkdir [имя-каталога]
// пример
mkdir мое приложение
// несколько диреторий
mkdir -p {dir1, dir2}
// несколько вложенных директорий
mkdir -p мое-приложение / {css, js}
  

Смена директории:

  // изменить каталог
cd [dir-name]
// пример
cd my-app
// сразу после создания
cd! $
// родительская директория
CD ..
// на два уровня выше
CD ../..
// предыдущая директория
CD -
// домашняя директория
cd ~
  

Путь к текущей директории:

  // распечатать рабочий каталог
pwd
  

Список файлов:

  // список
ls
// включая скрытые файлы
ls -a | -f
// больше информации
// например, права доступа
ls -l
  

Создание файла:

  touch [имя-файла]
// пример
сенсорный index.html
// несколько файлов
коснитесь my-app / {index.html, css / style.css, js / script.js}
  

Содержимое файла:

  cat [имя-файла]
// пример
индекс кошки.html
// сортировка и выборка уникальных значений
кот [имя-файла] | сортировать | uniq
// меньше контента
less [имя-файла] // q - выход
// n строк с начала файла
head -50 [имя-файла]
// n строк с конца файла
хвост -50 [имя-файла]
// поиск слова
grep [строка] [имя-файла]

// распаковка и просмотр содержимого архива
распаковать [имя архива]

// тип файла
файл [имя-файла]
  

Копирование, удаление и файла:

  // копия
cp [файл1] [файл2]

// переехать
mv [файл1] [файл2]
// пример
// перемещение всех файлов из одной директории в другую
mv [dir1] / *.* [dir2]

// Удалить
rm [имя-файла]
// удаление пустой директории
rmdir [имя-каталога]
// удаление непустой директории
rm -r [имя-каталога]
// или
rm -rf [имя-каталога]
  

Вывод в терминал строки:

  echo [строка]
// пример
эхо привет
// создание или перезапись файла
эхо привет> greet.txt
// добавление строки в файл
эхо привет >> greet.txt
  

Загрузка файла:

  wget [url]
  

Коннекторы:

  true && echo hello
ложь || эхо привет
эхо привет; ls
  

Конвейер:

  // количество переносов строки - \ n
кот [файл] | wc -l
  

гит

git представляет собой распределенную систему контроля версий, позволяющую контролировать процесс внесения изменений в проект.

Книга Pro Git.

Скринкаст Ильи Кантора.

Быстрый старт: Git How To.

Установка: git-scm.com.

Проверка установки:

  git --version
  

Справка:

  git help
git help [имя-команды]
git [имя-команды] --help | -час
  

Минимальные настройки:

  // --local - настройки для текущего репо
// --global - настройки для текущего пользователя
// --система - настройки для всей системы, т.е. для всех пользователей
git config --global user.name «Мое имя»
git config --global user.email "[email protected]"
  

Дополнительные настройки:

  // список глобальных настроек
git config --list | -l --global

// редактирование глобальных настроек
git config --global --edit | -e
  

Создание репозитория:

  git init
  

Очистка репозитория:

  // -d - включая директории, -x - включая игнорируемые файлы, -f - принудительная
git clean | -dxf
  

Удаление файлов и директорий:

  // удалить
git rm [имя-файла]
git rm -r [имя-каталога]

git rm --force | -f
  

Перемещение файлов:

  // git add + git remove
// переехать
git mv [старый файл] [новый файл]
  

Просмотр состояния репозитория:

  git status
  

Добавление изменений:

  git add [имя-файла]

git add --force | -f

// все файлы
git add.| --все | -А

// для добавления пустой директории можно создать пустой файл .gitkeep
  

Добавление сообщений (коммита):

  // редактирование коммита
git commit

// коммит для одного изменения, если не выполнялось git add. | -А
// если выполнялось, сообщение будет добавлено для всех изменений
git commit --message | -m "Мое сообщение"

// для всех изменений, если git add [имя-файла] выполнялось несколько раз
git commit --all | -a -m | -am "Мое сообщение"

// исправление коммита
git commit --amend "Мое сообщение" | --нет-редактировать
  

Просмотр коммита:

  // последний коммит
мерзавец шоу

// другой коммит
git show [hash] // минимум первых 4 символов

// поиск изменений по сообщению или части сообщения
git show: / [строка]

// поиск коммита по тегу
git show [имя-тега]
  

Просмотр разницы между коммитами:

  git diff HEAD | @ // HEAD - как правило, текущая ветка; @ - алиас для HEAD

// постановка
git diff --staged | --cached

git diff [hash2] [hash3]

// разница между ветками
git diff [ветка2]... [ветка3]

// просмотр разницы между коммитами при редактировании сообщения
git commit --verbose | -v

// кастомизация выводимого сообщения
git diff --word-diff | --цвет-слова
  

Просмотр истории изменений:

  git log

// n - количество изменений
git log -n
// --since, --after - после
// - до, - до - до

// разница
git log -p

// быстрое форматирование
git log --graph --oneline --stat

// кастомное форматирование
git log --pretty = format
// пример
git log --pretty = format: '% C (красный)% h% C (зеленый)% cd% C (сброс) | % C (синий)% s% d% C (желтый) [% an] '--date = short | локальный формат: '% F% R'

// поиск изменений по слову, файлу, ветке; i - без учета регистра
git log --grep | -G [строка] | [файл] | [ветка] & -i

// поиск по нескольким строкам
git log --grep [строка1] --grep [строка2] --all-match

// поиск в определенном блоке файла
git log -L '/  /', '/ <\ / head> /': index.html

// поиск по автору
git log --author = [имя]
  

Отмена изменений:

  git reset
// --hard - включая рабочую директорию и индекс
// --soft - без рабочей директории и индекс
// - смешанный - по умолчанию: без рабочей директории, но с индексом

git reset --hard [хеш] | @ ~ // @ ~ - последний коммит в HEAD

// аналогично
git reset --hard ORIG_HEAD

// не путать с переключением ветки
git checkout

git восстановить
  

Работа с ветками:

  // список веток
ветка git

// создание ветки
git branch [имя-ветки]

// переключение на ветку
git checkout [название-ветки]

// ветка + касса
git checkout -b [название-ветки]

// переименование
git branch -m [старая ветка] [новая ветка]

// удаление ветки
git branch -d [имя-ветки]

// слияние веток
git merge [название-ветки]
  

Разрешение конфликтов при слиянии:

  // обычно, при возникновении конфликта, открывается редактор

// принять изменения из сливаемой ветки
git checkout - часы

// принять изменение из текущей ветки
git checkout --theirs

// отмена слияния
git reset --merge
git merge --abort

// получение дополнительной информации
git checkout --conflict = diff3 --merge [имя-файла]

// продолжить слияние
git merge - продолжить
  

Удаленный репозиторий:

  // клонирование
git clone [URL] и [каталог]

// просмотр
git удаленный
git удаленное шоу
git удаленное добавление [короткое имя] [URL]
git удаленное переименование [старое имя] [новое имя]

// получение изменений
// git fetch + git merge
git pull

// отправка изменений
git push
  

Теги:

  // просмотр
git tag

// легковесная метка
git tag [имя-тега]
// пример
git tag v1-beta

// аннотированная метка
git tag -a v1 -m "Моя версия 1"

// удаление
git tag -d [имя тега]
  

Отладка

  git bisect

мерзавец виноват

git grep
  

Сохранение незакоммиченных изменений:

  // Сохранение
git stash

// извлечение
git stash pop
  

Копирование коммита:

  git cherry-pick | -x [хеш]

// если возник конфликт
// отмена
git cherry-pick --abort

// продолжить
git cherry-pick - продолжить

git cherry-pick --no-commit | -n

// --cherry = --cherry-mark --left-right --no-merges
git log --oneline --cherry [ветка2] [ветка3]
  

Перебазирование:

  git rebase [ветка]

// при возникновении конфликта
// отмена
git rebase --abort

// пропустить
git rebase - пропустить

// продолжить
git rebase - продолжить

// предпочтение коммитов слияния
git rebase --preserve-merges | -п

// интерактивное перебазирование
git rebase -i [ветка]
  

Автозавершение повторных конфликтов:

  // повторно - повторно использовать разрешение записывающего устройства
// повторно.включен правда | ложный
// rerere.autoUpdate true | ложный
// rerere-train.sh - скрипт для обучения rerere
git rerere забудьте [имя-файла]
  

Обратные коммиты:

  git revert @ | [хеш]

// отмена слияния
// git reset --hard @ ~ не сработает
git revert [хэш] -m 1

// git merge [ветка] не сработает
// отмена отмены
git revert [хеш]

// повторное влияние с rebase
git rebase [ветка2] [ветка3] | --onto [ветка2] [хеш] [ветка3]

git merge [ветка]

git rebase [хеш] --no-ff
  

Пример алиасов (сокращений) для.gitconfig:

  [псевдоним]
    aa = добавить -A
    co = оформление заказа
    ci = совершить -m
    st = статус
    br = филиал
  

Пример .gitconfig:

  [пользователь]
name = [Мое имя]
электронная почта = [[email protected]]
имя пользователя = [myusername]
[core]
редактор = [myeditor]
пробел = исправить, -indent-with-non-tab, trailing-space, cr-at-eol
пейджер = дельта
[Интернет]
браузер = google-chrome
[instaweb]
httpd = apache2 -f
[rerere]
включен = 1
autoupdate = 1
[От себя]
по умолчанию = соответствие
[цвет]
ui = авто
[цветная «ветка»]
текущий = желтый полужирный
local = зеленый жирный
remote = голубой жирный
[цвет «разница»]
мета = желтый полужирный
frag = жирный пурпурный
old = красный жирный
new = зеленый жирный
пробел = красный реверс
[цвет «статус»]
добавлено = зеленый жирный
изменено = желтый полужирный
untracked = жирный красный
[difftool]
подсказка = ложь
[дельта]
features = украшения номеров строк
номера строк = истина
[дельта "украшения"]
минус-стиль = красный жирный шрифт нормальный
plus-style = зеленый жирный нормальный
minus-emph-style = белый жирный красный
minus-non-emph-style = красный жирный шрифт нормальный
plus-emph-style = белый жирный зеленый
plus-non-emph-style = зеленый полужирный нормальный
file-style = желтый полужирный нет
file-decoration-style = желтая коробка
hunk-header-style = пурпурный жирный
hunk-header-decoration-style = пурпурный прямоугольник
minus-empty-line-marker-style = нормальный нормальный
plus-empty-line-marker-style = нормальный нормальный
line-numbers-right-format = "{np: ^ 4} │"
[github]
user = [имя пользователя]
token = токен
[gitflow "префикс"]
versiontag = v
[последовательность]
редактор = интерактивный инструмент перебазирования
[псевдоним]
а = добавить - все
ai = добавить -i
###
ap = применить
как = применить --stat
ac = apply --check
###
ama = am --abort
amr = am --resolved
ams = am --skip
###
b = ветка
ba = ветка -a
bd = ветка -d
bdd = ветка -D
br = ветка -r
bc = rev-parse --abbrev-ref ГОЛОВКА
bu =! git rev-parse --abbrev-ref --symbolic-full-name "@ {u}"
бс =! git-ветка-статус
###
c = совершить
ca = commit -a
cm = совершить -m
cam = commit -am
cem = commit --allow-empty -m
cd = commit --amend
cad = commit -a --amend
ced = совершить --allow-empty --amend
###
cl = clone
cld = clone --depth 1
clg =! sh -c 'git clone git: // github.com / $ 1 $ (базовое имя $ 1) '-
clgp =! sh -c 'git clone [email protected]: $ 1 $ (базовое имя $ 1)' -
clgu =! sh -c 'git clone [email protected]: $ (git config --get user.username) / $ 1 $ 1' -
###
cp = выбор вишни
cpa = выбор вишни --abort
cpc = выбор вишни - продолжить
###
d = diff
dp = diff --patience
dc = diff --cached
dk = diff --check
dck = diff --cached --check
dt = difftool
dct = difftool --cached
###
f = получить
fo = получить источник
fu = получить восходящий поток
###
fp = формат-патч
###
fk = fsck
###
g = grep -p
###
l = журнал --oneline
lg = log --oneline --graph --decorate
###
ls = ls-файлы
lsf =! git ls-files | grep -i
###
m = объединить
ma = слияние --abort
mc = merge - продолжить
мс = слияние - пропустить
###
o = оформить заказ
om = кассир
ob = checkout -b
opr =! sh -c 'git fo pull / $ 1 / head: pr- $ 1 && git o pr- $ 1'
###
пр = обрезать -v
###
ps = push
psf = push -f
psu = push -u
pst = push --tags
###
pso = push origin
psao = push - все происхождение
psfo = push -f origin
psuo = push -u origin
###
psom = push origin master
psaom = push - мастер всех источников
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 = тянуть
pb = pull --rebase
###
plo = исходная точка
pbo = pull --rebase origin
plom = ведущий источник происхождения
ploc =! git pull origin $ (git bc)
pbom = pull --rebase origin master
pboc =! git pull --rebase origin $ (git bc)
###
plu = тянуть вверх
plum = потяните ведущего вверх по течению
pluc =! git pull upstream $ (git bc)
pbum = pull --rebase ведущий ведущий сервер
pbuc =! git pull --rebase upstream $ (git bc)
###
rb = перебазировать
rba = rebase --abort
rbc = rebase - продолжить
rbi = rebase --interactive
rbs = rebase --skip
###
re = сбросить
rh = сбросить HEAD
reh = reset --hard
rem = reset - смешанный
res = сброс - soft
rehh = reset --hard HEAD
remh = reset - смешанная ГОЛОВКА
resh = reset - soft HEAD
rehom = reset --hard origin / master
###
r = удаленный
ra = удаленное добавление
rr = удаленный rm
rv = удаленный -v
rn = удаленное переименование
rp = удаленная обрезка
rs = удаленное шоу
rao = удаленное добавление источника
rau = удаленное добавление вверх по течению
rro = удаленное удаление источника
rru = удаленное удаление восходящего потока
rso = источник удаленного шоу
rsu = удаленное шоу вверх по течению
rpo = удаленный источник обрезки
rpu = удаленная обрезка восходящего потока
###
rmf = rm -f
rmrf = rm -r -f
###
s = статус
sb = статус -s -b
###
sa = stash применить
sc = тайник очистить
sd = падение тайника
sl = список тайников
sp = stash pop
ss = тайник сохранить
ssk = stash save -k
sw = тайник шоу
st =! git список тайников | wc -l 2> / dev / null | grep -oEi '[0-9] [0-9] *'
###
t = тег
td = тег -d
###
w = показать
wp = показать -p
wr = показать -p --no-color
###
svnr = svn rebase
svnd = svn dcommit
svnl = svn log --oneline --show-commit
###
subadd =! sh -c 'git submodule add git: // github.h | вырезать -c 3-
unassumeall =! git предполагается | xargs git unassume
acceptall =! git status -s | awk {'print $ 2'} | xargs git предположить
###
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 псевдоним | вырезать -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 = \ "формат:% an <% ae> \"' -
serve = daemon --reuseaddr --verbose --base-path =. --export-all ./.git
###
за =! git rev-list --left-only --count $ (git bu) ... ГОЛОВА
вперед =! git rev-list --right-only --count $ (git bu) ... HEAD
###
ours = "! f () {git checkout --ours $ @ && git add $ @;}; f"
их = "! 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 / *
[фильтр "lfs"]
clean = git-lfs clean -% f
smudge = git-lfs smudge -% f
процесс = git-lfs фильтр-процесс
required = true
  

Пример.gitignore:

  ### Узел ###

# Журналы
журналы
npm-debug.log *
пряжа-debug.log *
пряжа-error.log *

# Необязательный каталог кеша npm
.npm

# Каталоги зависимостей
/ node_modules
/ jspm_packages
/ bower_components

# Файл целостности пряжи
.yarn-целостность

# Необязательный кеш eslint
.eslintcache

# файл (ы) переменных окружения dotenv
.env
.env. *

# Постройка создана
dist /
build /

# Бессерверные сгенерированные файлы
.serverless /

### SublimeText ###
# кеш-файлы для возвышенного текста
* .tmlanguage.тайник
* .tmPreferences.cache
* .stTheme.cache

# файла рабочей области предназначены для конкретного пользователя
* .sublime-workspace

# файлы проекта должны быть возвращены в репозиторий, за исключением значительных
# часть участников, вероятно, не будет использовать SublimeText
# * .sublime-project


### VisualStudioCode ###
.vscode / *
! .vscode / settings.json
! .vscode / tasks.json
! .vscode / launch.json
! .vscode / extensions.json

### Vim ###
*.поменять местами]

### WebStorm / IntelliJ ###
/.idea
modules.xml
* .ipr
* .iml


### Системные файлы ###
* .DS_Store

# Файлы кэша эскизов Windows
Большие пальцы.db
ehthumbs.db
ehthumbs_vista.db

# Файл конфигурации папки
Desktop.ini

# Корзина, используемая в общих файловых ресурсах
$ RECYCLE.BIN /

# Миниатюры
._ *

# Файлы, которые могут появиться в корне тома
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
. Мусор
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
  

н / мин

npm представляет собой пакетный менеджер, позволяющий устанавливать зависимость проекта.

Официальный сайт: npmjs.com.

Установка.

npm устанавливается вместе с Node.js.

Также вместе с Node.js устанавливается npx, позволяющий запускать исполняемые файлы без установки: npx create-react-app my-app.

Проверка установки:

  узел - версия | -v
npm --version | -v
  

Обновление:

  npm i -g npm @ latest
  

Список доступных команд:

  npm help
npm help [имя-команды]
  

Инициализация проекта:

  npm init

// авто
npm init --yes | -у
  

Установка зависимостей

  npm install | я

// проверка конкретной зависимости
npm исследовать [название-пакета]

// проверка всех зависимостей
нпм доктор

// очистка
npm ci
  

Принудительная переустановка зависимостей:

  npm i --force | -f
  

Установка только продакшн-пакетов:

  npm i --only = production | --only = prod
  

Добавление зависимости:

  npm i [имя-пакета]
npm я [название-пакета @ версия]

// пример
npm я выражаю
  

Добавление зависимости для разработки:

  npm i --save-dev | -D [имя-пакета]

// пример
npm i -D nodemon
  

Обновление зависимости:

  npm update | вверх [название-пакета]
  

Удаление зависимости:

  // зависимость
npm удалить | rm | г [название-пакета]

// devDependency
npm r -D [имя-пакета]
  

Глобальная установка / обновление / пакет:

  npm i / up / r -g [package-name]

// пример
npm я -g создать-реагировать-приложение
// использование
создать приложение реагировать мое приложение
  

Определение устаревших пакетов:

  npm устарело
npm устаревший [название-пакета]
  

Список зависимостей:

  список npm | ls

// верхний уровень
npm ls --depth = 0 | - глубина 0

// глобальный + верхний уровень
npm ls -g --depth 0
  

Информация о пакете:

  npm просмотр | v [имя-пакета]

// пример
npm v реагировать
npm v реагировать.описание
  

Запуск скрипта / выполнение команды:

  npm run [скрипт]

// пример
// package.json: "scripts": {"dev": "nodemon server.js"}
npm запустить dev
// запуск скрипта или узел server.js
npm start
npm stop
  

Удаление дублирующихся пакетов:

  npm dedupe | ddp
  

Удаление посторонних пакетов:

  npm prune
  

Обнаружение уязвимостей (угроза безопасности):

  npm audit
// json
npm audit --json
// простой текст
npm audit --parseable
  

Автоматическое исправление уязвимостей:

  npm audit fix
  

пряжа

yarn, как и npm, представляет собой пакетный менеджер, позволяющий устанавливать зависимость проекта.

Официальный сайт: yarnpkg.com.

Установка:

  npm i -g yarn
  

Команда «yarn dlx» позволяет запускать исполняемые файлы без установки: yarn dlx create-react-app my-app. Для этого yarn необходимо обновить до второй версии: yarn set version berry.

Проверка установки:

  пряжа - версия | -v
  

Обновление:

  последняя версия набора пряжи
  

Список доступных команд:

  yarn help
yarn help [имя-команды]
  

Инициализация проекта:

  пряжа инициализация

// авто
пряжа init --yes | -у

// "частный": true в пакете.json
пряжа init --private | -п

// авто + частный
пряжа init -yp
  

Установка зависимостей:

  пряжа
// или
пряжа установить

// тихая установка
установка пряжи - тихая | -s

// проверка
пряжа --check-files
  

Принудительная переустановка зависимостей:

  yarn install --force
  

Установка только продакшн-пакетов:

  Установка пряжи --производство | --prod
  

Добавление зависимости:

  yarn add [package-name]
пряжа добавить [название-пакета @ версия]

// пример
пряжа добавить экспресс

// тихая установка
пряжа добавить - тихий
// или
пряжа
  

Добавление зависимости для разработки:

  yarn add --dev | -D [имя-пакета]

// пример
пряжа добавить -D nodemon
  

Обновление зависимости:

  обновление пряжи [package-name]
  

Удаление зависимости:

  yarn remove [package-name]
  

Глобальная установка / обновление / пакет:

  yarn global add / upgrade / remove [package-name]

// пример
пряжа глобальный добавить приложение-реакция
// использование
создать приложение реагировать мое приложение
  

Список зависимостей:

  список пряжи

// верхний уровень
список пряжи --depth = 0 | - глубина 0
  

Информация о пакете:

  информация о пряжи [package-name]
// или
пряжа почему [название-пакета]

// пример
информация о пряжи реагирует
информация о пряже реагировать описание
пряжа почему webpack
  

Запуск скрипта / выполнение команды:

  yarn [скрипт]
// или
пряжа запустить [сценарий]

// пример
// пакет.json: "scripts": {"dev": "nodemon server.js"}
пряжа dev
  

package.json

  {
  "имя": "мое приложение",
  "версия": "1.0.0",
  "description": "Мое классное приложение",
  "ключевые слова": [
    "удивительный",
    "здорово",
    "Лучший"
  ],
  "частный": правда,
  "main": "server.js",
  «лицензия»: «MIT»,
  "домашняя страница": "https://my-website.com",
  "репозиторий": {
    "тип": "мерзавец",
    "url": "https://github.com/user/repo.git"
  },
  "репозиторий": "github: пользователь / репо",
  "author": {
    "name": "Мое имя",
    "email": "myemail @ example.2.0.4 "
  },
  "scripts": {
    "start": "запуск сценариев реакции",
    "dev": "nodemon server.js"
  }
}
  

  • наименование — название проекта
  • версия — версия проекта (см. Версионирование)
  • описание — описание проекта (зачем нужен пакет?)
  • ключевых слов — ключевые слова (облегчает поиск в реестре npm)
  • private — установка значений в true предотвращает случайную публикацию пакета в реестре npm
  • главная — основная точка входа для функционирования проекта
  • Репозиторий

  • — ссылка на репозиторий (один из вариантов)
  • автор — автор проекта (один из вариантов)
  • участников — участники проекта (люди, внесшие вклад в проект)
  • зависимостей — зависимости проекта (пакеты, без которых не будет работать)
  • devDependencies — зависимости для разработки (пакеты, без которых приложение будет работать)
  • скриптов — команды (выполняемые сценарии, задачи), предназначенные для автоматизации, например, команда «yarn dev» запустит скрипт «сервер nodemon.js »

Полный список доступных полей файла «package.json»: npm-package.json

Файлы «package-lock.json» и «yarn.lock» содержат более полную информацию об пакетах, чем package.json, например, авторитетные версии пакетов вместо диапазона допустимых версий.

Версионирование

Каждый пакет имеет версию, состоящую из трех цифр (например, 1.0.0), где первая цифра — мажорная версия (основная), вторая — минорная версия (второстепенная), третья — патчевая версия (патч, патч).Выпуск новой версии называется релизом.

Увеличение каждой из этих цифр согласно правилам семантического версионирования (semver) означает следующее:

  • major — внесение несовместимых с предыдущей версионией изменений
  • minor — новая функциональность, совместимая с предыдущей версией
  • patch — исправление ошибок, незначительные улучшения

Диапазоны версий или допустимые релизы стратегии с помощью следующих операторов (компараторов):

  • * — любая версия (аналогично пустой строке)
  • <1.1.0.0 - минорные и патчевые релизы (> = 1.0.0 <2.0.0)
  • ~ .1.0.0 — только патчевые релизы (> = 1.0.0 <1.1.0)

Подробные сведения о семвер: узел-семвер.

Благодарю за внимание.

.

Git — книга

2-е издание (2014)

Загрузить электронную книгу

Вся книга Pro Git, написанная Скоттом Чаконом и Беном Штраубом и опубликованная Apress, доступна здесь. Все содержимое находится под лицензией Creative Commons Attribution Non Commercial Share Alike 3.0. Печатные версии книги доступны на Amazon.com.>

    1. 1.1
      О системе контроля версий
    2. 1.2
      Краткая история Git
    3. 1.3
      Основы Git
    4. 1.4
      Командная строка
    5. 1.5
      Установка Git
    6. 1.6
      Первоначальная настройка Git
    7. 1.7
      Как получить помощь?
    8. 1,8
      Заключение
    1. 2.1
      Создание Git-репозитория
    2. 2.2
      Запись изменений в репозиторий
    3. 2.3
      Просмотр истории коммитов
    4. 2.4
      Операции отмены
    5. 2,5
      Работа с удалёнными репозиториями
    6. 2,6
      Работа с метками
    7. 2,7
      Псевдонимы в Git
    8. 2,8
      Заключение
    1. 3.1
      О ветвлении в двух словах
    2. 3.2

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *