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 [2020/05/13 08:58]
val [val.bmstu.ru]
сервис_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 (на русском)]]
   * [[http://​www.jedi.be/​blog/​2009/​05/​06/​8-ways-to-share-your-git-repository/​|8 ways to share your git repository]]   * [[http://​www.jedi.be/​blog/​2009/​05/​06/​8-ways-to-share-your-git-repository/​|8 ways to share your git repository]]
   * [[http://​hyperprog.com/​howto/​etc-git.html|How-To store /etc in a git repository on debian linux]]   * [[http://​hyperprog.com/​howto/​etc-git.html|How-To store /etc in a git repository on debian linux]]
 +  * [[https://​git-scm.com/​download/​win|Git for Windows]]
 +  * [[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)]]
 ===== Работа с локальным репозиторием ===== ===== Работа с локальным репозиторием =====
  
-  * Вместо ​"​искусственного" ​каталога ​/root/conf/ можно использовать /etc/ или /srv/tftp/+  * Вместо каталога conf/ можно использовать /etc/ или /srv/tftp/
  
 <​code>​ <​code>​
-server:~mkdir conf+server:~mkdir conf
  
-server:~cd conf/+server:~cd conf/
  
-server:​~/​confecho Hello World > file1+server:​~/​confecho Hello World > file1
  
-server:​~/​confmkdir dir1+server:​~/​confmkdir dir1
  
-server:​~/​confecho Hello World 2 > dir1/file2+server:​~/​confecho Hello World 2 > dir1/file2
  
-server:​~/​confgit init+server:​~/​confgit init
  
-server:​~/​confgit add .+server:​~/​confgit add .
  
-server:​~/​confgit status+server:​~/​confgit status
  
-server:​~/​confgit commit ​--m 'ver1.1'+server:​~/​confgit config ​--global user.email "​student@corpX.un"​ 
 +server:~/conf$ git config --global user.name "​FIO"​
  
-server:​~/​conf# echo Hello World 3 > file1+server:​~/​conf$ git commit -a -m 'ver: 1.1'
  
-server:​~/​conf# git status+server:​~/​conf$ echo Hello World 3 > file1
  
-server~/​confgit add -v .+server:~/confgit status
  
-server:​~/​confgit status | grep '​modified\|deleted\|new file\|renamed'​ | git commit -a -F -+server:​~/​confgit add -v .
  
-server:​~/​confgit log+server:​~/​confgit --no-optional-locks status | grep '​modified\|deleted\|new file\|renamed'​ | git commit -a -F -
  
-server:​~/​confgit log --follow -- file1+server:​~/​confgit log
  
-server:​~/​confgit show <commit hash>:file1+server:​~/​confgit log --follow -- file1     В каких коммитах менялся файл
  
-server:​~/​confgit diff <commit hash> ​file1+server:​~/​confgit show <commit hash> ​       ​Все изменения файлов в этом коммите по 
  
-server:​~/​confgit diff <commit hash N> <commit hash M> 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
 </​code>​ </​code>​
-===== Подготовка сетевого http репозитория =====+ 
 +===== Пример с использованием cron ===== 
 + 
 +<​code>​ 
 +# cat /​etc/​cron.daily/​my-git-etc 
 +</​code><​code>​ 
 +#!/bin/sh 
 + 
 +for d in /etc/ /root/ 
 +do 
 +  cd $d 
 +  [ -d $d/.git ] || git init > /dev/null 
 +  git add . 
 +  git --no-optional-locks status | grep '​modified\|deleted\|new file\|renamed'​ | git commit -a -F - > /dev/null 
 +done 
 + 
 +exit 0 
 +</​code>​ 
 + 
 +===== Создание ​сетевого http/ssh git репозитория =====
 <​code>​ <​code>​
 server:~# mkdir /​var/​www/​html/​conf.git server:~# mkdir /​var/​www/​html/​conf.git
Line 56: 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>​ <​code>​
-server:​~/​conf# ​git remote ​add origin file:///​var/​www/​html/​conf.git+git remote ​-v
  
-server:​~/​conf# git remote -v+$ git remote remove origin 
 +$ ### git remote ​rename origin old-origin
  
-server:~/conf# git remote ​rm 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
  
-server:​~/​conf#​ git remote add origin ssh://​student@server.corpX.un/​var/​www/​html/​conf.git+git branch
  
-server:​~/​conf# git push origin master+$ ### git config credential.helper store
  
-server:​~/​conf#​ echo Hello World 4 > dir1/file2+$ git push origin master
  
-server:~/conf# git status+$ ### cat ~/.git-credentials
  
-server:​~/​conf# ​git add .+git tag ver1.2
  
-server:​~/​conf# ​git commit -a -m 'ver: 1.3'+git push origin ver1.2
  
-server:​~/​conf# ​git push origin master+git tag
 </​code>​ </​code>​
 +
 ==== github.com ==== ==== github.com ====
 <​code>​ <​code>​
Line 99: Line 149:
  
 gate:​~/​zabbix_dhcp_pools$ git push -u origin master gate:​~/​zabbix_dhcp_pools$ git push -u origin master
 +</​code>​
 +
 +==== Персонального http/ssh git репозитория ====
 +<​code>​
 +server:​~/​conf$ git remote add origin file:///​var/​www/​html/​conf.git
 +
 +server:​~/​conf$ git remote -v
 +
 +server:​~/​conf$ git remote rm origin
 +
 +server:​~/​conf$ git remote add origin ssh://​student@server.corpX.un/​var/​www/​html/​conf.git
 +
 +server:​~/​conf$ git push origin master
 +
 +server:​~/​conf$ echo Hello World 4 > dir1/file2
 +
 +server:​~/​conf$ git status
 +
 +server:​~/​conf$ git add -v .
 +
 +server:​~/​conf$ git commit -a -m 'ver: 1.3'
 +
 +server:​~/​conf$ git push 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 126: 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 131: Line 219:
  
 ... ...
 +</​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>​
 +# dpkg -l | grep mediawiki
 +ii  mediawiki ​                    ​1:​1.31...
 +...
 +
 +# cd /​var/​lib/​mediawiki/​extensions/​
 +
 +# git clone https://​gerrit.wikimedia.org/​r/​p/​mediawiki/​extensions/​UserMerge
 +
 +# cd UserMerge/
 +
 +# git branch -r
 +
 +# git checkout REL1_31
 </​code>​ </​code>​
сервис_git.1589349493.txt.gz · Last modified: 2020/05/13 08:58 by val