С hg я не использую консольные команды, обычные задачи покрываются графической оболочкой TortoiseHg на Fedora 31 и Windows 10. Описание значков интерфейса здесь.
На windows 10 для работы с git я использую Git for Windows, другие графические среды (например, SmartGit, SourceTree, TortoiseGit) перечислены здесь. Сейчас (13.01.2023) использую под виндой TortoiseGit, он по функциональности близок к TortoiseHg (на момент написания статьи (27.03.2020) был косячный). Под линукс планирую использовать простую консоль.
На windows 10 для работы с git я использую Git for Windows, другие графические среды (например, SmartGit, SourceTree, TortoiseGit) перечислены здесь. Сейчас (13.01.2023) использую под виндой TortoiseGit, он по функциональности близок к TortoiseHg (на момент написания статьи (27.03.2020) был косячный). Под линукс планирую использовать простую консоль.
github:
1) How to push git repo from Windows 10 CMD https://www.youtube.com/watch?v=ZPDnCfMhbA8
Команды для 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
Удаляем неправильно поставленные файлы с версионного контроля (например, файлы проекта, которые у каждого разработчика могут быть свои):
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
Удаляем:
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"
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 origin
https://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:
https://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:
Чтобы слить изменения в ветке с master:
git checkout master
git merge develop
14) Переключаемся на ветку develop:
14.1) Затянуть изменения из внешнего хранилища и смерджить с содержимым ветки:
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:
Ссылки (hg):
1) Hg Init: Часть 2. Основы Mercurial https://habr.com/ru/post/108658/
2) https://habr.com/ru/post/274877/
Ссылки (git):
1) основные консольные команды https://habr.com/ru/post/336708/ (!)
2) hgignore https://git-scm.com/docs/gitignore
2) hg commit
Ссылки (обзор git):
1) https://habr.com/ru/company/playrix/blog/345732/
2) https://habr.com/ru/post/437000/
3) https://habr.com/ru/post/472600/
4) https://habr.com/ru/post/342116/
5) https://habr.com/ru/post/440816/
6) https://habr.com/ru/post/174467/
7) https://habr.com/ru/post/125799/
Useful:
1) Переход с Mercurial на GIT в Atlassian Bitbucket с сохранением файлов в кириллице
2) История систем управления версиями https://habr.com/ru/post/478752/
QtCreator + git:
1) https://doc.qt.io/qtcreator/creator-vcs-git.html
2) http://magtuxdev.blogspot.com/2013/08/git-qt-creator-github-windows.html
3) https://exlmoto.ru/git-and-qt-creator/
4) https://www.youtube.com/watch?v=qlPSV7Bs3rE
VSCode + git:
1) https://code.visualstudio.com/docs/editor/versioncontrol
2) https://habr.com/ru/post/445520/
3) https://www.youtube.com/watch?v=wMqukSKYcvU
4) https://channel9.msdn.com/Series/Visual-Studio-Code----Mac/code4
QtCreator + git:
1) https://doc.qt.io/qtcreator/creator-vcs-git.html
2) http://magtuxdev.blogspot.com/2013/08/git-qt-creator-github-windows.html
3) https://exlmoto.ru/git-and-qt-creator/
4) https://www.youtube.com/watch?v=qlPSV7Bs3rE
VSCode + git:
1) https://code.visualstudio.com/docs/editor/versioncontrol
2) https://habr.com/ru/post/445520/
3) https://www.youtube.com/watch?v=wMqukSKYcvU
4) https://channel9.msdn.com/Series/Visual-Studio-Code----Mac/code4
git branch:
Комментариев нет:
Отправить комментарий