mirror of
https://github.com/svek95/GeekBrainsHomeWork.git
synced 2026-06-13 15:18:31 +03:00
Repository updated
This commit is contained in:
@@ -1,49 +0,0 @@
|
||||
## Методичка по Git`y ##
|
||||
|
||||
* *Git init* - создать новый репозиторий (новый проект в текущей директории).
|
||||
|
||||
* *Git status* - показать состояние репозитория (отслеживаемые, изменённые, новые файлы и пр.)
|
||||
|
||||
* *Git add* - добавить в индекс все новые, изменённые, удалённые файлы из текущей директории и её поддиректорий.
|
||||
|
||||
* *Git commit* - " Закоммитить" (зафиксировать в коммите проиндексированные изменения), добавить сообщение.
|
||||
|
||||
* *Git diff* - показать разницу текущего и сохраненного (позволяет проанализировать добавляемые изменения и исправить возможные ошибки).
|
||||
|
||||
* *Git log* - журнал всех изменений (коммитов).
|
||||
|
||||
* *Git checkout* - временно переключиться на другой коммит:
|
||||
|
||||
\- git checkout b953 (переключиться на коммит с указанным хештегом);
|
||||
|
||||
\- git checkout master (вернуться в актуальное состояние).
|
||||
|
||||
Итак мы показали несколько команд для работы с Git`ом.
|
||||
|
||||
### А терь покажем несколько команд для работы с ветками.
|
||||
|
||||
* *Git branch* - команда, которая показыват список веток.
|
||||
|
||||
* *Git branch Branch_name* - команда, которая создаст новую ветку с указанным именем.
|
||||
|
||||
* *Git checkout Branch_name* - команда для перехода на ветку с данным именем.
|
||||
|
||||
* *Git merge Branch_name* - команда, обозначающая вливание в ветку, в которой находимся, данных из названой ветки.
|
||||
|
||||
* *Git branch -d Branch_name* - команда, которая позволяет нам удалить уже ненужную ветку (в данном случае это Branch_name).
|
||||
|
||||
* *Git log --graph* - Визуализация. Вывод на экран дерева всех наших коммитов.
|
||||
|
||||
# P.S.
|
||||
|
||||
## На что стоит обратить внимание!
|
||||
|
||||
* При слиянии может возникнуть ситуация, когда фрагмент в каком-либо файле проекта в различных ветках отредактирован по разному. Такая ситуация называется конфликт. Для завершения процедуры слияния, небходимо разрешить конфликт и сохранить все изменения.
|
||||
|
||||
### Команды, которые помогут работать на веб-сервисе GitHub (сайт-хранилище для историй версий проектов).
|
||||
|
||||
* *Git clone* - создание копии удаленного репозитория.
|
||||
|
||||
* *Git pull* - влить изменения с удалённого репозитория.
|
||||
|
||||
* *Git push* - отправbnm данные из локального репозитория в удаленный.
|
||||
@@ -1,60 +0,0 @@
|
||||
# Шпаргалка по Git
|
||||
|
||||
## Основные команды
|
||||
|
||||
*Создание нового репозитория*
|
||||
|
||||
git init
|
||||
|
||||
*Подготовка файлов для следующих коммитов*
|
||||
|
||||
git add
|
||||
|
||||
*Фиксация изменений*
|
||||
|
||||
git commit -a -m
|
||||
|
||||
## Команды отслеживания
|
||||
|
||||
*Просмотр истории коммитов с начала*
|
||||
|
||||
git log
|
||||
|
||||
*Просмотр текущего состояния*
|
||||
|
||||
git status
|
||||
|
||||
*Просмотр подготовленных изменений*
|
||||
|
||||
git diff
|
||||
|
||||
## Команды перемещения
|
||||
|
||||
*Перемещение между коммитами*
|
||||
|
||||
git checkout
|
||||
|
||||
*Откат к текущей версии*
|
||||
|
||||
git checkout master
|
||||
|
||||
# Работа с удаленным репозиторием
|
||||
|
||||
*Копирование удаленного репозитория с GitHub*
|
||||
|
||||
git clone со ссылкой на удаленный репозиторий
|
||||
|
||||
*Отправление изменений в репозиторий GitGub*
|
||||
|
||||
git push
|
||||
|
||||
*Скачивание изменений с удаленного репоизитория*
|
||||
|
||||
git pull
|
||||
|
||||
при этом происходит слияние
|
||||
|
||||
**Важные дополнения:**
|
||||
- ссылку на удаленный репозиторий берем в своем аккаунте при помощи кнопки **fork** с аккаунта интересующего репозитория
|
||||
|
||||
- при работе с чьим то репозиторием создаем отдельную ветку с описанием в новом файле
|
||||
@@ -1,52 +0,0 @@
|
||||
# Шпаргалка по Git'у
|
||||
|
||||
|
||||
_git init_ - команда, создающая локальный репозиторий
|
||||
|
||||
_git add_ - добавляет фаулк версионность в локальном репозитории
|
||||
|
||||
**НЕ ЗАБЫТЬ:** Сохранить изменения, внесенные в файл (CTRL+S)
|
||||
|
||||
_git commit_ - позволяет зафиксировать изменения и сообщить о появлении новой версии файла
|
||||
|
||||
_git status_ - показывает состояние файлов в локальном репозитории, какие файлы изменены, но не добавлены. Вдобавок к этому выводятся подсказки о том, как изменить состояние файлов.
|
||||
|
||||
_git log_ - просмотр истории коммитов
|
||||
|
||||
_git diff_ - позволяет увидеть разницу между текущей и уже зафиксированной версией файла.
|
||||
|
||||
_git checkout master_ - возвращает актуальную версию файла
|
||||
|
||||
## Команды для работы с ветками
|
||||
|
||||
_git branch_ - выводит информацию о существующих ветках (цветом и звездочкой выделяется текущая)
|
||||
|
||||
_git checkout "название ветки"_ - совершает переход в указанную ветку
|
||||
|
||||
_git branch -d "название ветки"_ - удаляет указанную ветку
|
||||
|
||||
_git merge "название ветки"_ - добавляет информацию из указанной ветки в текущую ветку
|
||||
|
||||
## Gitignore
|
||||
|
||||
При добавлении больших файлов в проект (например картинок), можно настроить git так, чтобы они не отслеживались в контроле версий. Это делается, чтобы не расходовались лишние ресурсы системы.
|
||||
|
||||
## Работа с GitHub
|
||||
|
||||
Для совместной работы несколькими пользователями над одним проектом существует сервис Github, с помощью которого осуществляется функционирование системы контроля версий.
|
||||
Для начала работы необходимо пройти регистрацию и создать аккаунт. В этот аккаунт возможно загрузить любой локальный репозиторий, а также можно создать новый репозиторий непосредственно на портале Github.
|
||||
|
||||
Команда _git push_ - доставляет изменения из локального репозитория в удаленный.
|
||||
|
||||
Команда _git pull_ - забирает изменения из удаленного репозитория в локальный и делает merge.
|
||||
|
||||
Команда _git clone_ - позволяет скопировать удаленный репозиторий в свой локальный (необходимо иметь ссылку, сгенерированную порталом github).
|
||||
|
||||
Когда мы хотим присоединиться к чьей-то работе через github, необходимо сделать Fork (такая кнопка появится при заходе на требуемый удаленный репозиторий). После ее нажатия в нашем удаленном репозитории создается точная копия проекта. Все изменения необходимо осуществлять только в отдельной вновь созданной ветке.
|
||||
|
||||
Для доставки изменений с отдельной ветки существует удобный параметр команды push:
|
||||
|
||||
git push --set-upstream origin "имя ветки"
|
||||
|
||||
После этой команды изменения будут доставлены в нашу копию проекта на портале github и появится кнопка **Pull request**. Нажав ее мы отправим наши изменения владельцу проекта.
|
||||
|
||||
@@ -1,62 +0,0 @@
|
||||
# Git ReadMe
|
||||
|
||||
## Работа с ветками
|
||||
|
||||
Для просмотра списка существующих веток необходимо вызывать следующую команду:
|
||||
|
||||
git branch
|
||||
|
||||
Команда *git status* - позволяет просмотреть текущее состояние, в том числе - название текущей ветки.
|
||||
|
||||
__Добавление новой ветки__
|
||||
|
||||
Для добавления новой ветки используется следующая команда("branch_name" - название создаваемой ветки):
|
||||
|
||||
git branch branch_name
|
||||
|
||||
__Переход между ветками_
|
||||
|
||||
Для перехода между ветками используется следующая команда("branch_name" - название ветки, в которую осуществляется переход):
|
||||
|
||||
git checkout branch_name
|
||||
|
||||
__Удаление ветки__
|
||||
|
||||
Для удаления ветки необходимо вызвать следующую команду("branch_name" - название удаляемой ветки):
|
||||
|
||||
git branch -d branch_name
|
||||
|
||||
*Внимание!* - перед удалением ветки необходимо удостовериться, что данные сохранены и данная ветка более не потребуется.
|
||||
|
||||
__Слияние веток__
|
||||
|
||||
Для слияния двух веток применяется слудующая команда:
|
||||
|
||||
git merge branch_name
|
||||
|
||||
**Важные моменты при слиянии**
|
||||
|
||||
* В момент слияния мы находимся в ветке, куда будут загружены изменения;
|
||||
* "branch_name" - название ветки, изменения которой будут отправляться.
|
||||
|
||||
При слиянии веток в идеальном случае информация со сливаемой ветки дополняет информацию с основной.
|
||||
|
||||
__Последствия слияния веток__
|
||||
|
||||
При слиянии могут возникнуть ситуции, когда в основной ветке есть противоречия относительно изменений, получаемых с побочной ветки. В таких случаях в среде VS Code нам предоставляется возможность реализовать один из следующих вариантов:
|
||||
|
||||
* оставить в основной ветке её версию данных;
|
||||
* заменить данные основной ветки на данные вливаемой ветки;
|
||||
* оставить оба варианта для возмоности вручную указать итоговые данные.
|
||||
|
||||
**Работа с удалённым репозиторием**
|
||||
|
||||
*git clone* - копирование удаленного репозитория в локальный репозиторий;
|
||||
|
||||
*git push* - загрузка информации из локального репозитория в удаленный репозиторий;
|
||||
|
||||
*git pull* - загрузка информации из удаленного репозитория в локальный репозиторий;
|
||||
|
||||
*git remote add origin* - связывает удаленный репозиторий с локальным репозиторием;
|
||||
|
||||
*git push -u origin main* - первый push(отправка) в удаленный репозиторий для синхронизации.
|
||||
@@ -1,85 +0,0 @@
|
||||
# Шпаргалка по Git'у
|
||||
|
||||
## Основные команды
|
||||
|
||||
* *git init* - создание нового репозитория (создается скрытый файл с расширением .git)
|
||||
|
||||
* *git status* - показ состояния файлов в рабочей дирректории
|
||||
|
||||
* *git add "название файла"* - добавление файла в комит
|
||||
|
||||
* *git commit -m"причина изменений"* - закомитить (сохранить) добавленные файлы с сообщением об изменениях, делается после git add
|
||||
|
||||
* *git log* - список комитов
|
||||
|
||||
* *git checkout* - переход к предыдущим версиям (указать 4 символа из log)
|
||||
|
||||
* *git checkout master* - возврат на самую актуальную версию
|
||||
|
||||
* *git diff* - разница между двумя коммитами (через пробел указать 4 символа из log двух комитов)
|
||||
|
||||
* *ctrl+s* - не забывай сохранить изменения перед тем, как делать git add
|
||||
|
||||
## Работа с ветками
|
||||
|
||||
* *git branch* - вывод всех веток, (*) указывает на ту ветку, на которой мы находимся.
|
||||
|
||||
### Создание ветки
|
||||
|
||||
* *git branch (название ветки)* - создание новой ветки
|
||||
|
||||
* *git branch -d(название ветки)* - удаление ветки, которую мы слили.
|
||||
|
||||
### Переход между ветками
|
||||
|
||||
* *git checkout (название ветки)* - переход между ветками
|
||||
|
||||
### Список коммитов по веткам
|
||||
|
||||
* *git log --graph* - список коммитов по веткам
|
||||
|
||||
### Слияние веток
|
||||
|
||||
* *git merge (название ветки)* - слияние веток. Команда вызывается из той ветки, куда необходимо добавить изменения.
|
||||
|
||||
## Работа с удаленным репозиторием
|
||||
|
||||
Для работы с удаленным репозиторием можно использовать сервис GitHub (https://github.com).
|
||||
|
||||
### Копирование удаленного репозитория из GitHub на свой компьютер (в локальный репозиторий)
|
||||
|
||||
1. Открываем в VS Code папку
|
||||
2. На GitHub копируем ссылку на чужой репозиторий
|
||||
3. *git clone (ссылка)* - копия чужого удаленного репозитория в свой локальный репозиторий.
|
||||
|
||||
*Не забываем использовать cd (название папки), чтобы переместиться в новую папку с репозиторием.*
|
||||
|
||||
### Копирование репозитория на GitHub
|
||||
|
||||
1. Создаем на GitHub репозиторий (удаленный)
|
||||
2. Копируем ссылку на этот репозиторий
|
||||
3. Выполняем указания, которые предложит GitHub:
|
||||
* git remote add origin (ссылка)
|
||||
* git branch -M main (или master, в зависимости как мы хотим, что называлась главная ветка)
|
||||
* git push-u origin main
|
||||
4. Вносим изменения в файл на компьюторе (локальный репозиторий)
|
||||
5. *git push* - перенос (выталкивание) информации из локального на удаленный репозиторий.
|
||||
Для работы с git push
|
||||
* необходимо знать адрес (ссылка) удаленного репозитория
|
||||
* необходимо авторизовать git на внесение изменений в удаленный репозиторий
|
||||
6. Вносим изменения в файле на GitHub (удаленный репозиторий)
|
||||
7. *git pull* - забираем (тянем) из удаленного в локальный репозиторий.
|
||||
* git pull не только стягивает информацию, но и делает слияние (merge)
|
||||
|
||||
### Внесение изменений в уже созданный кем-то репозиторий (Pullrequest)
|
||||
|
||||
1. Заходим в GitHub на интересующий нас аккаунт, в репозиторий.
|
||||
2. Нажимаем кнопку *fork* и этот репозиторий скопируется к нам в аккаунт.
|
||||
3. Переходим к нам в аккаунт, копируем ссылку на этот репозиторий
|
||||
4. *git clone (ссылка)* - копия удаленного репозитория в локальный репозиторий
|
||||
5. С помощью *cd (название папки)* заходим в нужную папку.
|
||||
* *cd ..* -переход на папку выше
|
||||
6. *git branch (имя ветки)* - внутри создаем отдельную ветку.
|
||||
7. Делаем все изменения, которые необходимы в документе.
|
||||
8. *git push --set* - перенос (вытакливание) внесенных изменений с локального репозитория на удаленный репозиторий в наш аккаунт.
|
||||
9. Переходим в GitHub, нажимаем *Pull Request*, добавляем информацию в сообщении для владельца репозитория и наших предлагаемых изменениях.
|
||||
Binary file not shown.
@@ -1,37 +0,0 @@
|
||||
# Git readMe
|
||||
|
||||
## Работа с ветками
|
||||
|
||||
### **Добавление новой ветки**
|
||||
Для добавление новой ветки прописывается команда *git branch branch_name*.
|
||||
### **Переход между ветками**
|
||||
Для перехода между ветками прописывается команда *git checkout branch_name*.
|
||||
### **Слияние веток**
|
||||
Для того что бы соединить ветки воедино потребуется команда *git merge branch_name*.
|
||||
|
||||
Примечание: **_слияние будет для той ветки на которой в данный момент будет находиться пользователь_**.
|
||||
### **Удаление ветки**
|
||||
* Для удаление ветки после успешного слияния прописывается команда *git branch -d branch_name*.
|
||||
* Для принудительном удалении при с потерей информации в данной ветки прописывается "-D" (заглавная) *git branch -D branch_name*.
|
||||
### **Конфликт веток**
|
||||
При конфликте веток, выбрать какая из веток останется.
|
||||
|
||||
Примечание: **_При выборе обеих веток откорректировать в ручную_**.
|
||||
|
||||
## Работа с удаленными репозиториями
|
||||
|
||||
Git clone - копирует репозиторий по ссылке в свой локальный репозиторий.
|
||||
|
||||
Git push - загрузка в удаленный репозиторий.
|
||||
|
||||
Git pull - загрузка из удаленного репозитория в локальный.
|
||||
|
||||
Git remote add origin - связывает локальный репозиторий с удаленным.
|
||||
|
||||
### **Создание удаленного репозитория**
|
||||
|
||||
|
||||
* Создание аккаунта на github
|
||||
* Создание репозитория на github
|
||||
* Создание локального репозитория и подключение к github
|
||||
|
||||
@@ -1,53 +0,0 @@
|
||||
## Часть 1 Шпаргалка по гиту
|
||||
|
||||
*git init* - команда, инициализирующая локальный репозиторий.
|
||||
|
||||
*git version* - команда, отображающая текущую версию гит.
|
||||
|
||||
*git status* - команда, отображающая ветку в которой мы находимся и есть ли фиксации в данной ветке.
|
||||
|
||||
*git add* - команда, добавляющая файл в состоянии отслеживаемого.
|
||||
|
||||
*git commit* - создание фиксации нашего файла.
|
||||
|
||||
*git log* - команда показывающая все созданные фиксации.
|
||||
|
||||
*git checkout* - команда перехода между фиксациями.
|
||||
|
||||
*git diff* - команда, паказывающая разницу между фиксациями.
|
||||
|
||||
*clear* - команда позволяющая очищать видимую область терминала или командной строки.
|
||||
|
||||
## Часть 2 Шпаргалка по гиту
|
||||
|
||||
*git branch* - команда, которая выводит список созданных веток.
|
||||
|
||||
*git branch branch_name* - команда, которая создаёт ветку с заданным именем.
|
||||
|
||||
*git merge branch_name* - команда, которая осуществляет слияние заданной ветки с той, на которой мы находимся.
|
||||
|
||||
*git branch -d branch_name* - команда, позволяющая удалять ранее созданную ветку.
|
||||
|
||||
*git log --graph* - команда позволяющая отображать структуру созданных веток в виде графа.
|
||||
|
||||
*git status* - команда, которая показывет ветку в который мы находимся.
|
||||
|
||||
*git checkout* - команда, которая позволяет переходить между ветками.
|
||||
|
||||
*.gitignore* - файл который позволяет игнорировать git заданные нами файлы.
|
||||
|
||||
## Часть 3 Шпаргалка по гиту
|
||||
|
||||
*git clone ссылка_githab* - клонирование удалнённого репозитория по сслыке на клокальный компьютер.
|
||||
|
||||
*git remote add origin ссылка_githab* - добавляет связь удалённого репозитория с локальным репозиторием.
|
||||
|
||||
*git branch -M main* - указание основной ветки для отправки информации на удалённый репозиторий.
|
||||
|
||||
*git push -u origin main* - команда для первой отправки информации, направлюящая содержиамое локального репозитория в удалённый реподиторий для слияния.
|
||||
|
||||
*git push* - команда, направлюящая содержиамое локального репозитория в удалённый реподиторий для слияния.
|
||||
|
||||
*git push --set upstream origin branch_name* - команда, направлюящая содержиамое локального репозитория c неосновной ветки в удалённый реподиторий для слияния.
|
||||
|
||||
*git pull* - команда выкачивания и слияния из удалённого репозитория содержимого на локальный репозиторий.
|
||||
@@ -1,79 +0,0 @@
|
||||
# Шпаргалка по Git:
|
||||
|
||||
git - имя программы, к которой мы обращаемся.
|
||||
|
||||
git --version - позволяет проверить версию программы.
|
||||
|
||||
## Основные команды:
|
||||
|
||||
git init - инициализирует репозиторий. Позволяет программе git отслеживать содержимое.
|
||||
|
||||
git add - добавляет содержимое рабочего каталога в индекс для последующего коммита.
|
||||
|
||||
git commit - записывает индексированные изменения в репозиторий. Сохранение или контрольная точка.
|
||||
|
||||
git checkout - позволяет перемещаться между сохранениями и ветками.
|
||||
|
||||
## Команды для проверки:
|
||||
|
||||
git diff - показывает не сохранные изменения.
|
||||
|
||||
git status - показывает текущий статус.
|
||||
|
||||
git log - показывает журнал сохранений.
|
||||
|
||||
## Команды для управления ветками:
|
||||
|
||||
git branch - показывает все существующие ветки.
|
||||
|
||||
git branch branch_name - создает новую ветку.
|
||||
|
||||
git branch -d branch_name - позволяет удалить ветку.
|
||||
|
||||
git merge branch_name - позволяет слить указаную ветку с текущей.
|
||||
|
||||
### При возникновении конфликтных ситуаций и противоречий, VS code предоставит несколько вариантов решения:
|
||||
|
||||
* Оставить данные текущей ветки.
|
||||
|
||||
* Замена на данные сливаемой ветки.
|
||||
|
||||
* Оставить оба варианта данных.
|
||||
|
||||
|
||||
## Дополнительная информация:
|
||||
|
||||
* *branch_name* - название ветки
|
||||
|
||||
* *git add* - делаем перед каждым созданием коммитом
|
||||
|
||||
* перед каждым добавлением коммита нажимаем сочитание клавиш *ctrl+s*(для сохранения изменений)
|
||||
|
||||
* *-m* - добавляет коментарий(название коммита)
|
||||
|
||||
* *-d* - параметр удаления
|
||||
|
||||
* перед каждым действием проверяем наше текущеее сострояние. В этом нам могут помочь комады:
|
||||
|
||||
git status
|
||||
|
||||
git branch
|
||||
|
||||
git log(--graph)
|
||||
|
||||
# Инструкция по взаимодействию с GitHub
|
||||
|
||||
git clone LINK - позволяет клонировать репозиторий с Github
|
||||
|
||||
git push - отравляет изменения на удаленный репозиторий
|
||||
|
||||
git pull - выкачивает изменения с удаленного репозитория
|
||||
|
||||
* *LINK* - ссылка репозитория
|
||||
|
||||
* Перед копированием чужого репозитория с GitHub, нужно сделаеть его копию в свои репозитории с помощью, кнопки *fork*.
|
||||
|
||||
* Для отправки своих изменений владельцу репозитория, нажимаем кнопку *pull requests*
|
||||
|
||||
* __Все дополнительные инструкции, имеются на самом GitHub;)__
|
||||
|
||||
-86
@@ -1,86 +0,0 @@
|
||||
# **Инструкция по работе с Git**
|
||||
|
||||
## **Первоначальная настройка Git**
|
||||
|
||||
При первом запуске необходимо зарегистрироваться в системе. Git связывает вашу личность с каждой сделанной вами фиксацией.
|
||||
|
||||
* `git config --global user.name` "Name"
|
||||
* `git config --global user.email` user_email@mail.ru
|
||||
|
||||
## **Работа с одной веткой**
|
||||
|
||||
### Инициализация и отслеживание
|
||||
|
||||
* `git init` - (initialization) инициализация репозитория, т.е создание хранилища.
|
||||
|
||||
* `git add ReadMe.md` - добавление файла `ReadMe.md` в Git для отслеживания его изменений.
|
||||
|
||||
* `git commit -m "message"` - фиксация изменений. `-m` оставить комментарий к изменению.
|
||||
|
||||
### Перемещение по ветке
|
||||
|
||||
* `git log` - журнал изменений. История коммита. Будущие коммиты отображены не будут.
|
||||
|
||||
* `git checkout 1156gh` - переход к другому коммиту.
|
||||
|
||||
* `git checkout master` - возвращение к последнему коммиту ветви `master`. Основную ветку чаще всего называют master.
|
||||
|
||||
### Полезные команды
|
||||
|
||||
* `git --version` - версия Git.
|
||||
|
||||
* `git status` - отображает состояние рабочего каталога и раздела проиндексированных файлов.
|
||||
|
||||
* `git diff` - (difference) показывает разницу между сохраненным коммитом и текущим файлом.
|
||||
|
||||
## **Работа с несколькими ветками**
|
||||
|
||||
* `git branch branch_name` - команда для добавления новой ветки (branch_name - название добавляемой ветки).
|
||||
|
||||
* `git checkout branch_name` - команда для перехода между ветками (branch_name - название ветки в которую переходим).
|
||||
|
||||
* `git branch -d branch_name` - команда для удаления ветки (branch_name - название удаляемой ветки).
|
||||
|
||||
* `git merge branch_name` - команда для слияния двух веток.
|
||||
|
||||
Важные моменты при слиянии:
|
||||
1. В момент слияния мы находимся в ветке, куда будут загружены изменения;
|
||||
2. branch_name - название ветки, изменение которой будут отправляться.
|
||||
|
||||
### Последствия слияния веток.
|
||||
|
||||
Но бывают случаи когда сливаемые ветки конфликтуют друг с другом. Когда в основной ветке есть противоречие относительно изменений получаемых из побочной ветки. В таких случаях в среде VS Code нам предоставляется возможность реализовать один из следующих вариантов:
|
||||
* `Accept Current Change` - оставить в основной ветке ее версию данных;
|
||||
* `Accept Incoming Change` - заменить данные основной ветки на данные вливаемой ветки;
|
||||
* `Accept Both Changes` - оставить оба варианта для возможности вручную указать итоговые данные.
|
||||
* `Compare Changes` - сравнить изменения.
|
||||
|
||||
## **Работа с удаленным репозиторием GitHub**
|
||||
|
||||
### Как взять чей-то репозиторий с GitHub
|
||||
|
||||
1. Создаем папку для репозитория у себя на компьютере.
|
||||
2. Копируем HTTPS ссылку c GitHub интересующего нас проекта.
|
||||
3. Открываем созданную папку в VS Сode.
|
||||
4. В терминале выполняем команду: `git clone <HTTPS ссылка>`
|
||||
5. В скачанный репозиторий переходим командой: cd <название репозитория>
|
||||
6. Репозиторий готов к работе с ним.
|
||||
|
||||
### Как загрузить свой репозиторий на GitHub
|
||||
|
||||
1. Создать аккаунт на GitHub.com
|
||||
2. Создать локальный репозиторий
|
||||
3. "Подружить" ваш локальный и удаленный репозитории. GitHub при создании нового репозитория подскажет как это можно сделать.
|
||||
4. Отправить `(push)` ваш локальный репозиторий в удаленный (на GitHub), при этом вам, возможно, нужно будет авторизоваться на удаленном репозитории.
|
||||
5. Провести изменения "с другого компьютера".
|
||||
6. Выкачать `(pull)` актуальное состояние из удаленного репозитория.
|
||||
|
||||
### Как принять участие в разработке
|
||||
|
||||
1. Делаем форк `(fork)` интересующего нас репозитория.
|
||||
2. Мы делаем git clone для нашей версии этого репозитория.
|
||||
3. Мы создаем ветку с предлагаемыми изменениями.
|
||||
4. Производим изменения только в одной ветке.
|
||||
5. Отправляем эти изменения на свой аккаунт (push).
|
||||
6. В окне на GitHub появляется возможность отправить pull request.
|
||||
___
|
||||
@@ -1,108 +0,0 @@
|
||||
## Шпаргалка по Git'у
|
||||
|
||||
*git init* - команда инициализации локального репозитория
|
||||
|
||||
*git version* - команда выводит текущую версию Git'а
|
||||
|
||||
*git status* - команда отображает статус проекта (название ветки, кол-во коммитов)
|
||||
|
||||
*git add* .\Имя_файла - внесение изменений для данного файла
|
||||
|
||||
*git commit* -m "Message" - создание коммита
|
||||
|
||||
*git checkout* 4 симв коммита - переход к соответствующему коммиту
|
||||
|
||||
*git checkout master* - вернуться к актуальной версии файла
|
||||
|
||||
*q* - кнопка для выхода из режима логов
|
||||
|
||||
*git diff* 4_цифры_коммита 4_цифры_другого_коммита - разница между 2 коммитами. Без цифр коммитов покажет разницу между текущей версией файла и последним коммитом.
|
||||
|
||||
## Работа с ветками
|
||||
|
||||
### Общая информация
|
||||
* Для просмотра текущего состояния проекта, в том числе и просмотра названия текущей ветки, необходимо использовать команду:
|
||||
|
||||
|
||||
git status
|
||||
|
||||
* Второй способ для просмотра списка веток и имени используемой ветки - вызов команды:
|
||||
|
||||
git branch
|
||||
|
||||
### Добавление веток
|
||||
|
||||
* Для добавления новой ветки проекта необходимо выполнить команду:
|
||||
|
||||
git branch branch_name
|
||||
, где *branch_name* - имя создаваемой ветки
|
||||
|
||||
### Переход между ветками
|
||||
|
||||
* Для переключением между ветками проекта необходимо выполнить команду:
|
||||
|
||||
git checkout branch_name
|
||||
, где *branch_name* - имя создаваемой ветки
|
||||
### Удаление ветки
|
||||
|
||||
* Для удаления ветки проекта необходимо выполнить команду:
|
||||
|
||||
git branch -d branch_name
|
||||
, где *branch_name* - имя создаваемой ветки, а -d - префикс удаления, сокращенно от delete.
|
||||
|
||||
*Внимание!* Удостоверься, что данные сохранены и коммиты сделаны. Если что, то Git подстрахует, выведет сообщение:
|
||||
|
||||
error: The branch 'branch_name is not fully merged.
|
||||
If you are sure you want to delete it, run 'git branch -D branch_name'
|
||||
### Слияние веток
|
||||
|
||||
* Для слияния 2 веток необходимо вызвать команду:
|
||||
|
||||
git merge branch_name
|
||||
, где *branch_name* - имя создаваемой ветки
|
||||
|
||||
*Внимание!*
|
||||
+ Слияние происходит с той веткой, в которой мы находимся. Перед слиянием проверь ветку с помощью *git branch*!
|
||||
+ При слиянии 2 веток, если в главной ветке есть противоречия со слеваемой веткой - возникает конфликт. В этом случае Git выведет в терминал сообщение:
|
||||
|
||||
Automatic merge failed;
|
||||
fix conflicts and then
|
||||
commit the result.
|
||||
Среда программирования МЫ Code предложит 3 варианта исхода события:
|
||||
+ Оставить значения из главной ветки
|
||||
+ Вставить значиения из сливаемой ветки
|
||||
+ Оставить оба варианта
|
||||
|
||||
|
||||
## Работа с удаленными репозиториями
|
||||
|
||||
Для работы с удаленными репозиториями используем Github, где необходимо создать свой аккаунт, а также при первой загрузке необходимо "подружить" git и Github.
|
||||
Ниже приведенные используются при работе с удаленными репо.
|
||||
|
||||
+ git remote add origin URL
|
||||
+ git branch -M main
|
||||
+ git push-u origin main
|
||||
|
||||
### Возможности работы на Github
|
||||
1) Создание собственного репозитория
|
||||
|
||||
|
||||
2) Работы с чужим готовым репо.
|
||||
+ Fork репозитория
|
||||
+ Делаем clone СВОЕЙ версии репозитория
|
||||
|
||||
git clone URL
|
||||
|
||||
+ Создаем новую ветку и в НЕЕ вносим свои изменения
|
||||
|
||||
git branch branch_name
|
||||
+ Фиксируем изменения (делаем коммиты)
|
||||
|
||||
git commit -m "Commit name"
|
||||
+ Отправляем свою версию в свой GitHub
|
||||
|
||||
git push
|
||||
+ На сайте GitHub жмем pull request
|
||||
|
||||
|
||||
Основные команды
|
||||
-439
@@ -1,439 +0,0 @@
|
||||
# **Шпаргалка по консольным командам Git**
|
||||
## **Общее**
|
||||
|
||||
***Git*** — система контроля версий (файлов). Что-то вроде возможности сохраняться в компьютерных играх (в Git эквивалент игрового сохранения — коммит). Важно: добавление файлов к «сохранению» двухступенчатое: сначала добавляем файл в индекс (git add), потом «сохраняем» (git commit).
|
||||
|
||||
Любой файл в директории существующего репозитория может находиться или не находиться под версионным контролем (отслеживаемые и неотслеживаемые).
|
||||
|
||||
Отслеживаемые файлы могут быть в 3-х состояниях: неизменённые, изменённые, проиндексированные (готовые к коммиту).
|
||||
|
||||
## **Ключ к пониманию**
|
||||
|
||||
Ключ к пониманию концепции *git* — знание о «***трех деревьях***»:
|
||||
|
||||
1. ***Рабочая директория*** — файловая система проекта (те файлы, с которыми вы работаете).
|
||||
|
||||
2. ***Индекс*** — список отслеживаемых git-ом файлов и директорий, промежуточное хранилище изменений (редактирование, удаление отслеживаемых файлов).
|
||||
|
||||
3. ***Директория*** _.git/_ — все данные контроля версий этого проекта (вся история разработки: коммиты, ветки, теги и пр.).
|
||||
|
||||
***Коммит*** — «сохранение» (хранит набор изменений, сделанный в рабочей директории с момента предыдущего коммита). Коммит неизменен, его нельзя отредактировать.
|
||||
|
||||
У всех коммитов (кроме самого первого) есть один или более родительских коммитов, поскольку коммиты хранят изменения от предыдущих состояний.
|
||||
|
||||
## **Простейший цикл работ**
|
||||
|
||||
* Редактирование, добавление, удаление файлов (собственно, работа).
|
||||
|
||||
* Индексация/добавление файлов в индекс (указание для git какие изменения нужно будет закоммитить).
|
||||
|
||||
* Коммит (фиксация изменений).
|
||||
|
||||
* Возврат к шагу 1 или отход ко сну.
|
||||
|
||||
## **Указатели**
|
||||
|
||||
* _HEAD_ — указатель на текущий коммит или на текущую ветку (то есть, в любом случае, на коммит). Указывает на родителя коммита, который будет создан следующим.
|
||||
|
||||
* _ORIG_HEAD_ — указатель на коммит, с которого вы только что переместили HEAD (командой git reset ..., например).
|
||||
|
||||
* Ветка (_master, develop etc._) — указатель на коммит. При добавлении коммита, указатель ветки перемещается с родительского коммита на новый.
|
||||
|
||||
* Теги — простые указатели на коммиты. Не перемещаются.
|
||||
|
||||
## **Настройки**
|
||||
Перед началом работы нужно выполнить некоторые настройки:
|
||||
|
||||
_git config --global user.name "Your Name" # указать имя, которым будут подписаны коммиты_
|
||||
|
||||
_git config --global user.email "e@w.com" # указать электропочту, которая будет в описании коммитера_
|
||||
|
||||
Если вы в Windows:
|
||||
|
||||
_git config --global core.autocrlf true # включить преобразование окончаний строк из CRLF в LF_
|
||||
|
||||
## **Указание неотслеживаемых файлов**
|
||||
|
||||
Файлы и директории, которые не нужно включать в репозиторий, указываются в файле _.gitignore._ Обычно это устанавливаемые зависимости (node_modules/, bower_components/), готовая сборка build/ или dist/ и подобные, создаваемые при установке или запуске. Каждый файл или директория указываются с новой строки.
|
||||
|
||||
### ***Консоль***
|
||||
|
||||
***Длинный вывод в консоли: Vim***
|
||||
|
||||
Вызов некоторых консольных команд приводит к необходимости очень длинного вывода в консоль (пример: вывод истории всех изменений в файле командой _git log -p fileName.txt_). При этом прямо в консоли запускается редактор Vim. Он работает в нескольких режимах, из которых Вас заинтересуют режим вставки (редактирование текста) и нормальный (командный) режим. Чтобы попасть из Vim обратно в консоль, нужно в командном режиме ввести _:q_. Переход в командный режим из любого другого: _Esc_.
|
||||
|
||||
Если нужно что-то написать, нажмите _i_ — это переход в режим вставки текста. Если нужно сохранить изменения, перейдите в командный режим и наберите _:w_.
|
||||
|
||||
# **Vim (некоторые команды)**
|
||||
* **Нажатия кнопок**
|
||||
|
||||
ESC — переход в командный режим
|
||||
|
||||
i — переход в режим редактирования текста
|
||||
|
||||
ZQ (зажат Shift, поочередное нажатие) — выход без сохранения
|
||||
|
||||
ZZ (зажат Shift, поочередное нажатие) — сохранить и выйти
|
||||
|
||||
|
||||
* **Ввод в командном режиме**
|
||||
|
||||
:q! — выйти без сохранения
|
||||
|
||||
:wq — сохранить файл и выйти
|
||||
|
||||
:w filename.txt — сохранить файл как filename.txt
|
||||
|
||||
## **Консольные команды**
|
||||
|
||||
**Создать новый репозиторий**
|
||||
|
||||
git init # создать новый проект в текущей директории
|
||||
|
||||
git init folder-name # создать новый проект в указанной директории
|
||||
|
||||
**Клонирование репозитория**
|
||||
|
||||
* клонировать удаленный репозиторий в одноименную директорию
|
||||
git clone https://github.com/cyberspacedk/Git-commands.git
|
||||
|
||||
* клонировать удаленный репозиторий в директорию «FolderName»
|
||||
git clone https://github.com/cyberspacedk/Git-commands.git FolderName
|
||||
|
||||
* клонировать репозиторий в текущую директорию
|
||||
git clone https://github.com:nicothin/web-design.git .
|
||||
|
||||
**Просмотр изменений**
|
||||
|
||||
git status # показать состояние репозитория (отслеживаемые, изменённые, новые файлы и пр.)
|
||||
|
||||
git diff # сравнить рабочую директорию и индекс (неотслеживаемые файлы ИГНОРИРУЮТСЯ)
|
||||
|
||||
git diff --color-words # сравнить рабочую директорию и индекс, показать отличия в словах (неотслеживаемые файлы ИГНОРИРУЮТСЯ)
|
||||
|
||||
git diff index.html # сравнить файл из рабочей директории и индекс
|
||||
|
||||
git diff HEAD # сравнить рабочую директорию и коммит, на который указывает HEAD (неотслеживаемые файлы ИГНОРИРУЮТСЯ)
|
||||
|
||||
git diff --staged # сравнить индекс и коммит с HEAD
|
||||
|
||||
git diff master feature # посмотреть что сделано в ветке feature по сравнению с веткой master
|
||||
|
||||
git diff --name-only master feature # посмотреть что сделано в ветке feature по сравнению с веткой master, показать только имена файлов
|
||||
|
||||
git diff master...feature # посмотреть что сделано в ветке feature с момента (коммита) расхождения с master
|
||||
|
||||
**Добавление изменений в индекс**
|
||||
|
||||
git add . # добавить в индекс все новые, изменённые, удалённые файлы из текущей директории и её поддиректорий
|
||||
|
||||
git add text.txt # добавить в индекс указанный файл (был изменён, был удалён или это новый файл)
|
||||
|
||||
git add -i # запустить интерактивную оболочку для добавления в индекс только выбранных файлов
|
||||
|
||||
git add -p # показать новые/изменённые файлы по очереди с указанием их изменений и вопросом об отслеживании/индексировании
|
||||
|
||||
**Удаление изменений из индекса**
|
||||
|
||||
git reset # убрать из индекса все добавленные в него изменения (в рабочей директории все изменения сохранятся), антипод git add
|
||||
|
||||
git reset readme.txt # убрать из индекса изменения указанного файла (в рабочей директории изменения сохранятся)
|
||||
|
||||
**Отмена изменений**
|
||||
|
||||
git checkout text.txt # ОПАСНО: отменить изменения в файле, вернуть состояние файла, имеющееся в индексе
|
||||
|
||||
git reset --hard # ОПАСНО: отменить изменения; вернуть то, что в коммите, на который указывает HEAD (незакомиченные изменения удалены из индекса и из рабочей директории, неотслеживаемые файлы останутся на месте)
|
||||
|
||||
git clean -df # удалить неотслеживаемые файлы и директории
|
||||
|
||||
**Коммиты**
|
||||
|
||||
git commit -m "Name of commit" # зафиксировать в коммите проиндексированные изменения (закоммитить), добавить сообщение
|
||||
|
||||
git commit -a -m "Name of commit" # проиндексировать отслеживаемые файлы (ТОЛЬКО отслеживаемые, но НЕ новые файлы) и закоммитить, добавить сообщение
|
||||
|
||||
**Отмена коммитов и перемещение по истории**
|
||||
|
||||
Все коммиты, которые уже были отправлены в удалённый репозиторий, должны отменяться новыми коммитами (git revert), дабы избежать проблем с историей разработки у других участников проекта.
|
||||
|
||||
git revert HEAD --no-edit # создать новый коммит, отменяющий изменения последнего коммита без запуска редактора сообщения
|
||||
|
||||
git revert b9533bb --no-edit # то же, но отменяются изменения, внесённые коммитом с указанным хешем (b9533bb)
|
||||
|
||||
Все команды, приведённые ниже можно выполнять ТОЛЬКО если коммиты еще не были отправлены в удалённый репозиторий.
|
||||
|
||||
***ВНИМАНИЕ! Опасные команды, можно потерять незакоммиченные изменения***
|
||||
|
||||
git commit --amend -m "Название" # «перекоммитить» изменения последнего коммита, заменить его новым коммитом с другим сообщением (сдвинуть текущую ветку на один коммит назад, сохранив рабочую директорию и индекс «как есть», создать новый коммит с данными из «отменяемого» коммита, но новым сообщением)
|
||||
|
||||
git reset --hard @~ # передвинуть HEAD (и ветку) на предыдущий коммит, рабочую директорию и индекс сделать такими, какими они были в момент предыдущего коммита
|
||||
|
||||
git reset --hard 75e2d51 # передвинуть HEAD (и ветку) на коммит с указанным хешем, рабочую директорию и индекс сделать такими, какими они были в момент указанного коммита
|
||||
|
||||
git reset --soft @~ # передвинуть HEAD (и ветку) на предыдущий коммит, но в рабочей директории и индексе оставить все изменения
|
||||
|
||||
git reset --soft @~2 # то же, но передвинуть HEAD (и ветку) на 2 коммита назад
|
||||
|
||||
git reset @~ # передвинуть HEAD (и ветку) на предыдущий коммит, рабочую директорию оставить как есть, индекс сделать таким, каким он был в момент предыдущего коммита (удобнее, чем git reset --soft @~, если индекс нужно задать заново)
|
||||
|
||||
Почти как git reset --hard, но безопаснее: не получится потерять изменения в рабочей директории
|
||||
|
||||
git reset --keep @~ # передвинуть HEAD (и ветку) на предыдущий коммит, сбросить индекс, но в рабочей директории оставить изменения, если возможно (если файл с изменениями между коммитами менялся, будет выдана ошибка и переключение не произойдёт)
|
||||
|
||||
**Временно переключиться на другой коммит**
|
||||
|
||||
git checkout b9533bb # переключиться на коммит с указанным хешем (переместить HEAD на указанный коммит, рабочую директорию вернуть к состоянию, на момент этого коммита)
|
||||
|
||||
git checkout master # переключиться на коммит, на который указывает master (переместить HEAD на коммит, на который указывает master, рабочую директорию вернуть к состоянию на момент этого коммита)
|
||||
|
||||
**Переключиться на другой коммит и продолжить работу с него**
|
||||
|
||||
Потребуется создание новой ветки, начинающейся с указанного коммита.
|
||||
|
||||
git checkout -b new-branch 5589877 # создать ветку new-branch, начинающуюся с коммита c хешем 5589877 (переместить HEAD на указанный коммит, рабочую директорию вернуть к состоянию, на момент этого коммита, создать указатель на этот коммит (ветку) с указанным именем)
|
||||
|
||||
**Восстановление изменений**
|
||||
|
||||
git checkout 5589877 index.html # восстановить в рабочей директории указанный файл на момент указанного коммита (и добавить это изменение в индекс) (git reset index.html для удаления из индекса, но сохранения изменений в файле)
|
||||
|
||||
**Копирование коммита (перенос коммитов)**
|
||||
|
||||
git cherry-pick 5589877 # скопировать на активную ветку изменения из указанного коммита, закоммитить эти изменения
|
||||
|
||||
git cherry-pick master~2..master # скопировать на активную ветку изменения из master (2 последних коммита)
|
||||
|
||||
git cherry-pick -n 5589877 # скопировать на активную ветку изменения из указанного коммита, но НЕ КОММИТИТЬ (подразумевается, что мы сами потом закоммитим)
|
||||
|
||||
git cherry-pick master..feature # скопировать на активную ветку изменения из всех коммитов ветки feature с момента её расхождения с master (похоже на слияние веток, но это копирование изменений, а не слияние), закоммитить эти изменения; это может вызвать конфликт
|
||||
|
||||
git cherry-pick --abort # прервать конфликтный перенос коммитов
|
||||
|
||||
git cherry-pick --continue # продолжить конфликтный перенос коммитов (сработает только после решения конфликта)
|
||||
|
||||
**Удаление файла**
|
||||
|
||||
git rm text.txt # удалить отслеживаемый неизменённый файл и проиндексировать это изменение
|
||||
|
||||
git rm -f text.txt # удалить отслеживаемый изменённый файл и проиндексировать это изменение
|
||||
|
||||
git rm -r log/ # удалить всё содержимое отслеживаемой директории log/ и проиндексировать это изменение
|
||||
|
||||
git rm ind* # удалить все отслеживаемые файлы с именем, начинающимся на «ind» в текущей директории и проиндексировать это изменение
|
||||
|
||||
git rm --cached readme.txt # удалить из отслеживаемых индексированный файл (ФАЙЛ ОСТАНЕТСЯ НА МЕСТЕ) (часто используется для нечаянно добавленных в отслеживаемые файлов)
|
||||
|
||||
**Перемещение/переименование файлов**
|
||||
|
||||
Для git не существует переименования. Переименование воспринимается как удаление старого файла и создание нового. Факт переименования может быть определен только после индексации изменения.
|
||||
|
||||
git mv text.txt test_new.txt # переименовать файл «text.txt» в «test_new.txt» и проиндексировать это изменение
|
||||
|
||||
git mv readme_new.md folder/ # переместить файл readme_new.md в директорию folder/ (должна существовать) и проиндексировать это изменение
|
||||
|
||||
**История коммитов**
|
||||
|
||||
Выход из длинного лога вывода: q.
|
||||
|
||||
git log master # показать коммиты в указанной ветке
|
||||
|
||||
git log -2 # показать последние 2 коммита в активной ветке
|
||||
|
||||
git log -2 --stat # показать последние 2 коммита и статистику внесенных ими изменений
|
||||
|
||||
git log -p -22 # показать последние 22 коммита и внесенную ими разницу на уровне строк
|
||||
|
||||
git log --graph -10 # показать последние 10 коммитов с ASCII-представлением ветвления
|
||||
|
||||
git log --since=2.weeks # показать коммиты за последние 2 недели
|
||||
|
||||
git log --after '2018-06-30' # показать коммиты, сделанные после указанной даты
|
||||
|
||||
git log index.html # показать историю изменений файла index.html (только коммиты)
|
||||
|
||||
git log -5 index.html # показать историю изменений файла index.html, последние 5 коммитов (только коммиты)
|
||||
|
||||
git log -p index.html # показать историю изменений файла index.html (коммиты и изменения)
|
||||
|
||||
git log -G'myFunction' -p # показать все коммиты, в которых менялись строки с myFunction (в кавычках регулярное выражение)
|
||||
|
||||
git log -L '/<head>/','/<\/head>/':index.html # показать изменения от указанного до указанного регулярных выражений в указанном файле
|
||||
|
||||
git log --grep fix # показать коммиты, в описании которых есть буквосочетание fix (регистрозависимо, только коммиты текущей ветки)
|
||||
|
||||
git log --grep fix -i # показать коммиты, в описании которых есть буквосочетание fix (регистроНЕзависимо, только коммиты текущей ветки)
|
||||
|
||||
git log --grep 'fix(ing|me)' -P # показать коммиты, в описании которых есть совпадения для регулярного выражения (только коммиты текущей ветки)
|
||||
|
||||
git log --pretty=format:"%h - %an, %ar : %s" -4 # показать последние 4 коммита с форматированием выводимых данных
|
||||
|
||||
git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short # мой формат вывода, висящий на алиасе оболочки
|
||||
|
||||
git log master..branch_99 # показать коммиты из ветки branch_99, которые не влиты в master
|
||||
|
||||
git log branch_99..master # показать коммиты из ветки master, которые не влиты в branch_99
|
||||
|
||||
git log master...branch_99 --boundary -- graph # показать коммиты из указанных веток, начиная с их расхождения (коммит расхождения будет показан)
|
||||
|
||||
git show 60d6582 # показать изменения из коммита с указанным хешем
|
||||
|
||||
git show HEAD~ # показать данные о предыдущем коммите в активной ветке
|
||||
|
||||
git show @~ # аналогично предыдущему
|
||||
|
||||
git show HEAD~3 # показать данные о коммите, который был 3 коммита назад
|
||||
|
||||
git show my_branch~2 # показать данные о коммите, который был 2 коммита назад в указанной ветке
|
||||
|
||||
git show @~:index.html # показать контент указанного файла на момент предыдущего (от HEAD) коммита
|
||||
|
||||
git show :/"подвал" # показать самый новый коммит, в описании которого есть указанное слово (из любой ветки)
|
||||
|
||||
**Кто написал строку**
|
||||
|
||||
git blame README.md --date=short -L 5,8 # показать строки 5-8 указанного файла и коммиты, в которых строки были добавлены
|
||||
|
||||
История изменений указателей (веток, HEAD)
|
||||
|
||||
git reflog -20 # показать последние 20 изменений положения указателя HEAD
|
||||
|
||||
git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)' -20 # то же, но с указанием давности действий
|
||||
|
||||
**Ветки**
|
||||
|
||||
git branch # показать список веток
|
||||
|
||||
git branch -v # показать список веток и последний коммит в каждой
|
||||
|
||||
git branch new_branch # создать новую ветку с указанным именем на текущем коммите
|
||||
|
||||
git branch new_branch 5589877 # создать новую ветку с указанным именем на указанном коммите
|
||||
|
||||
git branch -f master 5589877 # переместить ветку master на указанный коммит
|
||||
|
||||
git branch -f master master~2 # переместить ветку master на 2 коммита назад
|
||||
|
||||
git checkout new_branch # перейти в указанную ветку
|
||||
|
||||
git checkout -b new_branch # создать новую ветку с указанным именем и перейти в неё
|
||||
|
||||
git checkout -B master 5589877 # переместить ветку с указанным именем на указанный коммит и перейти в неё
|
||||
|
||||
git merge hotfix # влить в ветку, в которой находимся, данные из ветки hotfix
|
||||
|
||||
git merge hotfix -m "Горячая правка" # влить в ветку, в которой находимся, данные из ветки hotfix (указано сообщение коммита слияния)
|
||||
|
||||
git merge hotfix --log # влить в ветку, в которой находимся, данные из ветки hotfix, показать редактор описания коммита, добавить в него сообщения вливаемых коммитов
|
||||
|
||||
git merge hotfix --no-ff # влить в ветку, в которой находимся, данные из ветки hotfix, запретить простой сдвиг указателя, изменения из hotfix «останутся» в ней, а в активной ветке появится только коммит слияния
|
||||
|
||||
git branch -d hotfix # удалить ветку hotfix (используется, если её изменения уже влиты в главную ветку)
|
||||
|
||||
git branch --merged # показать ветки, уже слитые с активной
|
||||
|
||||
git branch --no-merged # показать ветки, не слитые с активной
|
||||
|
||||
git branch -a # показать все имеющиеся ветки (в т.ч. на удаленных репозиториях)
|
||||
|
||||
git branch -m old_branch_name new_branch_name # переименовать локально ветку old_branch_name в new_branch_name
|
||||
|
||||
git branch -m new_branch_name # переименовать локально ТЕКУЩУЮ ветку в new_branch_name
|
||||
|
||||
git push origin :old_branch_name new_branch_name # применить переименование в удаленном репозитории
|
||||
|
||||
git branch --unset-upstream # завершить процесс переименования
|
||||
|
||||
**Теги**
|
||||
|
||||
git tag v1.0.0 # создать тег с указанным именем на коммите, на который указывает HEAD
|
||||
|
||||
git tag -a -m 'В продакшен!' v1.0.1 master # создать тег с описанием на том коммите, на который смотрит ветка master
|
||||
|
||||
git tag -d v1.0.0 # удалить тег с указанным именем(ами)
|
||||
|
||||
git tag -n # показать все теги, и по 1 строке сообщения коммитов, на которые они указывают
|
||||
|
||||
git tag -n -l 'v1.*' # показать все теги, которые начинаются с 'v1.*'
|
||||
|
||||
**Временное сохранение изменений без коммита**
|
||||
|
||||
git stash # временно сохранить незакоммиченные изменения и убрать их из рабочей д
|
||||
иректории
|
||||
|
||||
git stash pop # вернуть сохраненные командой git stash изменения в рабочую директорию
|
||||
|
||||
**Удалённые репозитории**
|
||||
|
||||
*Есть два распространённых способа привязать удалённый репозиторий к локальному: по HTTPS и по SSH. Если SSH у вас не настроен (или вы не знаете что это), привязывайте удалённый репозиторий по HTTPS (адрес привязываемого репозитория должен начинаться с https://).*
|
||||
|
||||
git remote -v # показать список удалённых репозиториев, связанных с локальным
|
||||
|
||||
git remote remove origin # убрать привязку удалённого репозитория с сокр. именем origin
|
||||
|
||||
git remote add origin https://github.com:nicothin/test.git # добавить удалённый репозиторий (с сокр. именем origin) с указанным URL
|
||||
|
||||
git remote rm origin # удалить привязку удалённого репозитория
|
||||
|
||||
git remote show origin # получить данные об удалённом репозитории с сокращенным именем origin
|
||||
|
||||
git fetch origin # скачать все ветки с удаленного репозитория (с сокр. именем origin), но не сливать со своими ветками
|
||||
|
||||
git fetch origin master # то же, но скачивается только указанная ветка
|
||||
|
||||
git checkout --track origin/github_branch # создать локальную ветку github_branch (данные взять из удалённого репозитория с сокр. именем origin, ветка github_branch) и переключиться на неё
|
||||
|
||||
git push origin master # отправить в удалённый репозиторий (с сокр. именем origin) данные своей ветки master
|
||||
|
||||
git pull origin # влить изменения с удалённого репозитория (все ветки)
|
||||
|
||||
git pull origin master # влить изменения с удалённого репозитория (только указанная ветка)
|
||||
|
||||
**Конфликт слияния**
|
||||
|
||||
*Предполагается ситуация: есть ветка master и есть ветка feature. В обеих ветках есть коммиты, сделанные после расхождения веток. В ветку master пытаемся влить ветку feature (git merge feature), получаем конфликт, т.к. в обеих ветках есть изменения одной и той же строки в файле index.html.*
|
||||
|
||||
*При возникновении конфликта, репозиторий находится в состоянии прерванного слияния. Нужно оставить в конфликтующих местах файлов только нужный код, проиндексировать изменения и закоммитить.*
|
||||
|
||||
git merge feature # влить в активную ветку изменения из ветки feature
|
||||
|
||||
git merge-base master feature # показать хеш последнего общего коммита для двух указанных веток
|
||||
|
||||
git checkout --ours index.html # оставить в конфликтном файле (index.html) состояние ветки, В КОТОРУЮ мы вливаем (в примере — из ветки master)
|
||||
|
||||
git checkout --theirs index.html # оставить в конфликтном файле (index.html) состояние ветки, ИЗ КОТОРОЙ мы вливаем (в примере — из ветки feature)
|
||||
|
||||
git checkout --merge index.html # показать в конфликтном файле (index.html) сравнение содержимого сливаемых веток (для ручного редактирования)
|
||||
|
||||
git checkout --conflict=diff3 --merge index.html # показать в конфликтном файле (index.html) сравнение содержимого сливаемых веток плюс то, что было в месте конфликта в коммите, на котором разошлись сливаемые ветки
|
||||
|
||||
git reset --hard # прекратить это прерванное слияние, вернуть рабочую директорию и индекс как было в момент коммита, на который указывает HEAD, а я пойду немного поплачу
|
||||
|
||||
git reset --merge # прекратить это прерванное слияние, но оставить изменения, не закоммиченные до слияния (для случая, когда слияние делается не на чистом статусе)
|
||||
|
||||
git reset --abort # то же, что и строкой выше
|
||||
|
||||
**«Перенос» ветки**
|
||||
|
||||
*Можно «переместить» ответвление какой-либо ветки от основной на произвольный коммит. Это нужно для того, чтобы в «переносимой» ветке появились какие-либо изменения, внесённые в основной ветке (уже после ответвления переносимой).*
|
||||
|
||||
*Нельзя «переносить» ветку, если она уже отправлена на удалённый репозиторий.*
|
||||
|
||||
git rebase master # перенести все коммиты (создать их копии) активной ветки так, будто активная ветка ответвилась от master на нынешней вершине master (часто вызывает конфликты)
|
||||
|
||||
git rebase --onto master feature # перенести коммиты активной ветки на master, начиная с того места, в котором активная ветка отделилась от ветки feature
|
||||
|
||||
git rebase --abort # прервать конфликтный rebase, вернуть рабочую директорию и индекс к состоянию до начала rebase
|
||||
|
||||
git rebase --continue # продолжить конфликтный rebase (сработает только после разрешения конфликта и индексации такого разрешения)
|
||||
|
||||
**Как отменить rebase**
|
||||
|
||||
git reflog feature -2 # смотрим лог перемещений ветки, которой делали rebase (в этом примере — feature), видим последний коммит ПЕРЕД rebase, на него и нужно перенести указатель ветки
|
||||
|
||||
git reset --hard feature@{1} # переместить указатель ветки feature на один коммит назад, обновить рабочую директорию и индекс
|
||||
|
||||
**Разное**
|
||||
|
||||
git archive -o ./project.zip HEAD # создать архив с файловой структурой проекта по указанному пути (состояние репозитория, соответствующее указателю HEAD)
|
||||
|
||||
## **КОНЕЦ**
|
||||
@@ -1,67 +0,0 @@
|
||||
# Шпаргалка Git (контроль версий)
|
||||
|
||||
## Команды проверки версии и инициализации git
|
||||
|
||||
* *git version* - проверяет наличие установки утилиты git и сообщает о её версии
|
||||
|
||||
* *git init* - инициализирует git в данном каталоге для реализации версионности в нём, каталог превращается в репозиторий
|
||||
|
||||
## Команды проверки состояния и журнал событий
|
||||
|
||||
* *git status* - сообщает о состоянии (статусе) репозитория
|
||||
|
||||
* *git log* - выводит журнал (лог) событий в репозитории
|
||||
|
||||
* *git log --graph* - отображает журнал (лог) в графическом виде
|
||||
|
||||
## Команды изменения
|
||||
|
||||
### 1. <u>версии (внутри одной ветки)</u>
|
||||
|
||||
* *git add .\file.ext* - готовит файл *file* с расширением *ext* для последующего сохранения в новую версию репозитория;
|
||||
|
||||
<u>внимание</u>: перед вызовом этой команды все изменения в файле должны быть предварительно сохранены (Ctrl + S); для выбора файла в репозитории воспользуйтесь Tab (табуляцией) после ключевого слова *add*
|
||||
|
||||
|
||||
* *git commit -m "message"* - сохраняет текущее состояние репозитория в новую версию с сообщением *message*, присваивая версии уникальный 40-символьный номер; при этом фиксируются данные пользователя и время создания версии
|
||||
|
||||
* *git checkout value* - вызывает состояние репозитория по значению версии *value* (40-символьный номер); после ключевого слова *checkout* достаточно ввести первые 4 символа *value*;
|
||||
|
||||
<u>внимание</u>: указатель HEAD продолжения ветвления дерева версий переходит на данное состояние *value*
|
||||
|
||||
### 2. <u>дерева (работа с ветками)</u>
|
||||
|
||||
* *git branch* - просмотр всех созданных веток дерева с указателем на текущую ветку
|
||||
|
||||
* *git branch branch_name* - создание новой ветки с именем *branch_name*
|
||||
|
||||
* *git checkout branch_name* - переход на ветку с именем *branch_name*
|
||||
|
||||
* *git checkout master* - переход на базовую ветку master
|
||||
* *git merge branch_name* - слияние данных ветки с именем *branch_name* с текущей веткой с возможность обработки конфликтов
|
||||
|
||||
* *git branch -d branch_name* - удаление ветки с именем *branch_name* и предупреждение об ошибке в случае, если данная ветка не была слита или отправлена на удалённый
|
||||
|
||||
<u>примечание</u>: используйте -D для удаления ветки без предупреждений об ошибке
|
||||
|
||||
## Команды работы с удалённым репозиторием
|
||||
|
||||
* *git remote add remote_name url* - сообщение текущему локальному репозиторию адреса *url* удалённого репозитория, обращение к нему по указателю *remote_name*
|
||||
|
||||
* *git branch -M main* - назначение имя *main* базовой (дефолтной) ветки
|
||||
|
||||
* *git push -u remote_name main* - установление связи локального репозитория с удалённым репозиторием через указатель *remote_name*, и синхронизация данных в ветке *main* (дефолтная ветка, назначенная выше)
|
||||
|
||||
<u>внимание</u>: при первом установлении связи с удалённым репозиторием git может запросить авторизацию для подтверждения прав доступа пользователя к удалённому репозиторию
|
||||
|
||||
* *git pull* - "стягивание" данных удалённого репозитория в локальный репозиторий с одновременной процедурой сливания (merge)
|
||||
|
||||
* *git push* - отправление данных локального репозитория на удалённый репозиторий
|
||||
|
||||
### Прочие команды
|
||||
|
||||
* *clear* - очищает поле терминала vs code (или cmd); никаких изменений в репозитории не происходит
|
||||
|
||||
* *q* - возвращает указатель ввода команд git в терминале vs code (или cmd) в случае его потери, например, в случае, когда журнал событий (log) при вызове не умещается целиком в поле терминала
|
||||
|
||||
> при необходимости содержание шпаргалки может быть дополнено
|
||||
@@ -1,90 +0,0 @@
|
||||
# Шпаргалка по git
|
||||
|
||||
## Основные Команды
|
||||
|
||||
*__git version__* - команда, отображающая текущую версию git.
|
||||
|
||||
*__git status__* - команда, отображающая состояние файла.
|
||||
|
||||
*__git init__* - команда, инициализируащая локальный репозиторий.
|
||||
|
||||
*__git add + название файла с расширением__* - команда, добавляющая папку для git с целью отслеживания файлов.
|
||||
|
||||
*__git commit -m "text"__* - команда, позволяющая сохранить текущее состояние файла.
|
||||
|
||||
*__git diff__* - команда, отображающая разницу между сохраненными файлами (commitами).
|
||||
|
||||
*__git log__* - команда, отображающая все сохраненные commitы.
|
||||
|
||||
*__git checkout__* - команда, позволяющая переключаться между сохраненными файлами (commitами)
|
||||
|
||||
*__git commit -amend__* - команда, редактирующая последний commit.
|
||||
|
||||
*__clear__* - команда очистки терминала.
|
||||
|
||||
## Команды ветвления
|
||||
|
||||
*__git branch__* - команда, выводящая список веток.
|
||||
|
||||
*__git branch имя ветки__* - команда, создающая новую ветку.
|
||||
|
||||
*__git checkout имя ветки__* - команда перемещения между ветками.
|
||||
|
||||
*__git branch -d имя ветки__* - команда удаления ветки.
|
||||
|
||||
*__git merge имя ветки__* - команда слияния веток.
|
||||
|
||||
ВАЖНО! Необходмо находится в ветке куда будут загружены изменения.
|
||||
|
||||
*__git log -graph__* - команда визуализации веток.
|
||||
|
||||
## Работа с изображениями
|
||||
|
||||

|
||||
|
||||
## Синтаксис языка Markdown
|
||||
|
||||
(**) - жирный текст.
|
||||
|
||||
(*) - курсив.
|
||||
|
||||
(#) - Заголовок 1 типа.
|
||||
|
||||
Последующие # меняют размер заголовка.
|
||||
|
||||
(1,2,3 ...) - нумерованный список.
|
||||
|
||||
(* в начале строки) - ненумерованный список.
|
||||
|
||||
## Удаленный репозиторий
|
||||
|
||||
## 1. Начало работы
|
||||
* В браузере перейти по ссылке https://github.com/
|
||||
* Зарегистрироваться.
|
||||
* Ознакомиться с сайтой.
|
||||
|
||||
## 2. Команды
|
||||
|
||||
*git clone имя сайта* - команда, позволяющая сделать копию удаленного репозитория в локальный.
|
||||
|
||||
! в VScode не должно быть созданного репозитория.
|
||||
|
||||
*cd (chang directory) имя папки* - смена папки.
|
||||
|
||||
*git remote add origin имя сайта* - команда, связывающая удаленный и локальный репозиторий.
|
||||
|
||||
*git branch -M main* - команда, присваивающая приоритет ветке в удаленном репозитории.
|
||||
|
||||
Если локальный репозиторий существует, то при выполнении этой команды необходимо находится в главной ветке локального репозитория.
|
||||
|
||||
*git push -u origin main* - команда первой отправки данных из локального в удаленный репозиторий. Далее используем *git push*.
|
||||
|
||||
*git pull* - команда, стягивающая данные из удаленного в локальный репозиторий.
|
||||
|
||||
! git pull - составная команда, подгружает изменения и сразу сливает их (merge).
|
||||
|
||||
*pull request* - запрос на предложение изменения данных в чужом репозитории.
|
||||
|
||||
*fork* - команда копирование с чужого удаленного репозитория в свой удаленный репозиторий.
|
||||
|
||||
! Изменения в чужом проекте делается в отдельной ветке.
|
||||
@@ -1,61 +0,0 @@
|
||||
# Git methodics
|
||||
|
||||
## Main teams
|
||||
|
||||
* git commit
|
||||
* git add
|
||||
* git version
|
||||
* git init
|
||||
* git diff
|
||||
|
||||
### Analysis
|
||||
|
||||
1. *git commit*
|
||||
|
||||
2. *git add*
|
||||
|
||||
3. *git diff*
|
||||
|
||||
4. *git init*
|
||||
|
||||
5. *git version*
|
||||
|
||||
### Adding a new branch
|
||||
|
||||
To add a new branch, use the next command (where, branch_name - is the name of the branch):
|
||||
|
||||
git branch branch_name
|
||||
|
||||
### Moving between branches
|
||||
|
||||
To move between branches, use the next command: (where, branch_name - is the name of the branch)
|
||||
|
||||
git checkout branch_name
|
||||
|
||||
### Removing branches
|
||||
|
||||
To remove a branch, use the next command (where, branch_name - is the name of the branch)
|
||||
|
||||
git branch -d branch_name
|
||||
|
||||
### Merging branches
|
||||
|
||||
To merge two branches, use the next command (where, branch_name - is the name of the branch)
|
||||
|
||||
git merge branch_name
|
||||
|
||||
## Remote repositories
|
||||
|
||||
### Main commands for remote repositories:
|
||||
|
||||
- *git clone* - copying a remote repository to your local repository;
|
||||
|
||||
- *git push* - uploading information from a local repository to a remote repository;
|
||||
|
||||
- *git pull* - downloading information from a remote repository to a local repository
|
||||
|
||||
### Supplements
|
||||
|
||||
- *git remote add origin* - associates the remote repository with the local repository
|
||||
|
||||
- *git push -u origin main* - first push(submission) to remote repository for synchronization
|
||||
-120
@@ -1,120 +0,0 @@
|
||||
# Шпаргалка по Git'у
|
||||
|
||||
## Базовые команды Git
|
||||
|
||||
*git init*
|
||||
|
||||
создание репозитория в текущей папке
|
||||
|
||||
*git version*
|
||||
|
||||
проверка установленной версии Git
|
||||
|
||||
*git add*
|
||||
|
||||
добавление файла для отслеживания
|
||||
|
||||
*git commit*
|
||||
|
||||
создание commit'a, сохранение изменения
|
||||
|
||||
*git diff*
|
||||
|
||||
выявление разницы между текущим состоянием файла и последним сохраненным.
|
||||
|
||||
*git checkout*
|
||||
|
||||
перемещение между версиями
|
||||
|
||||
*git log*
|
||||
|
||||
просмотр журнала commit'ов
|
||||
|
||||
## Работа с ветками
|
||||
|
||||
Для просмотра списка существующих веток необходимо вызвать следующую команду:
|
||||
|
||||
git branch
|
||||
|
||||
Команда *git status* позволяет смотреть текущее состояние, в том числе название текущей ветки.
|
||||
|
||||
### Добавление новой ветки
|
||||
|
||||
Для добавления новой ветки branch_name, используется следующая команда:
|
||||
|
||||
git branch branch_name
|
||||
|
||||
### Удаление ветки
|
||||
|
||||
Для удаления ветки необходимо вызвать следующую команду:
|
||||
|
||||
git branch -d branch_name
|
||||
|
||||
*Внимание!* - перед удалением ветки необходимо удостоавериться, что данные сохранены и удаляемая ветка более не потребуется.
|
||||
|
||||
### Переход между ветками.
|
||||
|
||||
Для перехода между ветками тспользуется следующая команда:
|
||||
|
||||
git checkout branch_name
|
||||
|
||||
### Слияние веток.
|
||||
|
||||
Для слияния двух веток используется команда:
|
||||
|
||||
git merge branch_name
|
||||
|
||||
**Важные моменты при слиянии**
|
||||
|
||||
* В момент слияния мы находимся в ветке, куда будут загружены изменения.
|
||||
* branch_name - название ветки, изменения которой будут отправляться.
|
||||
|
||||
### Конфликты при слиянии.
|
||||
|
||||
строка провокатор
|
||||
|
||||
* оставить в основной ветке её версию данных;
|
||||
* заменить данные основной ветки на данные вливаемой ветки;
|
||||
* оставить оба варианта, для возможности вручную указать итоговые данные.
|
||||
|
||||
### Вставка изображений
|
||||
|
||||
Чтобы вставить изображение, используем команду:
|
||||
|
||||

|
||||
|
||||
|
||||
## Работа с удалённым репозиторием.
|
||||
|
||||
Для того, чтобы перенести(клонировать) удалённый репозиторий в локальный, используем команду *git clone http://....*
|
||||
|
||||
Для начала работы с чужим репозиторием, форкаем кнопкой *Fork* на [GitHub](https://github.com/). Этим мы склонируем чужой репозиторий на свой аккаунт. С нашего аккаунта копируем ссылку репозитория, которая появляется при на жатии на кнопку *Code*, затем клонируем репозиторий на свой компьютер.
|
||||
|
||||
После этих действий открываем через VS Code папку, которую хотим связать с нашим репозиторием на GitHub.
|
||||
|
||||
Вводим следующие команды:
|
||||
|
||||
git init
|
||||
git branch -M main
|
||||
git remote add origin https://[ссылка на наш репозиторий]
|
||||
|
||||
*git init* - инициализация локального репозитория
|
||||
|
||||
*git branch -M main* - назначение имени главной ветке
|
||||
|
||||
*git remote add origin https://* - привязка удаленного репозитория к нашему локальному.
|
||||
|
||||
Также, у нас есть возможность вносить изменения непосредственно через сам GitHub. Для этого нажимаем на *карандаш* вносим изменения в файл, затем делаем коммит. Чтобы могли увидеть изменения, сделанные в удаленным репозитории, в терминале вводим команду:
|
||||
|
||||
git pull origin main
|
||||
|
||||
Здесь мы подтягиваем актуальную версию нашего файла с основной ветки.
|
||||
|
||||
Для того чтобы отправить изменения, внесенные в файл на нашем ПК, на удаленный репозиторий, пользуемся командой
|
||||
|
||||
git push
|
||||
|
||||
Перед выгрузкой на удаленный репозиторий подтягиваем последнюю версию командой *git pull*
|
||||
|
||||
Чтобы отправить изменения на чужой репозиторий, нажимаем кнопку *Pull Request* - *New Pull Request*, затем выбираем из какой ветки будут отправлены изменения.
|
||||
после этого нажимаем кнопку *Create Pull Request*.
|
||||
@@ -1,127 +0,0 @@
|
||||
# Шпаргалка по Git
|
||||
|
||||
## Шпаргалка по основным командам
|
||||
|
||||
### git add
|
||||
|
||||
Команда **git add** добавляет содержимое рабочей директории в индекс (*staging area*) для последующего коммита. По умолчанию **git commit** использует лишь этот индекс, так что вы можете использовать **git add** для сборки слепка вашего следующего коммита.
|
||||
|
||||
### git status
|
||||
|
||||
Команда **git status** показывает состояния файлов в рабочей директории и индексе: какие файлы изменены, но не добавлены в индекс; какие ожидают коммита в индексе. Вдобавок к этому выводятся подсказки о том, как изменить состояние файлов.
|
||||
|
||||
### git diff
|
||||
|
||||
Команда **git diff** используется для вычисления разницы между любыми двумя Git деревьями. Это может быть разница между вашей рабочей директорией и индексом (*собственно git diff*), разница между индексом и последним коммитом (*git diff --staged*), или между любыми двумя коммитами (*git diff master branchB*).
|
||||
|
||||
### git difftool
|
||||
|
||||
Команда **git difftool** просто запускает внешнюю утилиту сравнения для показа различий в двух деревьях, на случай если вы хотите использовать что-либо отличное от встроенного просмотрщика **git diff**.
|
||||
|
||||
### git commit
|
||||
|
||||
Команда **git commit** берёт все данные, добавленные в индекс с помощью **git add**, и сохраняет их слепок во внутренней базе данных, а затем сдвигает указатель текущей ветки на этот слепок.
|
||||
|
||||
### git reset
|
||||
|
||||
Команда **git reset**, как можно догадаться из названия, используется в основном для отмены изменений. Она изменяет указатель *HEAD* и, опционально, состояние индекса. Также эта команда может изменить файлы в рабочей директории при использовании параметра **--hard**, что может привести к потере наработок при неправильном использовании, так что убедитесь в серьёзности своих намерений прежде чем использовать его.
|
||||
|
||||
### git rm
|
||||
|
||||
Команда **git rm** используется в Git для удаления файлов из индекса и рабочей директории. Она похожа на **git add** с тем лишь исключением, что она удаляет, а не добавляет файлы для следующего коммита.
|
||||
|
||||
### git mv
|
||||
|
||||
Команда **git mv** — это всего лишь удобный способ переместить файл, а затем выполнить **git add** для нового файла и **git rm** для старого.
|
||||
|
||||
### git clean
|
||||
|
||||
Команда **git clean** используется для удаления мусора из рабочей директории. Это могут быть результаты сборки проекта или файлы конфликтов слияний.
|
||||
|
||||
## Шпаргалка по ветвлению и слиянию
|
||||
|
||||
### git branch
|
||||
|
||||
Команда **git branch** — это своего рода “менеджер веток”. Она умеет перечислять ваши ветки, создавать новые, удалять и переименовывать их.
|
||||
|
||||
git checkout
|
||||
|
||||
Команда git checkout используется для переключения веток и выгрузки их содержимого в рабочую директорию.
|
||||
|
||||
git merge
|
||||
|
||||
Команда git merge используется для слияния одной или нескольких веток в текущую. Затем она устанавливает указатель текущей ветки на результирующий коммит.
|
||||
|
||||
git mergetool
|
||||
|
||||
Команда git mergetool просто вызывает внешнюю программу слияний, в случае если у вас возникли проблемы слияния.
|
||||
|
||||
git log
|
||||
|
||||
Команда git log используется для просмотра истории коммитов, начиная с самого свежего и уходя к истокам проекта. По умолчанию, она показывает лишь историю текущей ветки, но может быть настроена на вывод истории других, даже нескольких сразу, веток. Также её можно использовать для просмотра различий между ветками на уровне коммитов.
|
||||
|
||||
git stash
|
||||
|
||||
Команда git stash используется для временного сохранения всех незакоммиченных изменений для очистки рабочей директории без необходимости коммитить незавершённую работу в новую ветку.
|
||||
|
||||
git tag
|
||||
|
||||
Команда git tag используется для задания постоянной метки на какой-либо момент в истории проекта. Обычно она используется для релизов.
|
||||
|
||||
Шпаргалка по совместной работе и обновлению проектов
|
||||
|
||||
Не так уж много команд в Git требуют сетевого подключения для своей работы, практически все команды оперируют с локальной копией проекта. Когда вы готовы поделиться своими наработками, всего несколько команд помогут вам работать с удалёнными репозиториями.
|
||||
|
||||
git fetch
|
||||
|
||||
Команда git fetch связывается с удалённым репозиторием и забирает из него все изменения, которых у вас пока нет и сохраняет их локально.
|
||||
|
||||
git pull
|
||||
|
||||
Команда git pull работает как комбинация команд git fetch и git merge, т.е. Git вначале забирает изменения из указанного удалённого репозитория, а затем пытается слить их с текущей веткой.
|
||||
|
||||
git push
|
||||
|
||||
Команда git push используется для установления связи с удалённым репозиторием, вычисления локальных изменений отсутствующих в нём, и собственно их передачи в вышеупомянутый репозиторий. Этой команде нужно право на запись в репозиторий, поэтому она использует аутентификацию.
|
||||
|
||||
git remote
|
||||
|
||||
Команда git remote служит для управления списком удалённых репозиториев. Она позволяет сохранять длинные URL репозиториев в виде понятных коротких строк, например "origin", так что вам не придётся забивать голову всякой ерундой и набирать её каждый раз для связи с сервером. Вы можете использовать несколько удалённых репозиториев для работы и git remote поможет добавлять, изменять и удалять их.
|
||||
|
||||
git archive
|
||||
|
||||
Команда git archive используется для упаковки в архив указанных коммитов или всего репозитория.
|
||||
|
||||
git submodule
|
||||
|
||||
Команда git submodule используется для управления вложенными репозиториями. Например, это могут быть библиотеки или другие, используемые не только в этом проекте ресурсы. У команды submodule есть несколько под-команд — add, update, sync и др. — для управления такими репозиториями.
|
||||
|
||||
Шпаргалка по осмотру и сравнению
|
||||
|
||||
git show
|
||||
|
||||
Команда git show отображает объект в простом и человекопонятном виде. Обычно она используется для просмотра информации о метке или коммите.
|
||||
|
||||
git shortlog
|
||||
|
||||
Команда git shortlog служит для подведения итогов команды git log. Она принимает практически те же параметры, что и git log, но вместо простого листинга всех коммитов, они будут сгруппированы по автору.
|
||||
|
||||
git describe
|
||||
|
||||
Команда git describe принимает на вход что угодно, что можно трактовать как коммит (ветку, тег) и выводит более-менее человекочитаемую строку, которая не изменится в будущем для данного коммита. Это может быть использовано как более удобная, но по-прежнему уникальная, замена SHA-1.
|
||||
|
||||
Шпаргалка по отладке
|
||||
|
||||
В Git есть несколько команд, используемых для нахождения проблем в коде. Это команды для поиска места в истории, где проблема впервые проявилась и собственно виновника этой проблемы.
|
||||
|
||||
git bisect
|
||||
|
||||
Команда git bisect — это чрезвычайно полезная утилита для поиска коммита в котором впервые проявился баг или проблема с помощью автоматического бинарного поиска.
|
||||
|
||||
git blame
|
||||
|
||||
Команда git blame выводит перед каждой строкой файла SHA-1 коммита, последний раз менявшего эту строку и автора этого коммита. Это помогает в поисках человека, которому нужно задавать вопросы о проблемном куске кода.
|
||||
|
||||
git grep
|
||||
|
||||
Команда git grep используется для поиска любой строки или регулярного выражения в любом из файлов вашего проекта, даже в более ранних его версиях.
|
||||
@@ -1,144 +0,0 @@
|
||||
# Work with GIT
|
||||
*To check your knowledge and become highly proficient, follow the link https://learngitbranching.js.org/. This application (trainer) helps you to comprehend the huge capacity of branching as well as to practice Git work.*
|
||||
|
||||
__Initial Configuration__
|
||||
|
||||
The first thing you should do when you install Git is to set your user name and email. Run the following into the terminal:
|
||||
|
||||
*git config --global user.name "Your name"*
|
||||
|
||||
*git config --global user.email "Your email"*
|
||||
|
||||
## __Git Basics__
|
||||
*Notes:*
|
||||
|
||||
*To clean your terminal, enter **clear**.*
|
||||
|
||||
_To call previously entered commands press ↑._
|
||||
|
||||
*To insert an image, save the image to your folder. Enter this [Photo](Beach.jpg)
|
||||
|
||||
**NB: Add file .gitignore and insert a name of your file with photo/picture to this file.**
|
||||
|
||||
## File creation and initialization.
|
||||
|
||||
1) Open folder.
|
||||
2) Create a file.
|
||||
3) Enter *git init* in terminal.
|
||||
|
||||
__Your folder will be added as a repository.__
|
||||
|
||||
4) Enter *git add file name* in terminal.
|
||||
|
||||
__Now your file will be tracked by Git.__
|
||||
|
||||
Hint: start to write two-three letters of your file name and then press the button tab, the program will find the right file.
|
||||
|
||||
To check the status, enter *git status* in terminal.
|
||||
|
||||
NB: Do not forget to save your file (ctrl+S) and make a commit. Tracked files may be in three states: unmodified, modified and indexed (ready to be committed).
|
||||
|
||||
## Commits
|
||||
|
||||
In order to make a commit:
|
||||
* save your file **ctrl+S.**
|
||||
* enter *git add file name* in terminal.
|
||||
* enter *git commit -m "Your commit"* in terminal.
|
||||
|
||||
In order to change the last commit run *git commit -amend -m "New commit"* in terminal.
|
||||
|
||||
__Commit deleting:__
|
||||
|
||||
For local repository – run *git reset* – this command will delete everything to the previous commit.
|
||||
|
||||
For remote repository – run *git revert* – this command will create new commit. It contains inverse transformation.
|
||||
|
||||
## How to switch between commits
|
||||
|
||||
In order to switch between commits, enter _git checkout commit's hash_ in terminal.
|
||||
|
||||
Commit's hash you can find in terminal when you enter *git log*.
|
||||
|
||||
Hint: It does not need to write down full hash of needed commit, it is enough to copy and paste 4-6 symbols.
|
||||
|
||||
To return to the latest commit, enter *git checkout master* in terminal.
|
||||
|
||||
## Change log
|
||||
|
||||
In order to see the history of your commits, enter *git log* in terminal.
|
||||
|
||||
There is a command to see short display (without author and date) of the commits. You need to enter _git log --oneline_ in terminal.
|
||||
|
||||
To see __all commits from all existing branches__ run *git log --oneline --all* in terminal.
|
||||
|
||||
## Difference between files
|
||||
|
||||
In order to see the difference between files, enter *git diff* in terminal. To quit, press Q.
|
||||
|
||||
NB: You can see this difference before you add changings in Git. (_git add_)
|
||||
|
||||
## Branching
|
||||
|
||||
In order to create a new branch, enter *git branch branch name* in terminal.
|
||||
|
||||
Enter *git branch* in terminal to see all branches you have.
|
||||
|
||||
To switch between branches, enter *git checkout branch name*.
|
||||
|
||||
In order to add a branch to master, switch to master and enter *git merge branch name* in terminal.
|
||||
|
||||
To delete your branch run *git branch -d branch_name* in terminal.
|
||||
|
||||
To make your branch the main/master run *git branch -M branch_name* in terminal.
|
||||
|
||||
## Work with Git Remote Repository.
|
||||
|
||||
NB:
|
||||
1) GIT is a local program. All your repositories are located on your local machine.
|
||||
2) GitHub is a remote service. Your repository pushed to GitHub is available for viewing worldwide.
|
||||
|
||||
**How to get (to clone) a remote repository to your local machine**
|
||||
|
||||
1) Follow the link https://github.com/.
|
||||
2) In the search box, enter the key words. You will find the lists of repositories (it does not need to create an account on GitHub). Find the desired repository and open it. You will see a CODE green button. Copy URL.
|
||||
3) Open Git (VS Code). Create a folder. Make an initialization. Enter git clone URL in terminal.
|
||||
|
||||
Result: the program will copy the remote repository from GitHub.
|
||||
|
||||
*Notes:
|
||||
Git command - *mkdir folder name* to create a new folder.
|
||||
Git command - *cd folder name* to move to the selected folder (cd means change directory).
|
||||
Git command - *cd ..* to go up a level.*
|
||||
|
||||
**How to push your local repository to GitHub**
|
||||
|
||||
1) Create an account on GitHub (Sign in).
|
||||
2) Create a local folder. Make an initialization. Create a file. Add and commit it.
|
||||
3) Create a new repository in your account on GitHub. In the upper right corner, press button +, new repository, repository name, create repository (chose to involve your local repository).
|
||||
4) In local terminal enter the following commands:
|
||||
- *git remote add origin [url from GitHub]*
|
||||
- *git branch -M main*
|
||||
- *git push -u origin main* (on your first push you need to make friends your local repository with GitHub, follow the instruction).
|
||||
|
||||
__Changing in file pushed to GibHub__
|
||||
|
||||
If you have already pushed your repository to GitHub and would like to make any changes, enter these commands in your local terminal:
|
||||
|
||||
- *git add*
|
||||
- *git commit*
|
||||
- *git push*
|
||||
|
||||
Result: You will find all your changes on GitHub.
|
||||
|
||||
In case you make changes from other PC or right in GitHub, you should save your changes and pull it to your local machine.
|
||||
|
||||
__Fork and Pull request__
|
||||
|
||||
If you want to contribute to somebody’s project (repository) and you do not have the rights to do it, you can make a Fork, do your changes in new branch and then make a Pull Request. The Fork is the replica. Make the following:
|
||||
|
||||
- Find the needed repository on GitHub and the button Fork.
|
||||
- Clone the repository to your local machine (*git clone url*).
|
||||
- Make a new branch (*git branch name*)
|
||||
- Make some changes (*git add, git commit*)
|
||||
- Push your changed repository to GitHub (*git push*)
|
||||
- Make a new Pull request on GitHub.
|
||||
@@ -1,85 +0,0 @@
|
||||
# Шпаргалка по Git'у
|
||||
|
||||
## Основные команды
|
||||
|
||||
* *git init* - создание нового репозитория (создается скрытый файл с расширением .git)
|
||||
|
||||
* *git status* - показ состояния файлов в рабочей дирректории
|
||||
|
||||
* *git add "название файла"* - добавление файла в комит
|
||||
|
||||
* *git commit -m"причина изменений"* - закомитить (сохранить) добавленные файлы с сообщением об изменениях, делается после git add
|
||||
|
||||
* *git log* - список комитов
|
||||
|
||||
* *git checkout* - переход к предыдущим версиям (указать 4 символа из log)
|
||||
|
||||
* *git checkout master* - возврат на самую актуальную версию
|
||||
|
||||
* *git diff* - разница между двумя коммитами (через пробел указать 4 символа из log двух комитов)
|
||||
|
||||
* *ctrl+s* - не забывай сохранить изменения перед тем, как делать git add
|
||||
|
||||
## Работа с ветками
|
||||
|
||||
* *git branch* - вывод всех веток, (*) указывает на ту ветку, на которой мы находимся.
|
||||
|
||||
### Создание ветки
|
||||
|
||||
* *git branch (название ветки)* - создание новой ветки
|
||||
|
||||
* *git branch -d(название ветки)* - удаление ветки, которую мы слили.
|
||||
|
||||
### Переход между ветками
|
||||
|
||||
* *git checkout (название ветки)* - переход между ветками
|
||||
|
||||
### Список коммитов по веткам
|
||||
|
||||
* *git log --graph* - список коммитов по веткам
|
||||
|
||||
### Слияние веток
|
||||
|
||||
* *git merge (название ветки)* - слияние веток. Команда вызывается из той ветки, куда необходимо добавить изменения.
|
||||
|
||||
## Работа с удаленным репозиторием
|
||||
|
||||
Для работы с удаленным репозиторием можно использовать сервис GitHub (https://github.com).
|
||||
|
||||
### Копирование удаленного репозитория из GitHub на свой компьютер (в локальный репозиторий)
|
||||
|
||||
1. Открываем в VS Code папку
|
||||
2. На GitHub копируем ссылку на чужой репозиторий
|
||||
3. *git clone (ссылка)* - копия чужого удаленного репозитория в свой локальный репозиторий.
|
||||
|
||||
*Не забываем использовать cd (название папки), чтобы переместиться в новую папку с репозиторием.*
|
||||
|
||||
### Копирование репозитория на GitHub
|
||||
|
||||
1. Создаем на GitHub репозиторий (удаленный)
|
||||
2. Копируем ссылку на этот репозиторий
|
||||
3. Выполняем указания, которые предложит GitHub:
|
||||
* git remote add origin (ссылка)
|
||||
* git branch -M main (или master, в зависимости как мы хотим, что называлась главная ветка)
|
||||
* git push-u origin main
|
||||
4. Вносим изменения в файл на компьюторе (локальный репозиторий)
|
||||
5. *git push* - перенос (выталкивание) информации из локального на удаленный репозиторий.
|
||||
Для работы с git push
|
||||
* необходимо знать адрес (ссылка) удаленного репозитория
|
||||
* необходимо авторизовать git на внесение изменений в удаленный репозиторий
|
||||
6. Вносим изменения в файле на GitHub (удаленный репозиторий)
|
||||
7. *git pull* - забираем (тянем) из удаленного в локальный репозиторий.
|
||||
* git pull не только стягивает информацию, но и делает слияние (merge)
|
||||
|
||||
### Внесение изменений в уже созданный кем-то репозиторий (Pullrequest)
|
||||
|
||||
1. Заходим в GitHub на интересующий нас аккаунт, в репозиторий.
|
||||
2. Нажимаем кнопку *fork* и этот репозиторий скопируется к нам в аккаунт.
|
||||
3. Переходим к нам в аккаунт, копируем ссылку на этот репозиторий
|
||||
4. *git clone (ссылка)* - копия удаленного репозитория в локальный репозиторий
|
||||
5. С помощью *cd (название папки)* заходим в нужную папку.
|
||||
* *cd ..* -переход на папку выше
|
||||
6. *git branch (имя ветки)* - внутри создаем отдельную ветку.
|
||||
7. Делаем все изменения, которые необходимы в документе.
|
||||
8. *git push --set* - перенос (вытакливание) внесенных изменений с локального репозитория на удаленный репозиторий в наш аккаунт.
|
||||
9. Переходим в GitHub, нажимаем *Pull Request*, добавляем информацию в сообщении для владельца репозитория и наших предлагаемых изменениях.
|
||||
-152
@@ -1,152 +0,0 @@
|
||||
## Шпаргалка для git-а
|
||||
|
||||
### Часть первая
|
||||
|
||||
### *Основные команды git-а*
|
||||
|
||||
* _git --version_ -команда проверяет установлен ли git и его текущую версию.
|
||||
|
||||
* _git init_ -команда создаст репозиторий внутри папки.
|
||||
|
||||
* _git add (file.md)_ -команда начнет следить за изменениями внутри файла.
|
||||
|
||||
* _git commit -m "coment"_ -команда сохраняет изменения, с коментариями об изменениях.
|
||||
|
||||
* _git status_ -команда позволяет увидеть текущее состояние папки.
|
||||
|
||||
* _git log_ -команда позволяет посмотреть текущую версию файла.
|
||||
|
||||
* _git checkout (nomber commit)_ -команда показывает состояние файла включая данный commit.
|
||||
|
||||
* _git cheсkout master_ -комана возвращает программу git к последнему изменению.
|
||||
|
||||
* _git diff (commit 1 and commit 2)_ -команда показывает разницу между двумя сравниваемыми commit-ами.
|
||||
|
||||
* _git branch_ - команда показывает наличие всех веток и указывает на какой ветке сейчас мы находимся.
|
||||
|
||||
* _git branch (name)_ - команда создания новой ветки.
|
||||
|
||||
* _git checkout (name)_ -команда перехода на нужную ветку.
|
||||
|
||||
* _git merge branch (name)_ -команда слияния двух веток. Причем, мы должны находиться в ветке в которую вливается указанная ветка.
|
||||
|
||||
* _git branch --d branch (name)_ -команда удаления ветки.
|
||||
|
||||
* _.gitignor (name file)_ -команда предписывает не обращать внимание на данный файл, находящийся в нашй папке.
|
||||
|
||||
* _git log --graph_ -команда позволяющая увидеть дерево commit-ов и их принадлежность к веткам.
|
||||
|
||||
|
||||
### Часть вторая
|
||||
|
||||
### _Работа с ветками_
|
||||
|
||||
### 1. Добавление новой ветки.
|
||||
|
||||
* Для добавления новой ветки используется следующая команда:
|
||||
_git branch (name)_
|
||||
|
||||
* Убедится, что новая ветка добавлена можно с помощью команды: _git branch_
|
||||
|
||||
### 2. Переход между ветками.
|
||||
|
||||
* Для перехода на нужную ветку используется команда: _git checkout (name), где (name) - имя ветки на которую мы хотим перейти.
|
||||
|
||||
### 3. Слияние веток.
|
||||
|
||||
* Для слияния двух веток используется команда: _git merge (name)_, где (name) имя ветки из которй добавляется информация.
|
||||
|
||||
**ВАЖНО** - в момент слияния мы должны находиться на ветке в которую добавляется информация. Для определения на какой ветке мы сейчас находимся используется команда: _git branch_.
|
||||
|
||||
### 4. Удаление веток.
|
||||
|
||||
* Для удаления ветки используется команда: _git branch -d (name)_, где (name) имя удаляемой программы.
|
||||
|
||||
**ВАЖНО** - при удалении ветки необходимо убедтся, что вся информация из нее - сохранена и ветка нам больше не потребуется.
|
||||
|
||||
### 5. Конфликты при слиянии веток и их разрешение.
|
||||
|
||||
* При слиянии двух веток можен возникнуть конфликтная ситуация, когда текущая информация в ветке, в которую добавляют информацию, изменилась по сравнению с той, которая была при создании ветки. git - укажен на эти отличия и предложит 3 варианта решения.
|
||||
|
||||
1. принять старую версию;
|
||||
2.принять новую версию;
|
||||
3.принять совмещенную версию(учесть все изменения).
|
||||
|
||||
### 6. Визуализация дерева веток.
|
||||
|
||||
* Для визуального просмотра дерева веток (можно увидеть какие ветки были созданы и какие коммиты в них были реализованы, а также можно увидеть слияние веток) используется команда _git log --graph_.
|
||||
|
||||
|
||||
### Часть третья
|
||||
|
||||
### _Схема создания конфликта_
|
||||
|
||||
* Создаем новую ветку.
|
||||
|
||||
* Переходим на новую ветку.
|
||||
|
||||
* Создаем коммит на новой ветке.
|
||||
|
||||
* Переходим на ветку мастер.
|
||||
|
||||
* Создаем коммит на ветке мастер.
|
||||
|
||||
* Вливаем новую ветку в ветку мастер.
|
||||
|
||||
### _Должен возникнуть конфликт!_
|
||||
|
||||
## Часть четвертая
|
||||
|
||||
### _Работа с удаленным репозиторием_
|
||||
|
||||
### 1. Создание удаленного репозитория
|
||||
|
||||
* Скачиваем сервис GitHab по ссылке githab.com
|
||||
|
||||
* Создаем аккаунт на сервисе GitHab
|
||||
|
||||
* В иконке new repozitory вводим название нашего нового удаленного депозитория
|
||||
|
||||
* Для работы необходимо связать наш удаленный репозиторий и наш локальный репозиторий, для этого после создания удалнного репозитория необходимо в локальном репозитории выполнить один из трех шагов предложенных сервисом GitHab. На пример:
|
||||
|
||||
_git remote add origin()_
|
||||
|
||||
_git branch -M main_
|
||||
|
||||
_git рush -u origin main_
|
||||
|
||||
## ВФжно: При первой команде push сервис GitHab попросит пройти авторизацию. по указанному пути.
|
||||
|
||||
### 2. Извлечение информации из удаленного репозитория
|
||||
|
||||
* Для ознакомления с информацией какого нибудь удаленного депозитория необходимо выбрать этот депозиторий или ввести ссылку, затем нажать иконку Code и скопировать адрес этого репозитория.
|
||||
Затем перейти в терминал VScode и с помощью команды git clone (скопированный адес) скопировать папку чужго удаленного репозитория..
|
||||
|
||||
* Для перехода в скоченную папку необходимо выполнить команду cd (указать название папки).
|
||||
|
||||
* Для перемещения информации из своего удаленного репозитория в свой локальный репозиторий используется команда git pull.
|
||||
|
||||
### 3. Перемещение информации в удаленный репозиторий
|
||||
|
||||
* Для перемещения информации из нашего локального репозитория в наш удаленный репозиторий используется команда git push
|
||||
|
||||
### 4. Работа с чужими репозиториями
|
||||
|
||||
* Для работы с чужим удаленным репозиторием необходимо сделать актуальную копию и сязать ее со своим удаленным репозиторием. это делается с помощью нажатия на иконку Fork. Затем нажав нв иконку Code копируем адрес нашего удаленного репозитория с копиее чужого.
|
||||
|
||||
* Затем с помощью команды git clone (скопированный адрес удаленного репозитория) копирум чужую копию свой локальный репозиторий.
|
||||
|
||||
* Затем с помощью команды cd (имя папки скопированного чужого репозитория), переходом в папку скопированного репозитория.
|
||||
|
||||
* Создае свой файл в скопированной папке, создаем новую ветку и начинаем работать в созданной папке.
|
||||
|
||||
* Все изменения созданные на новой ветке коммитим и с помощью команды git push отправляем на наш удаленный репозиторий.
|
||||
|
||||
* Зате с помощью нажатия на иконку Compare & pull request направляем свои изменени хозяину чужого репозитория для рассмотрения
|
||||
|
||||
* GitHab автоматически проверяет ветку чужого репозитория и нашу ветку, которую мы хотим влить на предмет конфликтов.
|
||||
|
||||
* После создания комертария об наших иьенения с помощью нажатия на иконку Create pull request отправляем нашши изменения хзяину чужого репозитория
|
||||
|
||||
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
# Работа с Git
|
||||
|
||||
Для того что работать с Git ему надо представиться.
|
||||
Имя и почтовый ящик, для этого необходимо набрать следующие команды:
|
||||
|
||||
git config --global user.name "Ваше имя"
|
||||
git config --global user.email ereborsons@stone.com
|
||||
|
||||
___
|
||||
|
||||
## Команды Git
|
||||
|
||||
Команда **ls** содержимое каталога в котором мы сейчас находимся, по умолчанию, **ls** не отображает файлы, начинающиеся с (.), например, .gitignore. Для отображения таких файлов нужно использовать флаг –a
|
||||
Например:
|
||||
|
||||
Ls -a
|
||||
|
||||
Команда **cd** переход в определённый каталог
|
||||
Например:
|
||||
Например, перейти на каталог выше:
|
||||
|
||||
cd ..
|
||||
Перейти в подкаталог src:
|
||||
|
||||
cd src
|
||||
|
||||
Команда **git pwd** отображение текущего рабочего
|
||||
|
||||
Команда **git mkdir** позволяет создавать каталоги в текущем каталоге
|
||||
Например:
|
||||
|
||||
mkdir tmp
|
||||
|
||||
создаст каталог tmp в текущем каталоге
|
||||
>Стоит обратить внимание на поведение при создании нового каталога в текущей директории. После команды **git mkdir name** ваше текущее расположение в терминале не изменится. Для того, чтобы работать внутри созданного каталога, в него требуется перейти командой **git cd name**
|
||||
|
||||
Команда **git mv** перемещение (переименование) файлов и каталогов
|
||||
___
|
||||
Команда **git status** показать состояние репозитория (отслеживаемые, изменённые, новые файлы и пр.)
|
||||
Команда **git init** создать новый проект в текущей директории
|
||||
Команда **git add** добавить в индекс все новые, изменённые, удалённые файлы из текущей директории и её поддиректорий
|
||||
Команда **git commit -m "Сообщение"** зафиксировать в коммите проиндексированные изменения (закоммитить), добавить сообщение
|
||||
Команда **git log** показать список коммитов
|
||||
Команда **git log --graph** показать список коммитов с ASCII-представлением ветвления
|
||||
-439
@@ -1,439 +0,0 @@
|
||||
# **Шпаргалка по консольным командам Git**
|
||||
## **Общее**
|
||||
|
||||
***Git*** — система контроля версий (файлов). Что-то вроде возможности сохраняться в компьютерных играх (в Git эквивалент игрового сохранения — коммит). Важно: добавление файлов к «сохранению» двухступенчатое: сначала добавляем файл в индекс (git add), потом «сохраняем» (git commit).
|
||||
|
||||
Любой файл в директории существующего репозитория может находиться или не находиться под версионным контролем (отслеживаемые и неотслеживаемые).
|
||||
|
||||
Отслеживаемые файлы могут быть в 3-х состояниях: неизменённые, изменённые, проиндексированные (готовые к коммиту).
|
||||
|
||||
## **Ключ к пониманию**
|
||||
|
||||
Ключ к пониманию концепции *git* — знание о «***трех деревьях***»:
|
||||
|
||||
1. ***Рабочая директория*** — файловая система проекта (те файлы, с которыми вы работаете).
|
||||
|
||||
2. ***Индекс*** — список отслеживаемых git-ом файлов и директорий, промежуточное хранилище изменений (редактирование, удаление отслеживаемых файлов).
|
||||
|
||||
3. ***Директория*** _.git/_ — все данные контроля версий этого проекта (вся история разработки: коммиты, ветки, теги и пр.).
|
||||
|
||||
***Коммит*** — «сохранение» (хранит набор изменений, сделанный в рабочей директории с момента предыдущего коммита). Коммит неизменен, его нельзя отредактировать.
|
||||
|
||||
У всех коммитов (кроме самого первого) есть один или более родительских коммитов, поскольку коммиты хранят изменения от предыдущих состояний.
|
||||
|
||||
## **Простейший цикл работ**
|
||||
|
||||
* Редактирование, добавление, удаление файлов (собственно, работа).
|
||||
|
||||
* Индексация/добавление файлов в индекс (указание для git какие изменения нужно будет закоммитить).
|
||||
|
||||
* Коммит (фиксация изменений).
|
||||
|
||||
* Возврат к шагу 1 или отход ко сну.
|
||||
|
||||
## **Указатели**
|
||||
|
||||
* _HEAD_ — указатель на текущий коммит или на текущую ветку (то есть, в любом случае, на коммит). Указывает на родителя коммита, который будет создан следующим.
|
||||
|
||||
* _ORIG_HEAD_ — указатель на коммит, с которого вы только что переместили HEAD (командой git reset ..., например).
|
||||
|
||||
* Ветка (_master, develop etc._) — указатель на коммит. При добавлении коммита, указатель ветки перемещается с родительского коммита на новый.
|
||||
|
||||
* Теги — простые указатели на коммиты. Не перемещаются.
|
||||
|
||||
## **Настройки**
|
||||
Перед началом работы нужно выполнить некоторые настройки:
|
||||
|
||||
_git config --global user.name "Your Name" # указать имя, которым будут подписаны коммиты_
|
||||
|
||||
_git config --global user.email "e@w.com" # указать электропочту, которая будет в описании коммитера_
|
||||
|
||||
Если вы в Windows:
|
||||
|
||||
_git config --global core.autocrlf true # включить преобразование окончаний строк из CRLF в LF_
|
||||
|
||||
## **Указание неотслеживаемых файлов**
|
||||
|
||||
Файлы и директории, которые не нужно включать в репозиторий, указываются в файле _.gitignore._ Обычно это устанавливаемые зависимости (node_modules/, bower_components/), готовая сборка build/ или dist/ и подобные, создаваемые при установке или запуске. Каждый файл или директория указываются с новой строки.
|
||||
|
||||
### ***Консоль***
|
||||
|
||||
***Длинный вывод в консоли: Vim***
|
||||
|
||||
Вызов некоторых консольных команд приводит к необходимости очень длинного вывода в консоль (пример: вывод истории всех изменений в файле командой _git log -p fileName.txt_). При этом прямо в консоли запускается редактор Vim. Он работает в нескольких режимах, из которых Вас заинтересуют режим вставки (редактирование текста) и нормальный (командный) режим. Чтобы попасть из Vim обратно в консоль, нужно в командном режиме ввести _:q_. Переход в командный режим из любого другого: _Esc_.
|
||||
|
||||
Если нужно что-то написать, нажмите _i_ — это переход в режим вставки текста. Если нужно сохранить изменения, перейдите в командный режим и наберите _:w_.
|
||||
|
||||
# **Vim (некоторые команды)**
|
||||
* **Нажатия кнопок**
|
||||
|
||||
ESC — переход в командный режим
|
||||
|
||||
i — переход в режим редактирования текста
|
||||
|
||||
ZQ (зажат Shift, поочередное нажатие) — выход без сохранения
|
||||
|
||||
ZZ (зажат Shift, поочередное нажатие) — сохранить и выйти
|
||||
|
||||
|
||||
* **Ввод в командном режиме**
|
||||
|
||||
:q! — выйти без сохранения
|
||||
|
||||
:wq — сохранить файл и выйти
|
||||
|
||||
:w filename.txt — сохранить файл как filename.txt
|
||||
|
||||
## **Консольные команды**
|
||||
|
||||
**Создать новый репозиторий**
|
||||
|
||||
git init # создать новый проект в текущей директории
|
||||
|
||||
git init folder-name # создать новый проект в указанной директории
|
||||
|
||||
**Клонирование репозитория**
|
||||
|
||||
* клонировать удаленный репозиторий в одноименную директорию
|
||||
git clone https://github.com/cyberspacedk/Git-commands.git
|
||||
|
||||
* клонировать удаленный репозиторий в директорию «FolderName»
|
||||
git clone https://github.com/cyberspacedk/Git-commands.git FolderName
|
||||
|
||||
* клонировать репозиторий в текущую директорию
|
||||
git clone https://github.com:nicothin/web-design.git .
|
||||
|
||||
**Просмотр изменений**
|
||||
|
||||
git status # показать состояние репозитория (отслеживаемые, изменённые, новые файлы и пр.)
|
||||
|
||||
git diff # сравнить рабочую директорию и индекс (неотслеживаемые файлы ИГНОРИРУЮТСЯ)
|
||||
|
||||
git diff --color-words # сравнить рабочую директорию и индекс, показать отличия в словах (неотслеживаемые файлы ИГНОРИРУЮТСЯ)
|
||||
|
||||
git diff index.html # сравнить файл из рабочей директории и индекс
|
||||
|
||||
git diff HEAD # сравнить рабочую директорию и коммит, на который указывает HEAD (неотслеживаемые файлы ИГНОРИРУЮТСЯ)
|
||||
|
||||
git diff --staged # сравнить индекс и коммит с HEAD
|
||||
|
||||
git diff master feature # посмотреть что сделано в ветке feature по сравнению с веткой master
|
||||
|
||||
git diff --name-only master feature # посмотреть что сделано в ветке feature по сравнению с веткой master, показать только имена файлов
|
||||
|
||||
git diff master...feature # посмотреть что сделано в ветке feature с момента (коммита) расхождения с master
|
||||
|
||||
**Добавление изменений в индекс**
|
||||
|
||||
git add . # добавить в индекс все новые, изменённые, удалённые файлы из текущей директории и её поддиректорий
|
||||
|
||||
git add text.txt # добавить в индекс указанный файл (был изменён, был удалён или это новый файл)
|
||||
|
||||
git add -i # запустить интерактивную оболочку для добавления в индекс только выбранных файлов
|
||||
|
||||
git add -p # показать новые/изменённые файлы по очереди с указанием их изменений и вопросом об отслеживании/индексировании
|
||||
|
||||
**Удаление изменений из индекса**
|
||||
|
||||
git reset # убрать из индекса все добавленные в него изменения (в рабочей директории все изменения сохранятся), антипод git add
|
||||
|
||||
git reset readme.txt # убрать из индекса изменения указанного файла (в рабочей директории изменения сохранятся)
|
||||
|
||||
**Отмена изменений**
|
||||
|
||||
git checkout text.txt # ОПАСНО: отменить изменения в файле, вернуть состояние файла, имеющееся в индексе
|
||||
|
||||
git reset --hard # ОПАСНО: отменить изменения; вернуть то, что в коммите, на который указывает HEAD (незакомиченные изменения удалены из индекса и из рабочей директории, неотслеживаемые файлы останутся на месте)
|
||||
|
||||
git clean -df # удалить неотслеживаемые файлы и директории
|
||||
|
||||
**Коммиты**
|
||||
|
||||
git commit -m "Name of commit" # зафиксировать в коммите проиндексированные изменения (закоммитить), добавить сообщение
|
||||
|
||||
git commit -a -m "Name of commit" # проиндексировать отслеживаемые файлы (ТОЛЬКО отслеживаемые, но НЕ новые файлы) и закоммитить, добавить сообщение
|
||||
|
||||
**Отмена коммитов и перемещение по истории**
|
||||
|
||||
Все коммиты, которые уже были отправлены в удалённый репозиторий, должны отменяться новыми коммитами (git revert), дабы избежать проблем с историей разработки у других участников проекта.
|
||||
|
||||
git revert HEAD --no-edit # создать новый коммит, отменяющий изменения последнего коммита без запуска редактора сообщения
|
||||
|
||||
git revert b9533bb --no-edit # то же, но отменяются изменения, внесённые коммитом с указанным хешем (b9533bb)
|
||||
|
||||
Все команды, приведённые ниже можно выполнять ТОЛЬКО если коммиты еще не были отправлены в удалённый репозиторий.
|
||||
|
||||
***ВНИМАНИЕ! Опасные команды, можно потерять незакоммиченные изменения***
|
||||
|
||||
git commit --amend -m "Название" # «перекоммитить» изменения последнего коммита, заменить его новым коммитом с другим сообщением (сдвинуть текущую ветку на один коммит назад, сохранив рабочую директорию и индекс «как есть», создать новый коммит с данными из «отменяемого» коммита, но новым сообщением)
|
||||
|
||||
git reset --hard @~ # передвинуть HEAD (и ветку) на предыдущий коммит, рабочую директорию и индекс сделать такими, какими они были в момент предыдущего коммита
|
||||
|
||||
git reset --hard 75e2d51 # передвинуть HEAD (и ветку) на коммит с указанным хешем, рабочую директорию и индекс сделать такими, какими они были в момент указанного коммита
|
||||
|
||||
git reset --soft @~ # передвинуть HEAD (и ветку) на предыдущий коммит, но в рабочей директории и индексе оставить все изменения
|
||||
|
||||
git reset --soft @~2 # то же, но передвинуть HEAD (и ветку) на 2 коммита назад
|
||||
|
||||
git reset @~ # передвинуть HEAD (и ветку) на предыдущий коммит, рабочую директорию оставить как есть, индекс сделать таким, каким он был в момент предыдущего коммита (удобнее, чем git reset --soft @~, если индекс нужно задать заново)
|
||||
|
||||
Почти как git reset --hard, но безопаснее: не получится потерять изменения в рабочей директории
|
||||
|
||||
git reset --keep @~ # передвинуть HEAD (и ветку) на предыдущий коммит, сбросить индекс, но в рабочей директории оставить изменения, если возможно (если файл с изменениями между коммитами менялся, будет выдана ошибка и переключение не произойдёт)
|
||||
|
||||
**Временно переключиться на другой коммит**
|
||||
|
||||
git checkout b9533bb # переключиться на коммит с указанным хешем (переместить HEAD на указанный коммит, рабочую директорию вернуть к состоянию, на момент этого коммита)
|
||||
|
||||
git checkout master # переключиться на коммит, на который указывает master (переместить HEAD на коммит, на который указывает master, рабочую директорию вернуть к состоянию на момент этого коммита)
|
||||
|
||||
**Переключиться на другой коммит и продолжить работу с него**
|
||||
|
||||
Потребуется создание новой ветки, начинающейся с указанного коммита.
|
||||
|
||||
git checkout -b new-branch 5589877 # создать ветку new-branch, начинающуюся с коммита c хешем 5589877 (переместить HEAD на указанный коммит, рабочую директорию вернуть к состоянию, на момент этого коммита, создать указатель на этот коммит (ветку) с указанным именем)
|
||||
|
||||
**Восстановление изменений**
|
||||
|
||||
git checkout 5589877 index.html # восстановить в рабочей директории указанный файл на момент указанного коммита (и добавить это изменение в индекс) (git reset index.html для удаления из индекса, но сохранения изменений в файле)
|
||||
|
||||
**Копирование коммита (перенос коммитов)**
|
||||
|
||||
git cherry-pick 5589877 # скопировать на активную ветку изменения из указанного коммита, закоммитить эти изменения
|
||||
|
||||
git cherry-pick master~2..master # скопировать на активную ветку изменения из master (2 последних коммита)
|
||||
|
||||
git cherry-pick -n 5589877 # скопировать на активную ветку изменения из указанного коммита, но НЕ КОММИТИТЬ (подразумевается, что мы сами потом закоммитим)
|
||||
|
||||
git cherry-pick master..feature # скопировать на активную ветку изменения из всех коммитов ветки feature с момента её расхождения с master (похоже на слияние веток, но это копирование изменений, а не слияние), закоммитить эти изменения; это может вызвать конфликт
|
||||
|
||||
git cherry-pick --abort # прервать конфликтный перенос коммитов
|
||||
|
||||
git cherry-pick --continue # продолжить конфликтный перенос коммитов (сработает только после решения конфликта)
|
||||
|
||||
**Удаление файла**
|
||||
|
||||
git rm text.txt # удалить отслеживаемый неизменённый файл и проиндексировать это изменение
|
||||
|
||||
git rm -f text.txt # удалить отслеживаемый изменённый файл и проиндексировать это изменение
|
||||
|
||||
git rm -r log/ # удалить всё содержимое отслеживаемой директории log/ и проиндексировать это изменение
|
||||
|
||||
git rm ind* # удалить все отслеживаемые файлы с именем, начинающимся на «ind» в текущей директории и проиндексировать это изменение
|
||||
|
||||
git rm --cached readme.txt # удалить из отслеживаемых индексированный файл (ФАЙЛ ОСТАНЕТСЯ НА МЕСТЕ) (часто используется для нечаянно добавленных в отслеживаемые файлов)
|
||||
|
||||
**Перемещение/переименование файлов**
|
||||
|
||||
Для git не существует переименования. Переименование воспринимается как удаление старого файла и создание нового. Факт переименования может быть определен только после индексации изменения.
|
||||
|
||||
git mv text.txt test_new.txt # переименовать файл «text.txt» в «test_new.txt» и проиндексировать это изменение
|
||||
|
||||
git mv readme_new.md folder/ # переместить файл readme_new.md в директорию folder/ (должна существовать) и проиндексировать это изменение
|
||||
|
||||
**История коммитов**
|
||||
|
||||
Выход из длинного лога вывода: q.
|
||||
|
||||
git log master # показать коммиты в указанной ветке
|
||||
|
||||
git log -2 # показать последние 2 коммита в активной ветке
|
||||
|
||||
git log -2 --stat # показать последние 2 коммита и статистику внесенных ими изменений
|
||||
|
||||
git log -p -22 # показать последние 22 коммита и внесенную ими разницу на уровне строк
|
||||
|
||||
git log --graph -10 # показать последние 10 коммитов с ASCII-представлением ветвления
|
||||
|
||||
git log --since=2.weeks # показать коммиты за последние 2 недели
|
||||
|
||||
git log --after '2018-06-30' # показать коммиты, сделанные после указанной даты
|
||||
|
||||
git log index.html # показать историю изменений файла index.html (только коммиты)
|
||||
|
||||
git log -5 index.html # показать историю изменений файла index.html, последние 5 коммитов (только коммиты)
|
||||
|
||||
git log -p index.html # показать историю изменений файла index.html (коммиты и изменения)
|
||||
|
||||
git log -G'myFunction' -p # показать все коммиты, в которых менялись строки с myFunction (в кавычках регулярное выражение)
|
||||
|
||||
git log -L '/<head>/','/<\/head>/':index.html # показать изменения от указанного до указанного регулярных выражений в указанном файле
|
||||
|
||||
git log --grep fix # показать коммиты, в описании которых есть буквосочетание fix (регистрозависимо, только коммиты текущей ветки)
|
||||
|
||||
git log --grep fix -i # показать коммиты, в описании которых есть буквосочетание fix (регистроНЕзависимо, только коммиты текущей ветки)
|
||||
|
||||
git log --grep 'fix(ing|me)' -P # показать коммиты, в описании которых есть совпадения для регулярного выражения (только коммиты текущей ветки)
|
||||
|
||||
git log --pretty=format:"%h - %an, %ar : %s" -4 # показать последние 4 коммита с форматированием выводимых данных
|
||||
|
||||
git log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short # мой формат вывода, висящий на алиасе оболочки
|
||||
|
||||
git log master..branch_99 # показать коммиты из ветки branch_99, которые не влиты в master
|
||||
|
||||
git log branch_99..master # показать коммиты из ветки master, которые не влиты в branch_99
|
||||
|
||||
git log master...branch_99 --boundary -- graph # показать коммиты из указанных веток, начиная с их расхождения (коммит расхождения будет показан)
|
||||
|
||||
git show 60d6582 # показать изменения из коммита с указанным хешем
|
||||
|
||||
git show HEAD~ # показать данные о предыдущем коммите в активной ветке
|
||||
|
||||
git show @~ # аналогично предыдущему
|
||||
|
||||
git show HEAD~3 # показать данные о коммите, который был 3 коммита назад
|
||||
|
||||
git show my_branch~2 # показать данные о коммите, который был 2 коммита назад в указанной ветке
|
||||
|
||||
git show @~:index.html # показать контент указанного файла на момент предыдущего (от HEAD) коммита
|
||||
|
||||
git show :/"подвал" # показать самый новый коммит, в описании которого есть указанное слово (из любой ветки)
|
||||
|
||||
**Кто написал строку**
|
||||
|
||||
git blame README.md --date=short -L 5,8 # показать строки 5-8 указанного файла и коммиты, в которых строки были добавлены
|
||||
|
||||
История изменений указателей (веток, HEAD)
|
||||
|
||||
git reflog -20 # показать последние 20 изменений положения указателя HEAD
|
||||
|
||||
git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)' -20 # то же, но с указанием давности действий
|
||||
|
||||
**Ветки**
|
||||
|
||||
git branch # показать список веток
|
||||
|
||||
git branch -v # показать список веток и последний коммит в каждой
|
||||
|
||||
git branch new_branch # создать новую ветку с указанным именем на текущем коммите
|
||||
|
||||
git branch new_branch 5589877 # создать новую ветку с указанным именем на указанном коммите
|
||||
|
||||
git branch -f master 5589877 # переместить ветку master на указанный коммит
|
||||
|
||||
git branch -f master master~2 # переместить ветку master на 2 коммита назад
|
||||
|
||||
git checkout new_branch # перейти в указанную ветку
|
||||
|
||||
git checkout -b new_branch # создать новую ветку с указанным именем и перейти в неё
|
||||
|
||||
git checkout -B master 5589877 # переместить ветку с указанным именем на указанный коммит и перейти в неё
|
||||
|
||||
git merge hotfix # влить в ветку, в которой находимся, данные из ветки hotfix
|
||||
|
||||
git merge hotfix -m "Горячая правка" # влить в ветку, в которой находимся, данные из ветки hotfix (указано сообщение коммита слияния)
|
||||
|
||||
git merge hotfix --log # влить в ветку, в которой находимся, данные из ветки hotfix, показать редактор описания коммита, добавить в него сообщения вливаемых коммитов
|
||||
|
||||
git merge hotfix --no-ff # влить в ветку, в которой находимся, данные из ветки hotfix, запретить простой сдвиг указателя, изменения из hotfix «останутся» в ней, а в активной ветке появится только коммит слияния
|
||||
|
||||
git branch -d hotfix # удалить ветку hotfix (используется, если её изменения уже влиты в главную ветку)
|
||||
|
||||
git branch --merged # показать ветки, уже слитые с активной
|
||||
|
||||
git branch --no-merged # показать ветки, не слитые с активной
|
||||
|
||||
git branch -a # показать все имеющиеся ветки (в т.ч. на удаленных репозиториях)
|
||||
|
||||
git branch -m old_branch_name new_branch_name # переименовать локально ветку old_branch_name в new_branch_name
|
||||
|
||||
git branch -m new_branch_name # переименовать локально ТЕКУЩУЮ ветку в new_branch_name
|
||||
|
||||
git push origin :old_branch_name new_branch_name # применить переименование в удаленном репозитории
|
||||
|
||||
git branch --unset-upstream # завершить процесс переименования
|
||||
|
||||
**Теги**
|
||||
|
||||
git tag v1.0.0 # создать тег с указанным именем на коммите, на который указывает HEAD
|
||||
|
||||
git tag -a -m 'В продакшен!' v1.0.1 master # создать тег с описанием на том коммите, на который смотрит ветка master
|
||||
|
||||
git tag -d v1.0.0 # удалить тег с указанным именем(ами)
|
||||
|
||||
git tag -n # показать все теги, и по 1 строке сообщения коммитов, на которые они указывают
|
||||
|
||||
git tag -n -l 'v1.*' # показать все теги, которые начинаются с 'v1.*'
|
||||
|
||||
**Временное сохранение изменений без коммита**
|
||||
|
||||
git stash # временно сохранить незакоммиченные изменения и убрать их из рабочей д
|
||||
иректории
|
||||
|
||||
git stash pop # вернуть сохраненные командой git stash изменения в рабочую директорию
|
||||
|
||||
**Удалённые репозитории**
|
||||
|
||||
*Есть два распространённых способа привязать удалённый репозиторий к локальному: по HTTPS и по SSH. Если SSH у вас не настроен (или вы не знаете что это), привязывайте удалённый репозиторий по HTTPS (адрес привязываемого репозитория должен начинаться с https://).*
|
||||
|
||||
git remote -v # показать список удалённых репозиториев, связанных с локальным
|
||||
|
||||
git remote remove origin # убрать привязку удалённого репозитория с сокр. именем origin
|
||||
|
||||
git remote add origin https://github.com:nicothin/test.git # добавить удалённый репозиторий (с сокр. именем origin) с указанным URL
|
||||
|
||||
git remote rm origin # удалить привязку удалённого репозитория
|
||||
|
||||
git remote show origin # получить данные об удалённом репозитории с сокращенным именем origin
|
||||
|
||||
git fetch origin # скачать все ветки с удаленного репозитория (с сокр. именем origin), но не сливать со своими ветками
|
||||
|
||||
git fetch origin master # то же, но скачивается только указанная ветка
|
||||
|
||||
git checkout --track origin/github_branch # создать локальную ветку github_branch (данные взять из удалённого репозитория с сокр. именем origin, ветка github_branch) и переключиться на неё
|
||||
|
||||
git push origin master # отправить в удалённый репозиторий (с сокр. именем origin) данные своей ветки master
|
||||
|
||||
git pull origin # влить изменения с удалённого репозитория (все ветки)
|
||||
|
||||
git pull origin master # влить изменения с удалённого репозитория (только указанная ветка)
|
||||
|
||||
**Конфликт слияния**
|
||||
|
||||
*Предполагается ситуация: есть ветка master и есть ветка feature. В обеих ветках есть коммиты, сделанные после расхождения веток. В ветку master пытаемся влить ветку feature (git merge feature), получаем конфликт, т.к. в обеих ветках есть изменения одной и той же строки в файле index.html.*
|
||||
|
||||
*При возникновении конфликта, репозиторий находится в состоянии прерванного слияния. Нужно оставить в конфликтующих местах файлов только нужный код, проиндексировать изменения и закоммитить.*
|
||||
|
||||
git merge feature # влить в активную ветку изменения из ветки feature
|
||||
|
||||
git merge-base master feature # показать хеш последнего общего коммита для двух указанных веток
|
||||
|
||||
git checkout --ours index.html # оставить в конфликтном файле (index.html) состояние ветки, В КОТОРУЮ мы вливаем (в примере — из ветки master)
|
||||
|
||||
git checkout --theirs index.html # оставить в конфликтном файле (index.html) состояние ветки, ИЗ КОТОРОЙ мы вливаем (в примере — из ветки feature)
|
||||
|
||||
git checkout --merge index.html # показать в конфликтном файле (index.html) сравнение содержимого сливаемых веток (для ручного редактирования)
|
||||
|
||||
git checkout --conflict=diff3 --merge index.html # показать в конфликтном файле (index.html) сравнение содержимого сливаемых веток плюс то, что было в месте конфликта в коммите, на котором разошлись сливаемые ветки
|
||||
|
||||
git reset --hard # прекратить это прерванное слияние, вернуть рабочую директорию и индекс как было в момент коммита, на который указывает HEAD, а я пойду немного поплачу
|
||||
|
||||
git reset --merge # прекратить это прерванное слияние, но оставить изменения, не закоммиченные до слияния (для случая, когда слияние делается не на чистом статусе)
|
||||
|
||||
git reset --abort # то же, что и строкой выше
|
||||
|
||||
**«Перенос» ветки**
|
||||
|
||||
*Можно «переместить» ответвление какой-либо ветки от основной на произвольный коммит. Это нужно для того, чтобы в «переносимой» ветке появились какие-либо изменения, внесённые в основной ветке (уже после ответвления переносимой).*
|
||||
|
||||
*Нельзя «переносить» ветку, если она уже отправлена на удалённый репозиторий.*
|
||||
|
||||
git rebase master # перенести все коммиты (создать их копии) активной ветки так, будто активная ветка ответвилась от master на нынешней вершине master (часто вызывает конфликты)
|
||||
|
||||
git rebase --onto master feature # перенести коммиты активной ветки на master, начиная с того места, в котором активная ветка отделилась от ветки feature
|
||||
|
||||
git rebase --abort # прервать конфликтный rebase, вернуть рабочую директорию и индекс к состоянию до начала rebase
|
||||
|
||||
git rebase --continue # продолжить конфликтный rebase (сработает только после разрешения конфликта и индексации такого разрешения)
|
||||
|
||||
**Как отменить rebase**
|
||||
|
||||
git reflog feature -2 # смотрим лог перемещений ветки, которой делали rebase (в этом примере — feature), видим последний коммит ПЕРЕД rebase, на него и нужно перенести указатель ветки
|
||||
|
||||
git reset --hard feature@{1} # переместить указатель ветки feature на один коммит назад, обновить рабочую директорию и индекс
|
||||
|
||||
**Разное**
|
||||
|
||||
git archive -o ./project.zip HEAD # создать архив с файловой структурой проекта по указанному пути (состояние репозитория, соответствующее указателю HEAD)
|
||||
|
||||
## **КОНЕЦ**
|
||||
@@ -1,151 +0,0 @@
|
||||
## Базовые команды GIT'а
|
||||
|
||||
|
||||
* *git init* -
|
||||
данная команда `инициализирует локальный репозиторий`
|
||||
|
||||
* *git add* -
|
||||
данная команда `сохраняет изменения, которые войдут в коммит`
|
||||
|
||||
* *git status* -
|
||||
команда позволяет `проверить статус`
|
||||
|
||||
* *git version* -
|
||||
команада, которая отображает `текущую версию Git`
|
||||
|
||||
* *git commit* -
|
||||
команда, которая `фиксирует изменения`
|
||||
|
||||
Команда, которая создает сообщение для коммита:
|
||||
|
||||
git commit -m
|
||||
Команда которая позволяет внести изменения в последний коммит:
|
||||
|
||||
git commit --amend
|
||||
|
||||
Команда которая позволяет переименовать название последнего коммита
|
||||
|
||||
git commit --amend -m
|
||||
|
||||
* *git checkout* -
|
||||
команда, которая позволяет `переходить от одной версии к другой`
|
||||
|
||||
* *git diff* -
|
||||
команда, позволяющая посмотреть `различия между коммитами`
|
||||
|
||||
* *git log* -
|
||||
команда, позволяющая просмотреть `информацию по коммитам`
|
||||
|
||||
## **Работа по созданию веток**
|
||||
|
||||
Для просмотра текущей ветки используется команда:
|
||||
|
||||
git branch
|
||||
|
||||
* ### Добавление новой ветки
|
||||
|
||||
Для добавления ветки сипользуется следующая команда:
|
||||
|
||||
git branch branch_name
|
||||
|
||||
где **"branch_name"** - название создаваемой ветки
|
||||
|
||||
|
||||
* ### Переход между ветками
|
||||
|
||||
Для перехода между ветками используется следующая команда:
|
||||
|
||||
git checkout branch_name
|
||||
где **"branch_name"** - название ветки, в которую осуществляется переход
|
||||
|
||||
* ### Слияние веток
|
||||
|
||||
Для слияния веток необходимо ввести следующую команду:
|
||||
|
||||
git merge branch_name
|
||||
|
||||
где **"branch_name"** - название ветки, информация из которой будет загружена в ту ветку, в которой находимся в данный момент
|
||||
|
||||
## Удаление ветки
|
||||
|
||||
Для удаления ветки используют следующую команду:
|
||||
|
||||
git branch -d branch_name
|
||||
|
||||
где **"branch_name"** - название удаляемой ветки
|
||||
|
||||
*Внимание!* Перед удалением ветки необходимо убедиться, что данные из нее сохранены.
|
||||
|
||||
|
||||
## Возникновение конфликтов при слиянии веток
|
||||
|
||||
При слиянии веток информация из сливаемой ветки дополняет информацию основной ветки. Однако бывают случаи, когда информация из основной ветки и информация из сливаемой ветки содержит *противоречия*.
|
||||
|
||||
В таком случае в среде vs code возможны 3 варианта разрешения конфликта:
|
||||
|
||||
* оставить в основной ветке ее версию данных;
|
||||
|
||||
* заменить данные основной ветки на данные вливаемой ветки:
|
||||
|
||||
* оставить оба варианта для возможности вручную отредактировать данные.
|
||||
|
||||
## Удаление файлов из репозитория
|
||||
|
||||
Для удаления файла из репозитория используют следующую команду:
|
||||
|
||||
git rm file_name
|
||||
|
||||
где **"file_name"** - название файла, который следует удалить
|
||||
|
||||
## Переименование файлов
|
||||
|
||||
Для того чтобы переименовать файл в репозитории, необходимо ввыести следующую команду:
|
||||
|
||||
git mv file_name new_file_name
|
||||
|
||||
где **"file_name"** - текущее наименование файла, а **"new_file_name"** - измененное наименование файла
|
||||
|
||||
## Работа с удаленными репозиториями
|
||||
|
||||
Для того чтобы просмотреть все удаленные репозитории, которые связаны с локальным, выводят следующую команду:
|
||||
|
||||
git remote -v
|
||||
|
||||
Для того чтобы добавить удаленный репозиторий, необходимо ввести команду с указанием адреса удаленного репозиторя:
|
||||
|
||||
git remote add origin https://github.com/AlexL4v/test.git
|
||||
|
||||
Для того чтобы удалить привязку к удаленному репозиторию, выводят следующую команду:
|
||||
|
||||
git remote remove origin
|
||||
|
||||
Для того чтобы переименовать удаленный репозиторий, необходимо ввести следующую команду:
|
||||
|
||||
git remote rename name new_name
|
||||
|
||||
Для того чтобы отправить изменения из локального репозитория в удаленный используют следующую команду:
|
||||
|
||||
git push origin master
|
||||
|
||||
где **"origin"** - имя репозитория, **"master"** - имя сливаемой ветки
|
||||
|
||||
Для того чтобы загрузить изменения с удаленного репозитория, вводят команду:
|
||||
|
||||
git pull origin
|
||||
|
||||
Для того чтобы загрузить изменения из конкретной ветки удаленного репозитория вводят команду:
|
||||
|
||||
git pull origin name_branch
|
||||
|
||||
где **"name_branch"** -имя ветки уделенного репозитория
|
||||
|
||||
Для того чтобы загрузить копию удаленного репозиторию вводят команду с указанием адреса удаленного репозиторя:
|
||||
|
||||
git clone https://github.com/AlexL4v/test.git
|
||||
|
||||
Для того чтобы получить данные из ветки заданного репозитория, но не сливать изменения, выводят команду:
|
||||
|
||||
git fetch origin name_branch
|
||||
|
||||
где **"origin"** - имя репозитория, **"master"** - имя сливаемой ветки
|
||||
|
||||
@@ -1,255 +0,0 @@
|
||||
#
|
||||
# **Особенности синтаксиса Markdown**
|
||||
|
||||
Абзацы создаются при помощи пустой строки. Если вокруг текста сверху и снизу есть пустые строки, то текст превращается в абзац.
|
||||
|
||||
Чтобы сделать перенос строки вместо абзаца, нужно поставить два пробела в конце предыдущей строки.
|
||||
|
||||
#
|
||||
|
||||
# *__Заголовки (h1)__*
|
||||
## заголовки (h2)
|
||||
### заголовки (h3)
|
||||
#### заголовки (h4)
|
||||
##### заголовки (h5)
|
||||
###### заголовки (h6)
|
||||
|
||||
#
|
||||
|
||||
# *__Списки__*
|
||||
|
||||
Для разметки неупорядоченных списков можно использовать `*` или `-` или `+`:
|
||||
|
||||
- элемент 1
|
||||
- элемент 2
|
||||
|
||||
Вложенные пункты создаются четырьмя пробелами (или tab):
|
||||
* элемент 1
|
||||
* элемент 2
|
||||
* вложенный элемент 2.1
|
||||
* вложенный элемент 2.2
|
||||
|
||||
Упорядоченный список:
|
||||
|
||||
1. элемент 1
|
||||
2. элемент 2
|
||||
1. вложенный 2.1
|
||||
2. вложенный 2.2
|
||||
|
||||
Список с абзацами (четыре пробела или один tab):
|
||||
|
||||
* Раз абзац.
|
||||
|
||||
* Два абзац.
|
||||
|
||||
* Три абзац.
|
||||
|
||||
#
|
||||
|
||||
# *__Цитаты__*
|
||||
|
||||
Цитаты оформляются как в емейлах, спомощью символа `>`.
|
||||
|
||||
Например:
|
||||
> Первая цитата
|
||||
|
||||
> Вторая цитата
|
||||
|
||||
> Третья цитата
|
||||
|
||||
Строки циатат можно объединять символом `>`.
|
||||
|
||||
> Первая строка цитаты,
|
||||
>
|
||||
> вторая строка цитаты,
|
||||
>
|
||||
> третья строка цитаты.
|
||||
|
||||
В цитаты можно помещать любые элементы, в том числе и вложенные цитаты:
|
||||
|
||||
> ## **Заголовок цитаты**
|
||||
>
|
||||
> 1. Первая строка
|
||||
> 2. Вторая строка
|
||||
>
|
||||
> > Вложенная цитата
|
||||
>
|
||||
> Вот пример кода...
|
||||
>
|
||||
> Конец цитаты
|
||||
|
||||
#
|
||||
|
||||
# *__Исходный код__*
|
||||
|
||||
В чистом Маркдауне блоки кода отбиваются 4 пробелами (или tab) в начале каждой строки.
|
||||
|
||||
Но в GitHub-Flavored Markdown (сокращенно GFM) есть более удобный способ: ставим по три апострофа до и после кода. Также можно указать язык исходного кода.
|
||||
|
||||
Пример:
|
||||
|
||||
```html
|
||||
<nav class="nav nav-primary">
|
||||
<ul>
|
||||
<li class="tab-conversation active">
|
||||
<a href="#" data-role="post-count" class="publisher-nav-color" data-nav="conversation">
|
||||
<span class="comment-count">0 комментариев</span>
|
||||
<span class="comment-count-placeholder">Комментарии</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="dropdown user-menu" data-role="logout">
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="dropdown-toggle-wrapper">
|
||||
<span>
|
||||
Войти
|
||||
</span>
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
```
|
||||
|
||||
В таком случае в коде не нужно заменять угловые скобки `< >` и амперсанд `&` на их html-сущности.
|
||||
|
||||
#
|
||||
|
||||
# *__Инлайн код__*
|
||||
|
||||
Для вставки кода внутри внутри предложений нужно заключать этот код в апострофы.
|
||||
|
||||
Пример: `<html class="ie no-js">`
|
||||
|
||||
Если внутри кода есть апостроф, то код необходимо обрамить двойными апострафами: ``There is a literal backtick (`) here.``
|
||||
|
||||
#
|
||||
|
||||
# *__Горизонтальная черта__*
|
||||
|
||||
`hr` создается тремя звездочками или тремя дефисами.
|
||||
|
||||
Пример:
|
||||
|
||||
***
|
||||
|
||||
---
|
||||
|
||||
#
|
||||
|
||||
# *__Ссылки__*
|
||||
|
||||
Это встроенная [ссылка с title элементом](http://gb.ru "Ссылка для обучения").
|
||||
|
||||
Это - [без title элемента](http://gb.ru)
|
||||
|
||||
А вот [пример][1] [нескольких][2] [ссылок][id] с разметкой как у сносок. Прокатит и [короткая запись][] без указания id.
|
||||
|
||||
[1]: https://gb.ru "Главная страница"
|
||||
[2]: https://gb.ru/education
|
||||
[id]: https://gb.ru/events (Мероприятия)
|
||||
|
||||
[короткая запись]: https://gb.ru/events
|
||||
|
||||
Вынос длинных урлов из предложения способствует сохранению читабельности исходника. Сноски можно располагать в любом месте документа.
|
||||
|
||||
#
|
||||
|
||||
# *__Выделения текста__*
|
||||
|
||||
Выделять слова можно при помощи `*` и `_`. Один символ - для наклонного текста, два символа - для жирного текста, три символа - для наклонного и жирного одновременно.
|
||||
|
||||
Например:
|
||||
|
||||
_наклонный_ и *наклонный*
|
||||
|
||||
__жирный__ и **жирный**
|
||||
|
||||
***жирный и наклонный***
|
||||
|
||||
#
|
||||
|
||||
# *__Зачеркивание текста__*
|
||||
|
||||
В GFM добавлено зачеркивание текста: две тильды `~` до и после текста.
|
||||
|
||||
Например:
|
||||
~~Зачеркнуть~~
|
||||
|
||||
#
|
||||
|
||||
# *__Добавление изображений__*
|
||||
|
||||
Чтобы добавить изображение ___без `Alt` текста___ нобходимо использовать следующую команду:
|
||||
|
||||
``````
|
||||
|
||||
Например:
|
||||
|
||||

|
||||
|
||||
___Картина с Alt и тайтлом___ добавляется следующей командой:
|
||||
|
||||

|
||||
|
||||
Запомнить просто: синтаксис как у ссылок, только перед открывающей квадратной скобкой ставится восклицательный знак.
|
||||
|
||||
___Картинки "сноски"___ добавляются следующим способом:
|
||||
|
||||
![Картинка][image_3]
|
||||
|
||||
[image_3]: image_3.png
|
||||
|
||||
___Картинки-ссылки___ добавляются следующей командой:
|
||||
|
||||
```[](http://адрес ресурса)```
|
||||
|
||||
#
|
||||
|
||||
# *__Использование HTML внутри Markdown__*
|
||||
|
||||
Можно смешивать Markdown и HTML. Если на какие-то элементы необходимо поставить классы или атрибуты, то смело используем HTML:
|
||||
|
||||
> Выделять слова можно при помощи * и _ . Например, это <em class="a1">italic</em> и это тоже <i class="a1">italic</i>. А вот так уже <b>strong</b>, и так тоже <strong>strong</strong>.
|
||||
|
||||
Можно и наоборот, внутри HTML-тегов использовать Markdown.
|
||||
|
||||
<section class="someclass">
|
||||
|
||||
### Пример Маркдауна внутри HTML
|
||||
|
||||
Выделять слова можно при помощи `*` и `_` . Например, это _italic_ и это тоже *italic*. А вот так уже __strong__, и так тоже **strong**.
|
||||
|
||||
</section>
|
||||
|
||||
#
|
||||
|
||||
# *__Работа с таблицами__*
|
||||
|
||||
В чистом Markdawn нет синтаксиса для таблиц, а в GFM есть.
|
||||
|
||||
First Header | Second Header
|
||||
-------------|--------------
|
||||
Content Cell | Content Cell
|
||||
Content Cell | Content Cell
|
||||
|
||||
Для красоты можно и по бокам линии нарисовать, но суть от этого не поменяется:
|
||||
|
||||
| First Header | Second Header |
|
||||
| -------------|-------------- |
|
||||
| Content Cell | Content Cell |
|
||||
| Content Cell | Content Cell |
|
||||
|
||||
__Для выравнивания столбцов можно использовать двоеточие:__
|
||||
|
||||
| Left-Aligned | Center Aligned | Right Aligned |
|
||||
|:------------- |:---------------:| -------------:|
|
||||
| col 3 is | some wordy text | **$1600** |
|
||||
| col 2 is | centered | $12 |
|
||||
| zebra stripes | are neat | ~~$1~~ |
|
||||
|
||||
Внутри таблиц можно использовать ссылки, наклонный, жирный или зачеркнутый текст.
|
||||
|
||||
#
|
||||
|
||||
# **Для всего остального есть обычный HTML.**
|
||||
Reference in New Issue
Block a user