##新建一个git项目
cd /srv
git --bare init repository
chown -R git:git repository
cd /home
git clone /srv/repository
cd /home/repository
vim h.txt
git add h.txt
git commit h.txt -m 'test'
git push origin master
##设置自动更新代码
vim /srv/repository/hooks/post-receive
#!/bin/sh
# 指定我的代码检出目录
DIR=/home/repository
git --work-tree=${DIR} clean -fd
# 直接强制检出
git --work-tree=${DIR} checkout --force
##使用
git clone git@192.168.1.1:/srv/repository
##可能要注意的是
1,添加SSH key
usermod -s /usr/bin/git-shell -d /home/git -g git git
将用户git的登录Shell修改为git-shell,主目录改为/home/git 用户组改为git
2,将客户端ssh key公钥添加到
/home/git/.ssh/authorized_keys
3,自动更新权限问题
git config --global core.fileMode false
chown -R git:git /srv/repository/hooks/post-receive
chmod -R 755 /srv/repository/hooks/post-receive
chown -R git:git /srv/
chown -R nginx:nginx /home/repository
chmod -R 777 /home/repository/
每个项目:
cd /home/repository/
git config core.fileMode false
mkdir .log
chown -R nginx:nginx .log/
mkdir data
chown -R nginx:nginx data/
chown -R git:git .git/
chown -R git:git .gitignore
##忽略某一个文件,不更新到本地,好像文件有修改的话还是会拉取...
git rm xxx
git update-index --assume-unchanged config/config.php
##更让某一个文件:1-->更新本地库,不更新工作拷贝;2-->再从本地库更新单个文件
git fetch
git checkout origin/master -- path/to/file
##强制更新
git fetch --all
git reset --hard origin/master
git pull