Как залить проект на Github

Инициализируем проект в папке с проектом

git init

Индексируем все файлы

git add your_file

Добавляем коммит

git commit -m "first commit"

Изменяем последний коммит (не делали push)

git commit --amend -m "исправленный текст"

Добавляем репозиторий

git remote add origin https://github.com/you_repository/you_project

Выгружаем в репозиторий origin в ветку master

git push -u origin master

Добавление ветки

Новую ветку назовем newbranch

добавить ветку

git checkout -b newbranch

посмотреть ветки и какая текущая

git branch

перейти в другую ветку

git checkout master

слить ветки в одну

git merge nevbranch

 

При мерже открывается редактор vim для ввода коммита
нажмите i для редактирования
Esс для отмены редактирования
:w для сохранения изменений
:q для выхода

 

Обновить текущую ветку репозитория до состояния удалённой текущей ветки репозитория

Закачать с репозитория origin ветку mybranch

git pull origin mybranch

 

Git перенос коммита из одной ветки в другую

В ситуации, когда возникает необходимость перенести commit из одной ветки в другую на помощь приходит команда git cherry-pick, применяющая к дереву проекта изменения, которые были внесены указанным каммитом.

Открываем нужную нам ветку

git checkout branchName

Смотрим коммиты

git log

Выписываем идентификаторы нужных нам коммитов.

Переходим в ветку, в которую нужно добавить коммиты (в примере это ветка master).

git checkout master

Переносим коммиты (в текущую ветку master)

git cherry-pick commitID

После этого можем посмотреть что у нас есть незапушеные коммиты

git status

Ну и запушить их (в нашу ветку master)

git push origin master

 

Вернуться на актуальную версию ветки master

git reset --hard origin/master

 

git rebase

git rebase — это «автоматизированный» cherry-pick. Он выполняет ту же работу, но для цепочки коммитов, тем самым как бы перенося ветку на новое место.

git revert

Команда git revert — полная противоположность git cherry-pick. Она создаёт «антикоммит» для указанного коммита, таким образом отменяя изменения, внесённые в нём.

master | REVERTING — означает что вы находитесь в режиме отката.

в этом случае есть несколько вариантов развития событий:

git revert --continue / --quit / --abort

—continue
Продолжить выполняемую операцию, используя информацию в .git / sequencecer. Может использоваться для продолжения после разрешения конфликтов в случае неудачного выбора или возврата.

—quit
Забыть о текущей операции. Может использоваться для очистки состояния секвенсора после неудачного выбора или возврата.

—abort
Отменить операцию и вернуться в состояние до последовательности.

 

Удаление ветки

Удалить Локальную Ветку
Чтобы удалить ветку из локального Git-репозитория, выполните:

git branch -d <имя_ветки>

Удалить Удаленную Ветку
Чтобы удалить ветку из удаленного Git-репозитория, выполните:

git push origin --delete <имя_ветки>

 

Для просмотра изменений одного файла, можно воспользоваться следующей командой:

Изменения по коммитам

git log -p FILE_NAME

Изменения до коммита

git diff FILE_NAME

 

Hard Reset

Самый жесткий вариант. Откатывает последние изменения. Если вы нигде их не зафиксировали, то потеряете. Использовать с осторожностью.

git reset --hard HEAD~1

Альтернативный вариант. Сброс до конкретного референса:

git reset --hard 2sf47sddss9fdsf345sdf33232bb1ae333d8aa

Затем принудительно отправляем на сервер:

git push --force origin <имя_ветки>

Но в этом случае мы рискуем перетереть чьи-нибудь изменения, если с тех пор, как мы забирали изменения с сервера, кто-то успел запушить свои коммиты. Поэтому лучше использовать более безопасную команду:

git push --force-with-lease origin <имя_ветки>

Такой вариант лучше тем, что если кто-то успел запушить свои коммиты после того, как мы забирали изменения с сервера, то он не будет их перетирать, а выдаст нам ошибку, после чего мы сможем интегрировать чужие коммиты со своими изменениями и попытаться сделать push —force-with-lease ещё раз.