Повседневная работа с Git

Log
# Поиск по логу
git log --all --grep='Search text'

Stash

Если мы сделали какие-то изменения и нам нужно переключиться в другую ветку, а делать коммит рано, можно использовать <span class="kw2" style="box-sizing: border-box; color: rgb(194, 12, 185); font-weight: bold;">git stash</span> - команда прячет новые изменения и перемещает указатель HEAD

# Список stash-ей
git stash list
> stash@{0}: WIP on master: 049d078 added the index file
> stash@{1}: WIP on master: c264051... Revert "added file_size"

 

git stash apply либо конкретную 'заначку' git stash apply stash@{1}
# удаление заначки
git stash drop stash@{1}
# применение сразу с удалением
git stash pop

# Откат изменений (делает патч и зеркально накатывает его)
git stash show -p stash@{0} | git apply -R
git config --global alias.stash-unapply '!git stash show -p | git apply -R'

# Создание ветки из спрятанных изменений
git stash branch testchanges

Branch/Merge

# Создать локально ветку из удаленного репозитария и сделать ее отслеживаемой:
git checkout -b [ветка] [удал. сервер]/[ветка]  или git checkout --track [удал. сервер]/[ветка]
# Удаление веток на удалённом сервере:
git push [удал. сервер] :[ветка]
# Переименовать ветку
git branch -m <oldname> <newname>

 

# Для текущей ветки
git branch -m <newname>

# Слияние только одного коммита
git cherry-pick eb042098a5
# Решение конфликта выбором какую версию использовать
git checkout [--ours|--theirs] file.dat
git add file.dat
git commit -m "Merged conflict"

Теги

#Поставить тег:
git tag -a tag_name -m "Comment"

Переименовать тег:

# Изменяем имя локального тега
git tag new_tag_name old_tag_name 
# Удаляем тег
git tag -d old_tag_name

 

# Удаляем удаленный тег
git remote -v
# The argument (3rd) is your remote location,
# the one you can see with `git remote`. In this example: `origin`
git push origin :refs/tags/old_tag_name

# Добавляем удаленный тег
git push origin --tags - данная команда отправит все теги
git push origin new_tag_name - определенный тег

Сабмодули

# Добавить сабмодуль
git submodule add --branch 7.x-1.x git://git.drupal.org/project/match_redirect.git sites/all/modules/contrib/match_redirect

 

# Переименовать сабмодуль
git submodule deinit <submodule name>
git rm <submodule folder name>
git submodule add <address to remote git repo> <new folder name>

# Удалить (отредактировав) упоминание о модуле из .gitmodules;
# Удалить из .git/config;
git rm --cached <submodule_path>;
# Закомитить и удалить файлы модуля.

Алиасы

# Утилитой можно задать три уровня видимости:
# git config --system - для всех пользователей системы
# git config --global - для текущего пользователя
# git config - для текущего репозитария
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global alias.hist 'log --pretty=format:"%h %ad | %s%d an]" --graph --date=short'</span></div></div><div class="geshifilter" style="box-sizing: border-box; padding: 9.5px; margin: 0px 0px 10px; border: 1px solid rgb(204, 204, 204); color: rgb(51, 51, 51); line-height: 1.42857; overflow: auto; font-size: 13px; word-break: break-all; word-wrap: break-word; border-radius: 4px; font-family: &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;"><div class="bash geshifilter-bash" style="box-sizing: border-box; font-family: monospace;"><span class="co0" style="box-sizing: border-box; color: rgb(102, 102, 102); font-style: italic;"># Либо в файле .gitconfig</span><br style="box-sizing: border-box;" /><span class="br0" style="box-sizing: border-box; color: rgb(122, 8, 116); font-weight: bold;">[</span><span class="kw3" style="box-sizing: border-box; color: rgb(122, 8, 116); font-weight: bold;">alias</span><span class="br0" style="box-sizing: border-box; color: rgb(122, 8, 116); font-weight: bold;">]</span><br style="box-sizing: border-box;" />  <span class="kw2" style="box-sizing: border-box; color: rgb(194, 12, 185); font-weight: bold;">co</span> = checkout<br style="box-sizing: border-box;" />  ci = commit<br style="box-sizing: border-box;" />  st = status<br style="box-sizing: border-box;" />  br = branch<br style="box-sizing: border-box;" />  hist = log <span class="re5" style="box-sizing: border-box; color: rgb(102, 0, 51);">--pretty</span>=format:<span class="co3" style="box-sizing: border-box; color: rgb(0, 0, 0); font-weight: bold;">\"</span><span class="sy0" style="box-sizing: border-box; color: rgb(0, 0, 0); font-weight: bold;">%</span>h <span class="sy0" style="box-sizing: border-box; color: rgb(0, 0, 0); font-weight: bold;">%</span>ad <span class="sy0" style="box-sizing: border-box; color: rgb(0, 0, 0); font-weight: bold;">|</span> <span class="sy0" style="box-sizing: border-box; color: rgb(0, 0, 0); font-weight: bold;">%</span>s<span class="sy0" style="box-sizing: border-box; color: rgb(0, 0, 0); font-weight: bold;">%</span>d <span class="br0" style="box-sizing: border-box; color: rgb(122, 8, 116); font-weight: bold;">[</span><span class="sy0" style="box-sizing: border-box; color: rgb(0, 0, 0); font-weight: bold;">%</span>an<span class="br0" style="box-sizing: border-box; color: rgb(122, 8, 116); font-weight: bold;">]</span><span class="co3" style="box-sizing: border-box; color: rgb(0, 0, 0); font-weight: bold;">\"</span> <span class="re5" style="box-sizing: border-box; color: rgb(102, 0, 51);">--graph</span> <span class="re5" style="box-sizing: border-box; color: rgb(102, 0, 51);">--date</span>=short</div></div><p style="box-sizing: border-box; margin-top: 0px; margin-bottom: 10.5px; color: rgb(34, 34, 34); font-family: &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 15px;">Добавление shell алиаса в msysgit:</p><div class="geshifilter" style="box-sizing: border-box; padding: 9.5px; margin: 0px 0px 10px; border: 1px solid rgb(204, 204, 204); color: rgb(51, 51, 51); line-height: 1.42857; overflow: auto; font-size: 13px; word-break: break-all; word-wrap: break-word; border-radius: 4px; font-family: &quot;Open Sans&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;"><div class="bash geshifilter-bash" style="box-sizing: border-box; font-family: monospace;"><span class="co0" style="box-sizing: border-box; color: rgb(102, 102, 102); font-style: italic;"># Если нет файла .bashrc в папке пользователя создаем его</span><br style="box-sizing: border-box;" /><span class="kw3" style="box-sizing: border-box; color: rgb(122, 8, 116); font-weight: bold;">alias</span> <span class="re2" style="box-sizing: border-box; color: rgb(0, 120, 0);">go</span>=<span class="st_h" style="box-sizing: border-box; color: rgb(255, 0, 0);">'git checkout '</span><br style="box-sizing: border-box;" /><span class="kw3" style="box-sizing: border-box; color: rgb(122, 8, 116); font-weight: bold;">alias</span> <span class="re2" style="box-sizing: border-box; color: rgb(0, 120, 0);">cdm</span>=<span class="st_h" style="box-sizing: border-box; color: rgb(255, 0, 0);">'cd ../../../../..'</span> - смена директорий из сабмодуля</div></div><p>По материалам https://dsemenov.ru/blog/35 </p>
Теги: