GIT

Общее

С системами контроля версий должен уметь работать любой программист, даже если вы только учитесь

Это помогает избежать косяков при внесении изменений. Помогает при командной работе.

Git - это распределенная система контроля версий. Это значит что можно вернуться к любой сохраненной версии в любой момент времени. Кажется, что такой подход популярен только среди программистов, но им пользуются и другие, кому нужен контроль над изменениями в работе.

Особенность git'a - распределенность. Возможность использования одной системы контроля на проектом множеством разработчиков.

Идея

Допустим мы находимся на мастер-ветке и хотим дописать функционал, основываясь на коде из этой ветки.

Для это нам нужно всего лишь написать команду для создания новой ветки и провести всю работу там.

Когда работа будет закончена, ветку нужно слить обратно в мастер.

Настройка

r

git config --global user.name "My Name"git config --global user.email myEmail@example.com

a

email должен совпадать с тем, что на github

Если нужно, чтобы файл не попадал в GIT

для этого есть спец. файл .gitignore

Вносим в него названия файлов

* с git предпочтительней работать через терминал

"Но не обязательно. В IDE есть все, что для этого нужно. Работай там, где удобно". Немчинский. "Все, что не задевает других людей, это полная вкусовщина. Все, что задевает, там промышленные стандарты"

Как конкретно ты попадаешь на сервер гид, как ты заливаешь код, всем до одного места. А кот когда в коде проблемы, вот тут нужно быть внимательным. Тут начинают работать стандарты.

Это и оформление кода. И то, что заливаем а что не заливаем. В какие ветки заливаем. Делаем все так, как договорено. И соблюдать все стандарты. (это внутрикомандные стандарты)

git init

создает репозиторий. Включает приложение в этой папке

создается скрытая папка .git, в которой хранится история репозитория и настройки.

git status

Используется регулярно. Показывает отслеживает ли файл

git add

Чтобы начать отслеживать файл

git add filename.txt

git add . (чтобы добавить все файлы)

git add -A (чтобы добавить все, что находится в директории)

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

после add файл будет готов к коммиту

git commit

Чтобы закоммитить изменения в репозиторий, пишем

git commit -m "какой-то ясный, понятный комментарий"

git checkout -b new_feature

создаем новую ветку с именем new_feature

git checkout

исп. для переключения между ветками и возвратов

git checkout master

перейти на ветку мастер

git checkout 09bd8cc1 hello.txt

Возврат файла к предыдущему состоянию

git merge branch_name

слить ветку branch_name с мастер

git diff

Чтобы увидеть разницу между 2 коммитами

git rm

git clean

git difftool

запускает графический клиент для сравнения, сопоставления всех коммитов

git reset

git mv

Windows terminal

mkdir

создать папку

r

mkdir Desktop/git_exercise/

dir

просмотреть содержимое

clear

очистить консоль

жми Tab для автокомплита

cd ..

выйти из папки

git clone ссылка на репозиторий гитхаб

создать локальный репозиторий из github, который уже будет с git init

esc > :wq

выйти из дурацкого окна vim(vi)

git rm --cached (имя файла)

перестать следить за файлом

git show (commit)

Посмотреть что нового появилось в коммите

commit —amend

Если опечатался в коммите, забыл добавить файл или еще что-то. Добавить все из последнего коммита в область подготовленных файлов и попытается сделать новый коммит

revert

для отката более сложных изменений, в отличии от -amend.

Самый последний коммит может быть доступен по алиасу HEAD

При отмене старых коммитов, нужно быть готовым к тому, что возникнут конфликты.

.gitignore

1. создаем файл вручную

2. прописываем внутри все, что не хотим видеть (или как-то коммитить). Каждый с новой строки

3. Файл .gitignore должен быть добавлен, закоммичен и отправлен на сервер, как и любой другой файл в проекте

Вот, хорошие примеры, которые нужно игнорировать

r

*.logbuild/node_modules/.idea/my_notes.txtСимвол слэша в конце некоторых линий означает директорию (и тот факт, что мы рекурсивно игнорируем все ее содержимое). Звездочка, как обычно, означает шаблон.

Логи

Артефакты сборки системы

папки node_modules в проекте node.js

Папки, созданные IDE, например Netbeans или InteliJ

Разнообразные заметки разработчика