Git — это специальная программа, которая позволяет отслеживать любые изменения в файлах, хранить их версии и оперативно возвращаться в любое сохранённое состояние.
Git может быть локальным, централизованным или распределённым:
- Локальный установлен на одном компьютере и хранит файлы только в одном экземпляре в рамках настроенного окружения — подходит, если программист пишет код в одиночку.
- Централизованный находится на общем севере и хранит все файлы на нем.
- Распределённый хранит данные и в общем облачном хранилище, и в устройствах участников команды.
[Источник](https://practicum.yandex.ru/blog/chto-takoe-git-i-dlya-chego-nuzhen/ ""Яндекс Практикум") Для работы с Git понадобится консоль.
Для операционной системы Windows можно воспользоваться программой Bash.
Для операционно системы Linux воспользоваться строенной программой Terminal.
$ pwd$ ls$ ls -a$ ls -R$ ls ~$ cd$ cd ~$ cd ..$ mkdir$ mkdir -p dir1/dir-inside/dir-deeper-inside$ touch$ cp file.txt$ cp -r /path/to/source/directory/ /path/to/destination/directory/$ mv file.txt /path/to/directory/$ mv oldname.txt newname.txt$ cat file txt$ less file txt$ nano file txt$ vi file txtОткроет улучшенный (improved) сложный текстовый редактор с режимами ввода, командным режимом и другими функциями
$ vim file txt$ :w$ :q!$ rm$ rm -r$ rm -rf$ rmdir$ echo$ > создать файл или перезаписать текущий
$ >> добавить вывод в конец файла $ ps$ ps aux$ git init$ git add todo.txt$ git add --all$ git add .$ git add .$ git commit -m "Комментарий к коммиту."$ git commit --amend -m "Новое сообщение"
###### Исправить созданный коммит без изменения сообщения
```bash
$ git commit --amend --no-edit$ git restore --staged <file>$ git restore --staged .$ git restore <file>$ git reset --hard <commit hash>$ git status$ git status --ignored$ git blame$ git show$ git log$ git log --oneline$ git diff$ git diff --staged$ git fetchПолучение и слияние любых изменений из удаленного репозитория в текущую ветку локальной рабочей директории
$ git pull$ cat HEAD# игнорировать все файлы, которые заканчиваются на .jpeg
$ *.jpeg
# игнорировать все файлы "tmp" во всех подпапках папки docs
$ docs/*/tmp
# для macOS
$ .DS_Store
# знак вопроса заменяет любой символ
$ file?.txt
# игнорировать файлы file0.txt, file1.txt и file2.txt
# при этом не игнорировать file3.txt, file4.txt, ...
# в скобках можно либо перечислить символы ([abc])
# либо задать диапазон ([a-z])
$ file[0-2].txt
# игнорировать todo.txt в корне репозитория
$ /todo.txt
# для сравнения: spam.txt будет игнорироваться во всех папках
$ spam.txt
# игнорировать папку build
$ build/
# игнорировать файлы "docs/current/tmp", "docs/old/tmp",
# а также "docs/old/saved/a/b/c/d/tmp"
# и даже "docs/tmp", потому что ноль вложенных папок тоже подходит
$ docs/**/tmp
# игнорировать только "docs/current/tmp" и "docs/old/tmp"
# файл "docs/old/saved/a/b/c/d/tmp" не попадает в правило
$ docs/*/tmp
# игнорировать все JPEG-файлы
$ *.jpeg
# но только не мем с Doge
$ !doge.jpeg
Пример:
# игнорировать все файлы в каталоге build
$ build/
# игнорировать все .log файлы
$ *.log
# не игнорировать *.log файлы в examples
# потому что это пример для документации
$ !examples/**/*.log graph LR;
untracked -- "git add" --> staged+tracked;
modified -- "git add" --> staged+tracked;
staged+tracked -- "Изменения" --> modified;
staged+tracked -- "git commit" --> tracked/comitted;
tracked/comitted -- "Изменения" --> modified;
%% стрелка без текста для примера:
A --> B;
Когда компьютеры обмениваются данными в сети, они следуют сетевым протоколам (англ. network protocols) — правилам обмена данными между компьютерами.
Один из наиболее распространённых сетевых протоколов — SSH (от англ. Secure Shell Protocol). Он обеспечивает безопасный обмен данными в сети. С помощью этого протокола можно получать данные с удалённого компьютера или отправлять их на него. Трафик шифруется, поэтому протокол безопасен.
SSH использует пару ключей для обеспечения безопасности — публичный и приватный:
- Приватный ключ (англ. private key) хранится только на вашем компьютере и не должен передаваться кому-либо ещё. Он используется для расшифровки данных.
- Публичный ключ (англ. public key) доступен всем и используется для шифрования данных. Они могут быть расшифрованы парным приватным ключом.
Только вы можете расшифровать данные приватным ключом, но любой владелец публичного ключа может их для вас зашифровать. Эти два ключа связаны и образуют SSH-пару.
- Идем в домашнюю дирректорию.
$ cd ~- Проверяем наличие ssh ключа
$ ls -la .ssh/- Если что-то нашлось, удаляем файлы из директории.
- Генерируем ключ.
$ ssh-keygen -t ed25519 -C "электронная почта, к которой привязан ваш аккаунт на GitHub"или
$ ssh-keygen -t rsa -b 4096 -C "электронная почта, к которой привязан ваш аккаунт на GitHub"- Нажимаем Enter.
- Придумываем кодовую фразу вписываем её или нажимаем Enter.
- Дублируем кодовую фразу или нажимаем Enter.
- Проверяем ключи.
$ ls -a .ssh/- Если всё гуд: На экране должны появиться два файла — один с расширением .pub, другой — без. Файл в .pub — публичный, им можно делиться с веб-сайтами или коллегами. Файл без расширения .pub — приватный. Ни в коем случае не передавайте его никому!
- Если нет - страдаем!
- Копируем содержимое ssh
$ clip < ~/.ssh/id_rsa.pubили
$ clip < ~/.ssh/id_ed25519.pubили делаем это вручную через команду cat:
$ cat ~/.ssh/id_rsa.pubили
$ cat ~/.ssh/id_ed25519.pub- Идем в настроки GitHub в SSH and GPG keys, выбираем New SSH key, копирем в поле Key наш ключ из гита, нажимаем на кнопку Add SSH key.
- Проверяем правильность ключа.
$ ssh -T git@github.com- Идем на страницу удалённого репозитория, выберите тип SSH и скопируйте URL. Кнопка справа позволит сделать это мгновенно.
- Идем в консоль в каталог локального репозитория и вводим команду
$ git remote add origin %то что скопировали из гитхаба% - Проверяем связь.
$ git remote -v- Должно быть.
origin git@github.com:%ИМЯ_АККАУНТА%/%ИМЯ-ПРОЕКТА%.git (fetch)
origin git@github.com:%ИМЯ_АККАУНТА%/%ИМЯ-ПРОЕКТА%.git (push) - Первый раз.
$ git push -u origin main- Последующие разы.
$ git push$ git clone https://github.com/yandex-praktikum/git-clone-lesson #ссылку копируем из проекта гитхаба$ echo $JAVA_HOME$ where java$ java -version$ javac -encoding UTF-8 HelloJdk.java$ java -Dfile.encoding=UTF-8 HelloJdk$ CHCP 65001$ javac -d <имя папки> *.java$ javac -d bin -encoding UTF-8 *.java $ java -cp <имя папки, в которой лежат class-файлы> <название класса в котором лежит main)Файлы скомпилированы. Пора выполнить программу. Сделать это можно прямо из текущей директории. Добавьте к команде java опцию -cp <имя папки, в которой лежат class-файлы> (от англ. classpath — «путь к папке с class-файлами») и имя стартового класса. Обязательное требование к такому классу — внутри него должен быть метод main(). В проекте по учёту книг это класс Practicum.
$ jar cfe <имя jar-файла> <имя стартового класса> <список файлов> Каждый параметр из последовательности cfe имеет своё значение:
- c (от англ. create — «создавать») указывает на то, что создаётся новый файл;
- f (от англ. filename — «имя файла») предупреждает, что после него будет написано имя создаваемого jar-файла;
- e (от англ. entrypoint — «точка входа») указывает на название класса, с которого нужно начать выполнение программы.
$ jar cfe library.jar Practicum -C bin .
# Точка в конце строки указывает на то, что в JAR должны попасть
# все файлы из папки bin. $ java -jar <имя jar-файла>
#пример java -jar library.jar