Основы Git
Кратко
Проверяем обстановку
git status
Добавляем файл который хотим закоммитить
git add index.html
Убираем файл который не хотим сейчас коммитить
git reset file.txt
Коммитим с комментарием
git commit -m 'Лучшие самоучители на сайте www.andreyolegovich.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@andreyolegovich.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 .
Если нужно вернуться к какому-то коммиту и удалить всё, что появилось после
git log
commit b662b06badbbddf3b6a824ff2f360e2d4ae32734 (HEAD -> master)
Author: andrei
Находим нужный коммит. В данном примере он всего один - b662b06badbbddf3b6a824ff2f360e2d4ae32734
Делаем жёсткий ресет.
git reset --hard b662b06badbbddf3b6a824ff2f360e2d4ae32734
HEAD is now at b662b06 Adds all files created with new empty project
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
config
Для локальной настройки определённого репозитория используется файл config который находится в корне директории .git
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true ignorecase = true [remote "origin"] url = git@github.com:AndreiOlegovich/mkdocs-demo-project.git fetch = +refs/heads/*:refs/remotes/origin/* puttykeyfile = C:\Users\Andrei\.ssh\putty [branch "main"] remote = origin merge = refs/heads/main [branch "topic/dev2"] remote = origin merge = refs/heads/topic/dev2
Предположим у вас в общих настройках git выставлен пользователь user0
с почтой user0@urn.su
Первым делом нужно проверить эти значения
$ git config user.name
user0
$ git config user.email
user0@urn.su
git config --list
… user.name=user0 user.email=user0@urn.su …
Эти настройки находятся в секции user файла gitconfig
vi ~/.gitconfig
… [user] name = user0 email = user0@urn.su
Чтобы поменять их например на user1, можно скопировать эту секцию в файл config из директории .git и заменить значения на нужные
[user] name = user1 email = user1@urn.su [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true ignorecase = true [remote "origin"] url = git@github.com:AndreiOlegovich/mkdocs-demo-project.git fetch = +refs/heads/*:refs/remotes/origin/* puttykeyfile = C:\Users\Andrei\.ssh\putty [branch "main"] remote = origin merge = refs/heads/main [branch "topic/dev2"] remote = origin merge = refs/heads/topic/dev2
Git | |
Установка | |
Основы | |
branch: Ветки | |
Перейти с HTTPS на SSH | |
.gitignore | |
Необходимые Bash команды | |
Remote | |
GitHub | |
GitLab | |
Ошибки | |
Git Bash | |
Работа с API GitHub |