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