博客 2015-03-19

        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

web 目录:
/var/www/html/wenblog


本地端:

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 push root@192.168.100.6:~/html/mreald-dir/ ]


问题:

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