Сумбурные заметки о Git

Данная заметка не является самоучителем или справочником Git. Здесь собраны наиболее часто используемые мной в повседневной работе Git команды. Либо описаны краткие решения проблем возникавших во время работы с Git.

Создать пустое хранилише

git init --bare

Создаем пустой репозиторий

git init project_name

Oтправляем все ветки в репозиторий

git push origin

Oтправляем в репозиторий только ветку master

git push origin master 

Добавить тег

git tag -a <имя_тега> -m '<коментарий>'

Отправить изменения в репозиторий с тегами

git push --tags

Отправить изменения только с одним тегом

git push  

Удалить тег

git tag -d 

Слить ветку без объединения

git merge --no-ff myfeature

Отобразить все ветки

git branch -a

Назначить редактор по умолчанию

git config --global --replace-all core.editor notepad

Получаем изменения во всех ветках

git pull origin

Получаем только из ветки master

git pull origin master

Получаем изменения из всех подмодулей

git submodule foreach git pull

Получаем все ветки, но не мерджим их в локальный репозиторий

git fetch origin

Аналогично, только для ветки master

git fetch origin master

Делаем какие-то изменения:

echo "# TODO LIST" > todo.md

Добавляем новый файл в репозиторий и делаем коммит с описанием:


git add todo.md
git commit -a -m "Added new file"

Отправляем изменения в репозиторий

git push origin

Отправляем только ветку master

git push origin master

Делаем изменение в проекте, для чего создаем новую ветку (хорошая практика):


git branch new_feature
git checkout new_feature

Если работа не принесла ожидаемых результатов возвращаемся к основной ветке:

git checkout master

Если результаты удовлетворяют, мерджим ветку в master: делаем коммит всех изменений в ветке new_feature


git commit -a
git checkout master
git merge new_feature

После чего можно удалить ветку new_feature:

git branch -d new_feature

Получаем все ветки, но не мерджим их в локальный репозиторий

git fetch origin

Aналогично, только для ветки master

git fetch origin master

Откат к конкретному коммиту:

Смотрим последнии изменения:

git log

История конкретного файла

git log todo.md

История с просмотром изменений для конкретного файла

git log -p todo.md

Смотрим кем в последний раз правился файл

git blame todo.md

Откат к конкретному коммиту (хэш узнаем в git log)

git reset --hard g45234kdf42534534c4365236344wfwrgh5k5

Аналогично предыдущему, но файлы на диске остаются без изменений

git reset --soft g45234kdf42534534c4365236344wfwrgh5k5

Попытаться обратить заданный коммит

git revert g45234kdf42534534c4365236344wfwrgh5k5

Просмотр изменений (подробности по git diff --help):

git diff

Разрешение конфликтов:

git mergetool

Личные ветки

git commit -a -m «work commit» && git push sandbox/{username]/{branchname}

Переименовать submodule


mv oldpath newpath
git rm oldpath
git add newpath
git submodule sync
View: 2802