Skip to content
kmaximv edited this page Sep 28, 2016 · 6 revisions
Обновление всех веток с origin
git fetch origin
Подтянуть один коммит с другой ветки
git cherry-pick cba25366cbb8ed427ef82048e1b4b809b8cd906a

hint: after resolving the conflicts, mark the corrected paths

hint: with 'git add ' or 'git rm '

hint: and commit the result with 'git commit'

Переключиться на нужный коммит
git checkout commit
Как вернуться в самое свежее состояние?

без дополнительных параметров вернет вас в head ревизию.

git checkout
Показать все удаленные ветки

git branch --remotes

origin/HEAD -> origin/master
origin/library
origin/master
origin/stat_ip
Создать локально новую ветку

git checkout -b [имя локальной ветки]

Локальная ветка dev и ветка dev в репозитарии будут связаны между собой

git push --set-upstream origin dev

Или, что то же самое, но с сокращенным именем опции:

git push -u origin dev

После этой команды локальная ветка dev и ветка dev в репозитарии будут связаны между собой. То есть, после такой команды (короая выполняется единожды), можно будет отправлять/принимать изменения лишь выполняя git push из ветки без указания всяких алиасов для сервера и удалённых веток. Это сделано просто для удобства.

Вернуть состояние одного файла на момент определенного коммита

git checkout 3f25701874aa5a2c16cc6275fa30baa5b6e477a6 <имя_файла>

Посмотреть историю изменения одного файла

git log -p имя_файла

Показываеет изменения, внесенные указанным коммитом

git show <коммит>

Просмотреть сразу несколько коммитов

git log -p

Если вы хотите увидеть не весь лог, а только часть, вы также можете использовать числовую опцию, например -2, что ограничит вывод до 2-х последних записей:

git log -p -2

Просмотреть лог коммитов

git log --graph --color-words --color --source --decorate --all

git reset
git reset --hard

Ключ --hard означает, что мы теряем текущее состояние файлов и приобретаем состояние того коммита, куда был сделан reset.

Ключ --soft означает, что мы НЕ теряем текущее состояние проекта, но указатель на текущую ветку уже передвинут, т.е. git status нам выдаст разницу между текущим состоянием проекта (от которого мы сделали reset) и тем, на который мы сделали reset.

Отменить изменения, внесенные отдельным коммитом

Git revert создает новый коммит, накладывающий обратные изменения:

git revert config-modify-tag

отменяем коммит, помеченный тегом.

git revert 12abacd
Выбираем нужную ветку
git checkout master
Делаем откат изменений в репозитории на два коммита назад
git reset --hard HEAD~2

Можно сделать до какого то определенного коммита по хешу

git reset --hard HEAD hash

Хеш можно взять в вебинтерфейсе гитхаба.

Далее делаем принудительный коммит в основной репо на гитхабе

git push -f origin master

без -f будет ругаться что у вас версия младше чем в гитхабе и вам надо сделать pull

Скачать последние изменения репозитория, не удаляя локальные изменения
git stash save
git pull origin master
git stash pop
Исправить ошибку, если ещё не запушили изменения в удалённую ветку

Исправьте ошибку. Добавьте изменения в список файлов, подготовленных для коммита:

git add some-fixed-file.js

Добавьте эти последние изменения в самый последний коммит. Вы так же сможете отредактировать примечание к коммиту.

git commit --amend

Когда всё будет готово, вы можете запушить ветку в удалённый репозиторий.

Clone this wiki locally