Сервис Git
Работа с локальным репозиторием
server:~$ mkdir conf
server:~$ cd conf/
server:~/conf$ echo Hello World > file1
server:~/conf$ mkdir dir1
server:~/conf$ echo Hello World 2 > dir1/file2
server:~/conf$ git init
server:~/conf$ git add .
server:~/conf$ git status
server:~/conf$ git commit -a -m 'ver: 1.1'
server:~/conf$ echo Hello World 3 > file1
server:~/conf$ git status
server:~/conf$ git add -v .
server:~/conf$ git --no-optional-locks status | grep 'modified\|deleted\|new file\|renamed' | git commit -a -F -
server:~/conf$ git log
server:~/conf$ git log --follow -- file1 В каких коммитах менялся файл
server:~/conf$ git show <commit hash> Все изменения файлов в этом коммите по
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> file1
Пример с использованием cron
# cat /etc/cron.daily/my-git-etc
#!/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
Подготовка сетевого http репозитория
server:~# mkdir /var/www/html/conf.git
server:~# cd /var/www/html/conf.git
server#:/var/www/html/conf.git# git init --bare
server#:/var/www/html/conf.git# mv hooks/post-update.sample hooks/post-update
server#:/var/www/html/conf.git# chmod a+x hooks/post-update
server#:/var/www/html/conf.git# cat hooks/post-update
...
git update-server-info
rm -rf conf
exec git clone http://server.corpX.un/conf.git
server:~# chown -R student /var/www/html/conf.git/
Обновление сетевого репозитория из локального
Использование персонального репозитория
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
github.com
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
val.bmstu.ru
MacBook-Pro-val:conf val$ cat readme.txt
Клонирование и обновление локального репозитория из сетевого
Использование персонального репозитория
gate.isp.un:~$ git clone http://server.corpX.un/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
github.com
# git clone https://github.com/valbmsturu/zabbix_dhcp_pools.git
...
val.bmstu.ru
$ git clone http://val.bmstu.ru/unix/conf.git
...
Работа с версиями
# 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