Как начать и продолжить работать с Git.

R5AM, Александр Ящук, Москва, 2015г.
На главную

1.
Проинсталлировать Git во FreeBSD из портов devel/git, в Windows - скачать с git-scm.com/download/win или msysgit.github.com.
Во FreeBSD интерфейс будет русский, если настроена локаль, но комментарии лучше делать на английском, так как кодировка комментариев с локалью не совпадает (похоже на UTF). В Windows лучше выбрать работу не только в терминале Bash, но и в виндовс-терминале COMMAND.COM .
2.
git help <команда> - help по конкретной команде
3.
git config --global user.name "Вася Пупкин" - сконфигурировать имя для комментаиев в коммитах
git blame file-name.ext - посмотреть автора и время изменения каждой строки файла
git config --global user.email wasjapupkin@yandex.com - сконфигурировать мейл для комментаиев в коммитах
git config --list - просмотреть текущие настройки

Конфигурировать во ФрииБСД не обязательно - имя и почту Git возьмёт из системы.
В Windows, возможно, придётся поколдовать с окончаниями строк (LF и CR):
git config --global core.autocrlf true
git config --global core.safecrlf true

git config --global credential.helper cache - запомнить пароль и имя пользователя и не спрашивать 5 минут.
git config credential.helper 'cache --timeout=600' - установить время запоминания имени пользователя и пароля на 10 минут.
git config --global http.sslverify "false" - отказаться от проверки сертификата при вводе пароля и ошибке error: error setting certificate verify locations
Можно указать новый путь к сертификату:
git config --system http.sslcainfo путь_к_сертификату

В ответ на ошибку fatal: LF would be replaced by CRLF in... можно отключить проверку формата переноса строк в файлах:
git config --global core.autocrlf false
git config --global core.safecrlf false

Вывод Git в консоль можно раскрасить своими цветами. В домашней директории пользователя в файл .gitconfig добавить описание цветов:

    [color] 
        ui = auto 
    [color "status"] 
        added = green bold 
        changed = red bold 
        untracked = yellow bold
    [color "branch"]
        current = yellow reverse
        local = yellow
        remote = green
    [color "diff"]
        meta = yellow bold
        frag = magenta bold
        old = red bold
        new = green bold
    

Редактирование комментариев к коммитам в Notepad++:
4.
git init - создать репозиторий Git в текущей папке с вашим проектом, будет создана гитовская папка .git
5.
git add my-file-name - добавить файл или папку в индекс для последующего коммита
git add . - (в конце - точка) добавить все файлы из текущей папки с подкаталогами в индекс
git add '*.java' - добавить файлы по маске в индекс
6.
git status - посмотреть статусы файлов
git diff - посмотреть изменения (кем-то другим внесённые) после нашего последнего коммита
git diff --staged - посмотреть изменения, которые мы можем закоммитить на текущий момент относительно того, что уже было закоммичено
7.
git commit -m "Комментарий к commit-у" - закоммитить проиндексированные файлы в репозиторий, если не использовать ключ ‑m, то откроется редактор по умолчанию для добавления комментария
git commit --amend -m "New commit comment" - заменить комментарий в последнем коммите
git add forgot-file.ext; git commit --amend --no-edit - добавить в последний коммит забытый файл
git revert - отменить один или несколько существующих коммитов, создаются новые антикоммиты, накладывающие обратные изменения, необходимо, чтобы состояние проекта не отличалось от состояния, зафиксированного последним коммитом.
git revert config-modify-tag - отменить коммит, помеченный тегом config-modify-tag
git revert 12abacd - отмеить коммит, используя его хэш 12abacd
git cherry-pick 23adbc5 - взять изменения, внесённые коммитом 23adbc5, и попытаться применить их заново в виде нового коммита наверху текущей ветки. Это может оказаться полезным для того, чтобы забрать парочку коммитов из другой ветки без полного слияния с той веткой.
8.
git reset my-file-name - удалить файл из индекса
git rm my-file-name - удалить файл или папку из индекса и репозитория (после коммита)
git rm '*.c' - удалить по маске все Си файлы из репозитория (после коммита)
git rm -r my_dir/ - удалить рекурсивно всё из репозитория в директории my_dir
git checkout -- my-file-name - откатить файл до состояния в последнем коммите
git branch -d branch-name - удалить ветку в локальной рабочей копии (в индексе)
git push origin --delete remote_branch_name - удалить ветку на дальнем сервере репозитория (уточнять!!!)
9.
git remote add origin https://github.com/...../project.git - добавить дальний репозиторий с именем origin
git remote - посмотреть список дальних репозиториев
git remote -v - список дальних репозиториев с URL-ами
git remote remove origin - удалить дальний репозиторий origin из списка
git fetch origin - получить изменения из дальнего репозитория origin
git clone git://github.com/...../project.git или
git clone https://github.com/...../project.git - клонировать проект из дальнего репозитория в текущую папку
git pull origin master - скачать ветку master из дальнего репозитория origin и объединить с локальной веткой master (git fetch + git merge)
git fetch --all и затем git reset --hard origin/master (или git reset --hard origin/your_branch) - скачать всё из дальнего репозитория и перезаписать все локальные файлы (по сути - hard pull)
git push -u origin master - отправить ветку master в репозиторий origin после первого использования ключа ‑u можно просто говорить git push
10.
git branch - список локальных веток
git branch -v - список локальных веток с комментарием последнего коммита по каждой ветке
git branch -a - список всех веток - и локальных, и в репозитории
git remote show origin - список веток дальнего репозитория
git branch --no-merged - наработки, неслитые в текущую ветку
git branch new-branch - создать новую ветку "new-branch"
git checkout new-branch - переключиться на ветку "new-branch"
git checkout commit - переключиться на коммит, указанный в виде хеша (можно несколько начальных символов из хеша), имени коммита
git checkout -b new-branch - переключиться на ветку, а если её нет, то создать новую
git checkout - переключиться в самое свежее состояние, в ревизию HEAD
git merge branch-2 - влить в свою текущую ветку другую ветку branch-2
git rebase branch-2 - влить свою текущую ветку в другую ветку branch-2, свою ветку бросить
git branch -d branch-2 - удалить ветку branch-2
git branch -m old_branch new_branch - переименовать локальную ветку
11.
git stash - спрятать изменения, например, нужно сменить ветку, а коммитить пока не хочется
git stash list - список спрятанных изменений
git stash apply - применить последнее спрятанное изменение
git stash apply stash@{2} - применить одно из спрятанных изменений - stash@{2}
git stash drop stash@{0} - удалить спрятанное изменение stash@{0}
git stash clear - удалить безвозвратно все спрятанные изменения из хранилища
git stash pop - применить последнее спрятанное изменение и сразу же удалить его из хранилища
git stash; git stash branch <new_branch_name>; - вернуть текущую ветку (например, develop) в исходное состояние, сделать новую ветку на основе текущей и перенести весь сохранённый stash-ем код в новую ветку. Хранилище очищается.
12.
git log - просмотр списка изменений (история коммитов)
git log --pretty=oneline - однострочный лог каждого из коммитов
git log --pretty=oneline --max-count=2 - два последних коммита
git log --pretty=oneline --after='5 minutes ago' - ограниченые временем коммиты
git log --pretty=oneline --before='5 minutes ago'
git log --since=2.weeks
git log --all --pretty=format:"%h %cd %s (%an)" --since='7 days ago'
git log --pretty=oneline --author=autor-name - только определённого автора коммиты
git log --stat - статистика по файлам

Ключи для "log":
--pretty="..." - определяет формат вывода
%h - укороченный хэш коммита
%d - дополнения коммита ("головы" веток или теги)
%ad - дата коммита
%s - комментарий
%an - имя автора
--graph - отображает дерево коммитов в виде ASCII-графика
--date=short - короткий формат даты

Пример вывода дерева коммитов с цветовой раскраской, выделенными тегами, разноцветными ветками, показом местонахождения в проекте (HEAD):
git log --graph --color-words --color --source --decorate --all

Алиас для логов (будет коротко git hist, можно внести в .gitconfig):
git config --global alias.hist 'log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short'

Можно в файле .gitignore прописать маски игнорируемых файлов и директорий, которые не будут включаться в индекс, например *.o или back_dir/:

	*.class
	target/

	# Package Files #
	*.jar
	*.war
	*.ear

	# IDE
	.idea/
	*.iml
    




На главную
К началу страницы