Как залить проект на 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 ещё раз.