Основы Git

Содержание
Типичные команды пользователя
config: Задать имя пользователя Git
init: Инициализация репозитория Git
status: Текущее состояние репозитория
add: Добавить файл в staging area
reset: Удалить файл из staging area
restore: Удалить незаписанные изменения
commit: Записать изменения
checkout -- . : Восстановить последний коммит
chechout .: Восстановить удалённый файл
diff: Изучить изменения
файл .gitignore: игнорировать определённые файлы
git hash-object
Другие статьи про Git

Кратко

Проверяем обстановку

git status

Добавляем файл который хотим закоммитить

git add index.html

Убираем файл который не хотим сейчас коммитить

git reset file.txt

Коммитим с комментарием

git commit -m 'Лучшие самоучители на сайте www.devhops.ru'

Стэйджим и коммитим с комментарием одной командой

git commit -am 'Наш любимый сайт www.HeiHei.ru'

Пушим на сервер в мастер

git push origin master

Пользователь

Задать имя активного пользовотеля

$ git config --global user.name "Andrei"

Проверить имя активного пользовотеля

$ git config user.name

Andrei

Задать email активного пользовотеля

$ git config --global user.email "www.aolegovich.ru@devhops.ru"

init

Начать отслеживать изменения - инициализаци или начало работы Git

$ git init

Initialized empty Git repository in C:/Users/aolegovich/Desktop/Sites/hello-world/.git/

По умолчанию репозиторий хранится в подкаталоге с названием «.git» в корневом каталоге рабочей копии дерева файлов, хранящегося в репозитории.

Любое файловое дерево в системе можно превратить в репозиторий git, отдав команду создания репозитория из корневого каталога этого дерева (или указав корневой каталог в параметрах программы)

Важно понимать, что инициализировать репозиторий нужно в директории с проектом.

На одном копьютере могут быть десятки проектов и каждый из них может иметь свой репозиторий, который, в свою очередь может быть подлючён к github, gilab или куда-то ещё.

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

Можно настроить ваш терминал bash или zsh так, чтобы он показывал вам с каким именно репозиторием вы работаете и какая ветка активна.

Создать файл

$ touch index.html

status

Посмотреть свежие изменения в репозитории

$ git status

Если интересует только текущая директория

git status .

On branch master

No commits yet

Untracked files:
   (use "git add <file>..." to include in what will be committed)

        index.html

nothing added to commit but untracked files present (use "git add" to track)

Файл, в котором произошли изменения выделен красным

add

Добавить файл в группу файлов, которые Вы планируете зафиксировать (staging area)

$ git add index.html

Если файлов много и Вы хотите добавить все используйте

git add -A

Добавить все файлы из текущей директории

git add .

Посмотреть свежие изменения в репозитории

git status

On branch master

No commits yet

Changes to be committed:
   (use "git rm --cached <file>..." to unstage)

        new file: index.html

Файл, который был добавлен в staging area выделен зелёным

Удалить файл из staging area

Если вы добавили что-то лишнее

$ git reset имя_файла

restore: удалить незаписанные изменения

Если файл добавлен в staging area, и при этом все незаписанные изменения нужно отменить подойдёт команда restore

$ git restore имя_файла

Пример

touch test.txt git add test.txt echo "abc" >> test.txt cat test.txt

abc

git restore test.txt
cat test.txt

Файл вернулся в исходное состояние - стал пустым.

commit

Зафиксировать изменения - записать изменения файла в репозиторий.

$ git commit -m 'Мой первый коммит.'

[master (root-commit) e2d3195] My first commit.
1 file changed, 1 insertion(+)
create mode 100644 index.html

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

$ git checkout -- .

Восстановить удалённый файл, если он не закоммичен можно выполнив

$ git checkout .

clone

Клонировать другой репозиторий

$ git clone https://github.com/Project/Project.git

Cloning into 'welcome-to-git'...
remote: Enumerating objects: 9, done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 9
Unpacking objects: 100% (9/9), done.

Либо по SSH

$ git clone git@gitlab.com:Project/Project.git

Синтаксис выбирается в зависимости от типа авторизации: паролем, по ключу и т.д.

diff

Если вы внесли изменения можно изучить их командой

git diff

diff --git a/andrei/README.md b/andrei/README.md index de2ffa9..0741f41 100644 --- a/andrei/README.md +++ b/andrei/README.md @@ -69,4 +69,6 @@ Result Database Image Database +### Git Tutorial +[git-scm](https://git-scm.com/docs/gittutorial)

Если добавить эти изменения в staging area то увидеть их той же командой уже нельзя

git add -A
git diff

Нужно добавить флаг --cached

git diff --cached

diff --git a/andrei/README.md b/andrei/README.md index de2ffa9..0741f41 100644 --- a/andrei/README.md +++ b/andrei/README.md @@ -69,4 +69,6 @@ Result Database Image Database +### Git Tutorial +[git-scm](https://git-scm.com/docs/gittutorial)

.gitignore

Часто бывает нежелательным отслеживать все изменения до единого. Если Вы хотите сфокусироваться на основном коде, можно создать файл .gitignore и добавить туда расширения файлов, которые Вы не будете добавлять в репозиторий.

Пример файла .gitignore в котором мы указываету git не следить за ошибками, логами директорией .tmp и модулями nodejs

# Ignoring:
*.err
*.log
node_modules/
.tmp/

Подробнее про составление правил для .gitignore читайте в статье

«Синтаксис .gitignore»

git hash-object

$ echo "HeiHei.ru" | git hash-object --stdin

0bdb2c54a9617d62b661102a4862b417d7bdde9b

Похожие статьи
Git
Установка
Перейти с HTTPS на SSH
.gitignore
Необходимые Bash команды
Remote
GitHub
GitLab
Ошибки
Программирование
DevOps
SSH
Работа с API GitHub

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@eth1.ru если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящуюю по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: