Chinaunix首页 | 论坛 | 博客
  • 博客访问: 40555
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 0
  • 用 户 组: 普通用户
  • 注册时间: 2015-01-15 19:37
文章分类
文章存档

2015年(21)

我的朋友

分类: LINUX

2015-04-16 20:48:16

     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


原文:简单易懂的 Git 自动远程同步实例
阅读(730) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~