User Tools

Site Tools


сервис_git

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
сервис_git [2021/10/04 11:15]
val [Работа с локальным репозиторием]
сервис_git [2023/09/14 15:37] (current)
val [On-Premise gitlab]
Line 1: Line 1:
 ====== Сервис Git ====== ====== Сервис Git ======
 +
 +  * [[https://​ru.wikipedia.org/​wiki/​Git|Git - Википедия]]
  
   * [[https://​git-scm.com/​book/​ru/​v2/​|The entire Pro Git book (на русском)]]   * [[https://​git-scm.com/​book/​ru/​v2/​|The entire Pro Git book (на русском)]]
Line 6: Line 8:
   * [[https://​git-scm.com/​download/​win|Git for Windows]]   * [[https://​git-scm.com/​download/​win|Git for Windows]]
   * [[https://​git-lfs.github.com/​|An open source Git extension for versioning large files]]   * [[https://​git-lfs.github.com/​|An open source Git extension for versioning large files]]
 +
 +  * [[https://​www.theserverside.com/​feature/​Why-GitHub-renamed-its-master-branch-to-main|Why GitHub renamed its master branch to main]]
 +
 +  * [[https://​youtu.be/​SEvR78OhGtw|youtube/​Артем Матяшов/​Git. Большой практический выпуск (youtube)]]
 ===== Работа с локальным репозиторием ===== ===== Работа с локальным репозиторием =====
  
Line 26: Line 32:
  
 server:​~/​conf$ git status server:​~/​conf$ git status
 +
 +server:​~/​conf$ git config --global user.email "​student@corpX.un"​
 +server:​~/​conf$ git config --global user.name "​FIO"​
  
 server:​~/​conf$ git commit -a -m 'ver: 1.1' server:​~/​conf$ git commit -a -m 'ver: 1.1'
Line 39: Line 48:
 server:​~/​conf$ git log server:​~/​conf$ git log
  
-server:​~/​conf$ git log --follow -- file1+server:​~/​conf$ git log --follow -- file1     В каких коммитах менялся файл
  
-server:​~/​conf$ git show <commit hash>:file1+server:​~/​conf$ git show <commit hash> ​       ​Все изменения файлов в этом коммите по 
  
-server:​~/​conf$ git diff <commit hash> file1+server:​~/​conf$ git show <commit hash>:​file1 ​ Содержимое файла в этом коммите 
 + 
 +server:​~/​conf$ git show <commit hash> file1  Изменения файла между этим и предыдущим коммитом 
 + 
 +server:​~/​conf$ git diff <commit hash> file1  ​Изменения файла после этого коммита 
 + 
 +server:​~/​conf$ git diff <commit hash N> <commit hash M>
  
 server:​~/​conf$ git diff <commit hash N> <commit hash M> file1 server:​~/​conf$ git diff <commit hash N> <commit hash M> file1
-</code><​code>+</​code>​
  
-</​code>​<​code>​+===== Пример с использованием cron ===== 
 + 
 +<​code>​
 # cat /​etc/​cron.daily/​my-git-etc # cat /​etc/​cron.daily/​my-git-etc
 </​code><​code>​ </​code><​code>​
Line 56: Line 73:
 do do
   cd $d   cd $d
- 
   [ -d $d/.git ] || git init > /dev/null   [ -d $d/.git ] || git init > /dev/null
- 
   git add .   git add .
- 
   git --no-optional-locks status | grep '​modified\|deleted\|new file\|renamed'​ | git commit -a -F - > /dev/null   git --no-optional-locks status | grep '​modified\|deleted\|new file\|renamed'​ | git commit -a -F - > /dev/null
 +done
  
-done+exit 0
 </​code>​ </​code>​
-===== Подготовка сетевого http репозитория =====+ 
 +===== Создание ​сетевого http/ssh git репозитория =====
 <​code>​ <​code>​
 server:~# mkdir /​var/​www/​html/​conf.git server:~# mkdir /​var/​www/​html/​conf.git
Line 76: Line 92:
  
 server#:/​var/​www/​html/​conf.git#​ chmod a+x hooks/​post-update server#:/​var/​www/​html/​conf.git#​ chmod a+x hooks/​post-update
 +</​code>​ 
 +Не обязательно,​ но, если хочется видеть содержимое текущего репозитория по http, можно поправить hooks/​post-update  
 +<​code>​
 server#:/​var/​www/​html/​conf.git#​ cat hooks/​post-update server#:/​var/​www/​html/​conf.git#​ cat hooks/​post-update
-</​code><​code>​+</​code>​ 
 +!!! exec должна быть последняя команда 
 +<​code>​
 ... ...
 +#exec git update-server-info
 git update-server-info git update-server-info
  
 rm -rf conf rm -rf conf
  
-exec git clone http://​server.corpX.un/​conf.git+exec git clone http://​server.corpX.un:81/conf.git
 </​code><​code>​ </​code><​code>​
 server:~# chown -R student /​var/​www/​html/​conf.git/​ server:~# chown -R student /​var/​www/​html/​conf.git/​
 </​code>​ </​code>​
 +
 +  * Обновление [[#​Персонального http/ssh git репозитория]]
  
 ===== Обновление сетевого репозитория из локального ===== ===== Обновление сетевого репозитория из локального =====
  
-==== Использование ​персонального репозитория ====+  * [[https://​dzen.ru/​a/​YufH0P_uAEpuxnPg|Работа с тегами Git: создание,​ удаление,​ использование]] 
 +==== On-Premise gitlab ==== 
 + 
 +  * [[https://​stackoverflow.com/​questions/​6565357/​git-push-requires-username-and-password|Git push requires username and password]] 
 + 
 +<​code>​ 
 +$ git remote -v 
 + 
 +$ git remote remove origin 
 +$ ### git remote rename origin old-origin 
 + 
 +$ git remote add origin http://​server.corpX.un/​student/​dhcp.git 
 +$ ### git remote add origin http://​server.corpX.un:​3000/​student/​dhcp.git 
 +$ ### git remote add origin git@server.corpX.un:​student/​gowebd.git 
 + 
 +$ git branch 
 + 
 +$ ### git config credential.helper store 
 + 
 +$ git push origin master 
 + 
 +$ ### cat ~/​.git-credentials 
 + 
 +$ git tag ver1.2 
 + 
 +$ git push origin ver1.2 
 + 
 +$ git tag 
 +</​code>​ 
 + 
 +==== github.com ==== 
 +<​code>​ 
 +gate:​~/​zabbix_dhcp_pools$ git remote add origin https://​github.com/​valbmsturu/​zabbix_dhcp_pools.git 
 + 
 +gate:​~/​zabbix_dhcp_pools$ git push -u origin master 
 +</​code>​ 
 + 
 +==== Персонального ​http/ssh git репозитория ====
 <​code>​ <​code>​
 server:​~/​conf$ git remote add origin file:///​var/​www/​html/​conf.git server:​~/​conf$ git remote add origin file:///​var/​www/​html/​conf.git
Line 113: Line 172:
  
 server:​~/​conf$ git push origin master server:​~/​conf$ git push origin master
-</​code>​ 
-==== github.com ==== 
-<​code>​ 
-gate:​~/​zabbix_dhcp_pools$ git remote add origin https://​github.com/​valbmsturu/​zabbix_dhcp_pools.git 
- 
-gate:​~/​zabbix_dhcp_pools$ git push -u origin master 
 </​code>​ </​code>​
  
 ==== val.bmstu.ru ==== ==== val.bmstu.ru ====
 <​code>​ <​code>​
-MacBook-Pro-val:​conf val$ cat readme.txt+~/confval$ cat readme.txt
 </​code>​ </​code>​
  
 ===== Клонирование и обновление локального репозитория из сетевого ===== ===== Клонирование и обновление локального репозитория из сетевого =====
  
-==== Использование персонального репозитория ​====+==== On-Premise gitlab ​====
 <​code>​ <​code>​
-gate.isp.un:​~$ ​git clone http://​server.corpX.un/​conf.git+git clone http://​server.corpX.un/​student/​dhcp.git
  
-gate.isp.un:​~$ cd conf/+  или
  
-gate.isp.un:~/conf$ less dir1/file2+# git clone http://​server.corpX.un:3000/student/dhcp.git
  
-gate.isp.un:​~/​conf$ git pull origin master+  или
  
-gate.isp.un:~/confless dir1/file2+student@gate:~/dhcpgit pull origin master
 </​code>​ </​code>​
 +
 ==== github.com ==== ==== github.com ====
 <​code>​ <​code>​
Line 146: Line 200:
 ... ...
 </​code>​ </​code>​
 +
 +==== Персонального http/ssh git репозитория ====
 +<​code>​
 +gate.isp.un:​~$ git clone http://​server.corpX.un:​81/​conf.git
 +
 +gate.isp.un:​~$ cd conf/
 +
 +gate.isp.un:​~/​conf$ less dir1/file2
 +
 +gate.isp.un:​~/​conf$ git pull origin master
 +
 +gate.isp.un:​~/​conf$ less dir1/file2
 +</​code>​
 +
 ==== val.bmstu.ru ==== ==== val.bmstu.ru ====
 <​code>​ <​code>​
Line 153: Line 221:
 </​code>​ </​code>​
  
-===== Работа с версиями =====+===== Работа с ветками ===== 
 + 
 +  * [[https://​stackoverflow.com/​questions/​2003505/​how-do-i-delete-a-git-branch-locally-and-remotely|How do I delete a Git branch locally and remotely?​]] 
 +  * [[https://​stackoverflow.com/​questions/​10312521/​how-do-i-fetch-all-git-branches|How do I fetch all Git branches?​]] 
 +==== Пример с тестовой веткой ==== 
 +<​code>​ 
 +λ git branch test 
 + 
 +λ git branch -a 
 + 
 +λ git checkout test 
 + 
 +... edit ... add ... commit ...  
 + 
 +λ git push origin test 
 + 
 +root@server:​~/​openvpn1#​ git pull origin test 
 +root@server:​~/​openvpn1#​ ansible-playbook ... test_nodes 
 +   или 
 +... ci/cd test ... 
 + 
 + 
 +λ git checkout main 
 +λ git checkout master 
 + 
 +λ git merge test 
 + 
 +... commit ... 
 + 
 +λ git push -u origin main 
 +λ git push -u origin master 
 + 
 +... ci/cd prod ... 
 + 
 +λ git push -d origin test 
 +λ git branch -d test 
 + 
 +val@bro:​~/​conf$ git fetch --all 
 +</​code>​ 
 + 
 +==== Пример установки ПО ====
  
 <​code>​ <​code>​
сервис_git.1633335326.txt.gz · Last modified: 2021/10/04 11:15 by val