С hg я не использую консольные команды, обычные задачи покрываются графической оболочкой
TortoiseHg на Fedora 31 и Windows 10. Описание значков интерфейса
здесь.
На windows 10 для работы с git я использую
Git for Windows, другие графические среды (например, SmartGit, SourceTree, TortoiseGit) перечислены
здесь. Сейчас (13.01.2023) использую под виндой
TortoiseGit, он по функциональности близок к TortoiseHg (на момент написания статьи (27.03.2020) был косячный). Под линукс планирую использовать простую консоль.
tortoisegit + github:
github:
Команды для bash:
1) Создаем новый репозитарий в текущей папке. Например, у меня в Windows Git Bash в текущей папке /c/Projects/Makefile/MyTestQtProject уже есть папка с qt-проектом:
cd /c/Projects/Makefile/MyTestQtProject
git init
В результате в папке /c/Projects/Makefile/MyTestQtProject создается подпапка .git с репозитарием.
2) Добавляем отдельные файлы из проекта под вирсионный контроль:
git add main.cpp
Удаляем неправильно поставленные файлы с версионного контроля (например, файлы проекта, которые у каждого разработчика могут быть свои):
git rm --cached myproject.pro
3) Смотрим статус по добавленным в репозитарий (changes to be commited) файлам, ненаходящимся под версионным контролем (untracked):
git status
4) Создаем файл исключений .gitignore (как .hgignore), дальше приводится содержимое для qt-проекта:
syntax: glob
*.user*
*~
ui_*
moc_*
.fuse*
.qmake*
*.o
*.pdb
Makefile*
MyTestQtProject
debug
release
5) Коммитим изменения:
git commit
После ввода откроется выбранный текстовый редактор (под виндой удобно поставить notepad++, под линукс по умолчанию ставится vim). После ввода надо сохранить изменения (самый простой способ записать изменения в vim - нажать клавишу "escape" и набрать "wq" (сохранить изменения и выйти)).
Можно сразу ввести коммит с меткой:
git commit -m "start"
6) При последующих коммитах, если изменения касаются только уже добавленных на версионный контроль файлов, коммитить можно следующим образом:
git commit -a -m "continue"
7) Для работы из строки надо представиться системе:
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
8) Создаем на gitlab-е через web-интерфейс проект, получаем путь к проекту вида
git@git.medteco.ru:username/gitrepo. Коммитим существующий локальный репозитарий:
git remote add origin <ssh-репозитарий gitlab>
git push -u origin master
9) Получаем изменения с удаленного сервера (origin):
9.1) Получаем изменения с удаленного сервера gitlab (origin):
git remote add origin <ssh-репозитарий gitlab>
git pull origin master
https://githowto.com/pulling_changes
9.2) Получаем изменения из соседней папки (origin):
git remote add origin /d/Projects/ti/git/tda3_ccs831
git pull origin master
Удаляем:
git remote remove originhttps://komodor.com/learn/how-to-fix-fatal-remote-origin-already-exists-error/
10) Клонируем существующий репозитарий на gitlab'е в текущую папку:
git clone <ssh-репозитарий gitlab>
git clone https://192.168.73.30/devs/devs/gen3
11) Восстанавливаем файлы из локального репозитария ("откатываем" изменения до последнего коммита):
git restore .
12) Переключаемся на нужный коммит:
git checkout <хэш коммита>
Для переключения на последний коммит в ветке master:
git checkout master
13) Создаем новую ветку
develop для коммита
cca1cd03bb4a5bf3077681beff9899bda770e19e:
git branch develop cca1cd03bb4a5bf3077681beff9899bda770e19e
Чтобы слить изменения в ветке с master:
git checkout master
git merge develop
https://stackoverflow.com/questions/8953206/how-do-i-move-my-commits-from-no-branch-to-an-actual-branch
14) Переключаемся на ветку develop:
git switch develop
14.1) Затянуть изменения из внешнего хранилища и смерджить с содержимым ветки:
git pull (origin master)
git branch --set-upstream-to=origin/master develop
git merge
15) Отобразить список доступных веток:
git branch --list
16) git log:
Сложный вывод с показом ветвлений:
git log --pretty=format:"%h - %an, %ar : %s"
Последние 2 коммита:
git log -2
16) Удаляем из ещё незакомиченного кэша (но уже выполнен git add) бинарные ненужные для версионного контроля файлы (вроде *.o, *.obj или целая папка в студии Debug), которые почему-то вовремя не оказались в .gitignore:
git rm -r --cached test_client/Release/*
17) git diff не работает по текстовым файлам UTF-16, которые по умолчанию формирует VS2017;
18) Подключаемся к новому удаленному репозитарию с созданным проектом, переключаемся на ветку master, заливаем в него файлы только ветки master, коммиты, бранчи, а потом все ветки активного проекта:
git remote add origin <https-git-репозитарий>
git branch -M master
git push -u origin master
git push --all
git push --set-upstream <remote-name> <localbranch>
Workaround: