Skip to content

ozlik/basic-git-guide

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 

Repository files navigation

Гайд по Git для новичков

Описание программы

Git — это специальная программа, которая позволяет отслеживать любые изменения в файлах, хранить их версии и оперативно возвращаться в любое сохранённое состояние.
Git может быть локальным, централизованным или распределённым:

  • Локальный установлен на одном компьютере и хранит файлы только в одном экземпляре в рамках настроенного окружения — подходит, если программист пишет код в одиночку.
  • Централизованный находится на общем севере и хранит все файлы на нем.
  • Распределённый хранит данные и в общем облачном хранилище, и в устройствах участников команды.
    [Источник](https://practicum.yandex.ru/blog/chto-takoe-git-i-dlya-chego-nuzhen/ ""Яндекс Практикум") Для работы с Git понадобится консоль.
    Для операционной системы Windows можно воспользоваться программой Bash.
    Для операционно системы Linux воспользоваться строенной программой Terminal.

Основные команды консоли

Показать текущую директорию (print working directory)
$ pwd
Вывести содержимое директории (list)
$ ls
Вывести содержимое директории, включая скрытые файлы
$ ls -a
Вывести содержимое директории, включая содержимое папок, находящихся в данной директории
$ ls -R
Вывести содержимое домашней директории
$ ls ~
Сменить директорию (change directory)
$ cd
Сменить директорию (перейти в домашнюю)
$ cd ~
Сменить директорию (на одну вверх)
$ cd ..
Создать директорию (make directory)
$ mkdir
Создать структуру директорий
$ mkdir -p dir1/dir-inside/dir-deeper-inside
Создать файл в текущей директории
$ touch
Копировать файл, папку (copy)
$ cp file.txt
Рекурсивно копирует содержимое каталога (copy)
$ cp -r /path/to/source/directory/ /path/to/destination/directory/
Переместить файл, папку (move) в указанный каталог
$ mv file.txt /path/to/directory/
Переместить файл с новым именем
$ mv oldname.txt newname.txt
Прочитать файл (concatenate and print)
$ cat file txt
Открыть файл с возможностью искать текст и просматривать содержимое в обе стороны
$ less file txt
Откроет простой текстовый редактор
$ nano file txt
Откроет сложный текстовый редактор с режимами ввода, командным режимом и другими функциями
$ vi file txt
Откроет улучшенный (improved) сложный текстовый редактор с режимами ввода, командным режимом и другими функциями
$ vim file txt
Выйти из редактора с сохранением
$ :w
Выйти из редактора без сохранения
$ :q!
Удалить файл (remove)
$ rm
Удалить директорию и все файлы/папки в ней (remove recursive)
$ rm -r
Удалить директорию и все файлы/папки в ней без вопросов (remove recursive force)
$ rm -rf
Удалить директорию (remove directory)
$ rmdir
Вывести на экран
$ echo
Удалить директорию (remove directory)
$ > создать файл или перезаписать текущий  
$ >> добавить вывод в конец файла  
Показать процессы, запущенные в текущем терминале
$ ps
Показать процессы, запущенные в текущем терминале с дополнительной информацией
$ ps aux

Основные команды для работы с git через консоль

Инициализация репозитория (не инициализируем один реп. в другом)
$ 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
Убрать лишний файл из staging (не должен быть закоммичен)
$ git restore --staged <file>
Убрать все файлы из staging
$ git restore --staged .
Убрать из коммита измененнный файл и сбросить изменения в файле
$ git restore <file>
Откатить коммит
$ git reset --hard <commit hash>
Просмотр состояния файлов
$ git status
Просмотр игнорируемых файлов
$ git status --ignored
Просмотр кто последним вносил изменения
$ git blame
Просмотр информации о любом git объекте
$ git show
Просмотр истории коммитов в текущей ветке
$ git log
Просмотр сокращенной истории коммитов в текущей ветке
$ git log --oneline
Сравнение изменений между коммитами, ветками, файлами (только в modified)
$ git diff
Сравнение изменений между коммитами, ветками, файлами
$ git diff --staged
Скачивание коммита, файла, ссылки из удаленного репозитория в локальные репозиторий
$ git fetch
Получение и слияние любых изменений из удаленного репозитория в текущую ветку локальной рабочей директории
$ git pull
Открыть файл, чтобы найти хэш последнего коммита
$ cat HEAD

Git Ignore

# игнорировать все файлы, которые заканчиваются на .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;  
Loading

Команды создания ssh

Что такое ssh?

Когда компьютеры обмениваются данными в сети, они следуют сетевым протоколам (англ. network protocols) — правилам обмена данными между компьютерами.
Один из наиболее распространённых сетевых протоколов — SSH (от англ. Secure Shell Protocol). Он обеспечивает безопасный обмен данными в сети. С помощью этого протокола можно получать данные с удалённого компьютера или отправлять их на него. Трафик шифруется, поэтому протокол безопасен.
SSH использует пару ключей для обеспечения безопасности — публичный и приватный:

  • Приватный ключ (англ. private key) хранится только на вашем компьютере и не должен передаваться кому-либо ещё. Он используется для расшифровки данных.
  • Публичный ключ (англ. public key) доступен всем и используется для шифрования данных. Они могут быть расшифрованы парным приватным ключом.
    Только вы можете расшифровать данные приватным ключом, но любой владелец публичного ключа может их для вас зашифровать. Эти два ключа связаны и образуют SSH-пару.

Порядок действий подключения ssh

  1. Идем в домашнюю дирректорию.
$ cd ~
  1. Проверяем наличие ssh ключа
$ ls -la .ssh/
  1. Если что-то нашлось, удаляем файлы из директории.
  2. Генерируем ключ.
$ ssh-keygen -t ed25519 -C "электронная почта, к которой привязан ваш аккаунт на GitHub"

или

$ ssh-keygen -t rsa -b 4096 -C "электронная почта, к которой привязан ваш аккаунт на GitHub"
  1. Нажимаем Enter.
  2. Придумываем кодовую фразу вписываем её или нажимаем Enter.
  3. Дублируем кодовую фразу или нажимаем Enter.
  4. Проверяем ключи.
$ ls -a .ssh/
  1. Если всё гуд: На экране должны появиться два файла — один с расширением .pub, другой — без. Файл в .pub — публичный, им можно делиться с веб-сайтами или коллегами. Файл без расширения .pub — приватный. Ни в коем случае не передавайте его никому!
  2. Если нет - страдаем!
  3. Копируем содержимое ssh
$ clip < ~/.ssh/id_rsa.pub

или

$ clip < ~/.ssh/id_ed25519.pub

или делаем это вручную через команду cat:

$ cat ~/.ssh/id_rsa.pub

или

$ cat ~/.ssh/id_ed25519.pub
  1. Идем в настроки GitHub в SSH and GPG keys, выбираем New SSH key, копирем в поле Key наш ключ из гита, нажимаем на кнопку Add SSH key.
  2. Проверяем правильность ключа.
$ ssh -T git@github.com

Подключение к GitHub

  1. Идем на страницу удалённого репозитория, выберите тип SSH и скопируйте URL. Кнопка справа позволит сделать это мгновенно.
  2. Идем в консоль в каталог локального репозитория и вводим команду
$ git remote add origin %то что скопировали из гитхаба% 
  1. Проверяем связь.
$ git remote -v
  1. Должно быть.
origin    git@github.com:%ИМЯ_АККАУНТА%/%ИМЯ-ПРОЕКТА%.git (fetch)
origin    git@github.com:%ИМЯ_АККАУНТА%/%ИМЯ-ПРОЕКТА%.git (push) 

Запушивание коммитов в GitHub

  1. Первый раз.
$ git push -u origin main
  1. Последующие разы.
$ git push

Создание клонов GitHub

$ git clone https://github.com/yandex-praktikum/git-clone-lesson #ссылку копируем из проекта гитхаба

Настройка JDK

Проверка установленного JDK
$ echo $JAVA_HOME
$ where java
Проверка версии Java
$ java -version

Компиляция кода (из папки, где лежит файл с кодом)

Создаём файл с байт-кодом
$ javac -encoding UTF-8 HelloJdk.java
Запускаем файл с байт-кодом
$ java -Dfile.encoding=UTF-8 HelloJdk
Смена кодировки на юникод (UTF-8)
$ CHCP 65001
Собирает классы в одном месте
$ javac -d <имя папки> *.java
Компилирует собранные файлы в папку (см. команду выше)
$ javac -d bin -encoding UTF-8 *.java 
Запускает весь код
$ java -cp <имя папки, в которой лежат class-файлы> <название класса в котором лежит main)

Файлы скомпилированы. Пора выполнить программу. Сделать это можно прямо из текущей директории. Добавьте к команде java опцию -cp <имя папки, в которой лежат class-файлы> (от англ. classpath — «путь к папке с class-файлами») и имя стартового класса. Обязательное требование к такому классу — внутри него должен быть метод main(). В проекте по учёту книг это класс Practicum.

Работа с JAR

Создание
$ jar cfe <имя jar-файла> <имя стартового класса> <список файлов> 

Каждый параметр из последовательности cfe имеет своё значение:

  • c (от англ. create — «создавать») указывает на то, что создаётся новый файл;
  • f (от англ. filename — «имя файла») предупреждает, что после него будет написано имя создаваемого jar-файла;
  • e (от англ. entrypoint — «точка входа») указывает на название класса, с которого нужно начать выполнение программы.
Пример
$ jar cfe library.jar Practicum -C bin .
# Точка в конце строки указывает на то, что в JAR должны попасть 
# все файлы из папки bin. 
Запуск программы из jar
$ java -jar <имя jar-файла> 
#пример java -jar library.jar 

About

Small git guide for a newbies

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors