Оглавление
Отключить закрытие окна коммитов после комита. 1
Откатить к последней ревизии. 1
Откатить к последней ревизии. Если файлы проекта были удалены. 1
Откатить к последней ревизии «спрятав» изменения. 1
Вернуть изменения из списка стешей. 1
Откатить к заданной ревизии. 1
Удалить изменения в зафиксированной ревизии. 1
Откатить бесследно изменения последней ревизии. 1
Если в логе ревизий случайно исчез мастер и не досчитываемся последних ревизий. 1
Удаление нескольких последних комитов. 1
Создание ветки с заданием имени. 1
Создание ветки с автоматическим неймингом. 1
Выбрать ветку для отображения. 1
Слияние веток без наличия конфликтов. 1
Поиск ревизии (пользователя) изменившего заданный кусок. 1
Не отслеживать изменения в файлах добавленных в git. 1
Описание меток, маркеров и цветов. 1
Сохранение настройка учетных данных. 1
Создать новый репозиторий залить файлы проекта на сервер. 1
Удалить репозиторий сервера. 1
Клонирование с сервера в локальную папку. 1
Комиты локальные и на сервере. 1
Затолкать на сервер. Вытянуть с сервера. Push, Pull. 1
Как связать локальный репозиторий с серверным. 1
Rebase. Временно сокрытие локальных изменений с последующим доставанием после апдейта. 1
При ежедневном использовании TortoiseGit лишние многократные рутинные операции не только вызывают трату времени, но и рассеивают внимание, а так же ухудшают настроение. Одна из достающих вещей - это необходимость открывать заново окно коммитов. И авторы клиента Tortoise прекрасно понимали проблему и потому сделали её решение в виде «сменяемой кнопки» Commit / ReCommit / Commit & Push. Если активировать кнопку в режиме ReComit окно коммита перестанет уничтожаться после коммита и будет экономить кучу времени при частых использованиях.
В самом начале работы с git-ом новичок не раз столкнется с ситуацией, что «все куда то исчезло» или «все поломалось и непонятно в каком состоянии, но так я не хочу». Лично у меня стресс усиливался из за привычки работать в TortoiseSVN. Там достаточно удалить весь локальный проект и сделать апдейт. Вот о том «как все вернуть» несколько глав ниже.
В этом случае локальное содержимое приведется к последней/текущей ревизии.
В окне коммита нажимаем на файле правой мышью — Revert
Все изменения появившиеся с начала последнего коммита пропадут.
Опционально может потребоваться - Clean up
Смысл команды - удалить все файлы не под контролем версий
Или от пустого места в проводнике.
Или от конкретного файла.
Файлы самого гита должны остаться в живых.
Сделать пункт выше «Откатить к последней ревизии.»
Работает для произвольной ревизии подобным же образом.
Это похоже на стиль работы в TortoiseSVN, где можно было удалять все локальные файлы проекта и затем update-ом приводить их к текущей ревизии.
Если нужно откатить до ближайшей ревизии, но терять изменения тоже не хочется - можно сделать следующее:
Встать на папке — Stash changes
Дать имя и ОК
Все незакоммиченные изменения исчезнут. Файлы станут зелеными соотв, последней ревизии.
Stash List можно посмотреть все наши ранее проведенные стеши.
Stash Pop вернет наши изменения, при этом из списка стеш удаляется.
Stash Upplay вернет наши изменения, при этом из списка ничего не исчезнет.
Открыть окно Log messages.
На ревизии Swich/Checout to this
Должен быть выбран Commit = та ревизия которую выбрали
Снять V с Create new branch
Жмем ОК. В результате выделение переедет на целевую ревизию и локальные файлы станут соответствовать ей.
Если галка All Branches не выставлена, то при обновлении или закрытии открытии окна истории последующие ревизии станут не видны
Если возникает ошибка
Можно попробовать
Поставить V Overwrite working tree changes (force)
После этого на выделенной ветке, даже после возврата к мастеру будет гореть Branch_XXXXXX
Вид в результате успешного отката должен быть следующий:
Выделение переедет на целевую ревизию.
Локальные файлы придут к виду целевой ревизии.
Будет гореть зеленый маркер — ревизия активная сейчас не является мастером.
Для дальнейшей работы сделать ее мастером. Иначе при коммите предупреждает что эта ревизия не «мастер».
Возврат к последней можно сделать сразу «Swich/Checout to master». Опций не предлагается.
Удаление тут производится совершением зеркального коммита. То есть это не будет бесследное изъятие из репозитория изменений вместе с записью о них, а скорее «нейтрализация» ревизии путем «нейтрализующего» коммита.
В истории правой мышью на коммите изменения которого требуется изъять.
Revert change by this commit + Ок
Изменения пока не попали в репозиторий и их нужно фиксировать
Делаем commit
В открывшемся окне уже вставлена информация о том что это возврат-очистка от изменений того самого коммита.
Revert создает по сути «зеркальный» коммит — коммит из антимира.
Правой мышью commit
Ament last commit
В окне можно откорректировать как сами изменения так и комментарии к ревизии.
Вариант 1.
На папке Switch/Checkout
Выставить Branch = master
ОК
Вариант 2
Можно не выходя из окна лога нажать на ревизию и Switch/Checkout to this, но как бы в последний момент передумать и
Передвинуть Commit – Branch
Выбрать Branch = master
OK
Вариант 3.
Открыть Tortoise GIT - Show reflog
Вычисляем мастера и жмем Swich/Checout to this по сути переход к ревизии.
Перейти на ветку где будем производить удаление.
Встать на коммит после которого нужно удалить все ревизии
Reset master to this
Сброс может происходить тремя способами
Hart. Ревизии пропадут бесследно.
Soft. Можно вернуть командной строкой но через историю не увидеть.
И еще третьим ;)
Ветвиться от главной ветки нужно для того чтобы вносить изменения не касающиеся основную ветку.
Маркер “Master” помечает главную ветку — ветку по умолчанию, а именно последнюю по времени ревизию ветки. Точно такая же логика работы других плашек, тех веток которые создает пользователь.
Правая мышь — Create Branch
В истории выделить ревизию от которой нужно ответвиться
Creat branch at this revision
Все это можно делать при активных изменениях в локальных файлах которые хотим включить в ветку
Переключиться в любую промежуточную ревизию Switch / Checkout to this, оставив активным флаг «Create next branch».
Возникнет новая ветка с автоматически сгенерированным названием. Ветка активна и все изменения будут коммититься в неё.
В истории нажать в левом верхнем углу название текущей ветки.
В открывшемся Browse References переключиться в нужную ветку
Отфильтруются другие ветки и будет показана только цепочка целевой ветки.
Внимание! Коммиты могут улетать в другую ветку.
Альтернатива: если в окне Log Messages выставить галку All Branches. будут показывается все ветки одновременно.
Через Switch/Checkout мы переключаемся в нужную ветку и это будет значить что все коммиты будут проводиться для этой ветки
Если в локальных файлах есть изменения, они останутся и их можно включить коммитом в ветку в которую переехали.
Через левую верхнюю ссылку в истории мы переключаем отображение, но коммиты при этом не будут зависеть от отображения, а будут по-прежнему привязаны через Switch/Checkout.
Таким образом работает система цель — источник. Цель выставляется через Switch/Checkout. Источник через любой способ — история, левая верхняя ссылка, прочее.
Переключиться Switch/Checkout на ту ветку в которые буду попадать изменения.
На папке или внутри папки — правой мышью Merge
Теперь выбрать источник изменений — ветку изменения которой должна попасть в целевую ветку.
Все галки могут быть пусты
Ок
Перейти на ветку в которую будем заливать изменения, switch to
В окне истории найти коммит изменения которого хотим залить.
Cherry Pick this commit – Continue
Решить конфликты если есть.
У коммитов разные хеши и хотя изменения одинаковы, это разные коммиты все равно.
Обычно делается после слияния или когда точно знаем что изменения ветки не пригодятся никогда.
Удостоверится что не стоим на удаляемой ветке.
Переместится на другой Switch/Checkout в окне на строке Brunch кнопка с …
Открыть историю. Кликнуть на верхней левой ссылке.
Окно Browse references.
Выбрать целевую ветку, правой мышью Delete Branch
Маркеры уделенных веток исчезнут в истории. Также в выпадающем списке веток исчезнет пункт с этой веткой.
Правой мышью по файлу — Blame
В открывшемся окне можно кликать по ревизиям, при этом будут подсвечиваться изменения в строках за которые отвечает данная ревизия.
Выделить файл не под контролем системы контроля версий — правой мышью Add ignore list
В окне коммита правой мышью по пустому полю — Add to ignore list
Нажать либо на файл либо на папку
В .gitignore появится строчка с путями отображающими это изменение
.gitignore тоже лучше закоммитить.
В окне коммита правой мышью на файле/файлах Skip WorkTree
Глава не «Репозиторий на сервере» в разработке..
master – локальный мастер. помечает последнюю ревизию основной ветки.
origin/master – мастер на сервере
HEAD
Имя в колонке Author берется либо из данных сайта, либо не нашел на сайте совпадения, берется из вкладок настроек.
Если второй пользователь попытается закоммитить на сервер, предварительно не обновив, в комите будет отказано.
Панель управления\Все элементы панели управления\Диспетчер учетных данных
Учетные данные Windows
Создаем репозиторий на сервере
Repositories – New (справа)
Пишем название
Create repository
Создаем локальный репозиторий
Git create repository here.
Галку ставить не нужно.
Настройка связи локального репозитория репозиторием на сервере
Выполнить коммит в локальном репозитории стандартным образом — добавить файлы, закоммитить.
Если при нажатии ОК выдает сообщение “Remote name must not be empty@ поле Remote будет пустым
Destination – Remote – Manage
Откроется в окне Settings. Узлы Git – Remote.
В поле URL: ввести адрес с сайта гит типа https://github.com/AlexandrrrIdushy/TestRepo2
Автоматически выставится Remote: origin
ОК
ОК
После этого файлы появятся и на сервере.
Внутри локальной папки, правой мышью Git Clone
Откроется окно Git Clone
Открываем на сайте репозиторий и копируем адрес сайта
Жмем на название репозитория.
Переход на страничку с текстом вроде AlexandrrrIdushy/TestLeartGit, там же будет список папок и файлов проекта.
Забираем содержимое адресной строки браузера
Пишем этот адрес в поле URL
Правим или оставляем локальный адрес Directory
Ок
После клoнирования в папке появится .git
Оранжевая плашка origin/master означат что есть удаленная копия репозитория.
Если красный master и оранжевый origin/master указывают на одну ревизию, значит репозиторий синхронизирован с сервером.
В окошках Sync и Push, поле Remote не должно быть пустым
перед заталкиванием на сервер нужно вытянуть с него изменения обновить локальный репозиторий. Иначе в истории возникают лишние мерж комиты, разноцветные переплетения, не несущие ценной информации.
Зайти в локальную папку
Правой мышью Push
Кроме чистого пуша, при комите можно выбрать вариант Commit & Push
Зайти в локальную папку
Git Sync
Push
Чтобы обновить локальный репозиторий на ПК
можно сделать Pull
можно через Git Sync или Pull
Repositories – ИмяРепозитория
В правом углу таблицы с файловой системой либо History либо NN commits
На сайте коммиты сгруппированы по дням, поэтому слегка по другому отображаются
Это нужно для только чтобы не было лишних разноцветных мержей.
Git Sync – Fetch & Rebase
В результате сначала подтягиваются изменения с репозитория.
В всплывшем окне Rebase – Start Rebase.
В результате произойдет отсоединение (detached) незапихнутых ревизий от локального репозитория
Done
TortoiseGitProc.exe. /command:diff
TortoiseGitProc.exe. /command:commit
TortoiseGitProc.exe. /command:log
Большинству из этих команд необходим как минимум один параметр с именем пути, задаваемый при помощи /path:"некоторый\путь". В следующей таблице 'команда' обозначает параметр /command:abcd и 'путь' обозначает параметр /path:"некоторый\путь".
Если встать на папку и сказать stash canges
Но если Stash list – Delet referencise, откатывается куда-то не туда, не к последней ревизии
Нет возможности «забыть» файл репозитория.
Нет возможности переключить только часть локальных файлов в произвольной ревизии.
Окно коммитов закрывается каждый раз когда коммит происходит.
После коммита окно истории само не обновляется.
В трее внизу кнопки не отличить по внешнему виду: коммита и списка ревизий
В окне истории нет мгновенного сравнения изменений текущих файлов ревизии
Огромная благодарность автору ютуб канала «Александр С», внезапно, самому Александру С. (https://youtu.be/OFFaHhdtwlU). Своими емкими отточенными и лаконичными формулировками, уважаемый Александр позволи проникнуть в саму сердцевину сути клиента TortoiseGit.
v4.