分类: LINUX
2015-04-02 21:01:57
原文地址:简单易懂的 Git 自动远程同步实例 作者:qingshanli1988
Git 仓库之间是对等的,没有主次之分。假如想把服务器端同步到本地,并把本地的修改同步到服务器端,就用下面的方法:
ubuntu
sudo apt-get install git
tar xzf mreald-dir.tgz
cd mreald-dir
git init
git config --global user.name mreald_name
git config --global user.email mreald_email
git add *
git commit -a -m "Hello Git"
git status
|
git clone root@192.168.100.6:~/html/mreald-dir/
cd mreald-dir
git config --global user.name locale_name
git config --global user.email locale_email
vim test.txt (add one line cccccccc)
git add *
git commit -m "add ccc"
git config --global remote.pushdefault root@192.168.100.6:~/html/mreald-dir/
git config --global push.default matching
git push
[ 或者:git push orign master(从本地提交到服务器192.168.100.6)
git pull orign master(从服务器同步到本地)]
|
git failed to push
解决办法:
一,在服务器上初始化仓库的时候用git -bare init (只有版本库,没有源文件)
用”git init”初始化的版本库(暂且称之为working repository) 将会生成2类文件:“.git“版本库目录(记录版本历史)和实际项目文件的拷贝。你可以把这类版本库叫做“工作目录”。工作目录是一个包含有版本历史目 录“.git”和源文件的目录。你可以在工作目录修改你的源文件并使用”git add”和”git commit”命令进行版本管理。
用“git init -bare”初始化的版本库(暂且称之为bare repository)仅包含”.git”目录(记录版本历史),不含项目源文件拷贝。如果你进入版本目录,你会发现仅有”.git”目录,没有其他文件。版本库仅包含记录着版本历史的文件。
二,如果用的是git init的话,就要修改下服务器上的配置(.git/config),添加:
[receive]
denyCurrentBranch = ignore
|
三,如果想每次更改本地代码,不用手工同步远程git ,可以在服务器端加、并执行:
[root@mreald wenblog]# cat .git/hooks/post-receive
#!/bin/sh
GIT_WORK_TREE=/var/www/html/wenblog git checkout -f
[root@mreald wenblog]# bash .git/hooks/post-receiv
[root@mreald wenblog]# chmod a+x .git/hooks/post-receiv
|