git小记

今天用git,把文件上传到服务器,然后下载下来,这些过了一遍。发现,在linux上git是最好用的。。。

git不像svn一样分服务端客户端,git在linux只需要一句命令

1
$ sudo apt-get install git

之后,既可以做服务端,可以做客户端。

服务端

如果想使用git做服务端,第一步就是创建git用户

1
$ sudo adduser git

然后就是创建版本库了,比如,我准备把仓库test放在/home/wwwroot/下,则

1
2
3
4
$ cd /home/wwwroot
$ mkdir test
$ sudo git init --bare test
$ sudo chown -R git:git test #这句要在创建仓库后再使用

这里有个要说明下,--base 参数是不把项目原文件放在仓库目录下,而是以另一种形式储存,也就是说,如果你把 a.php 文件上传到git仓库,则你在 test 文件夹中根本找不到 a.php 这个文件。

如果不加 --bare 参数,会出现一系列问题,现在我还没研究透,待我研究透侧了,再来补充。

这样服务端基本配置就好了,接下来就是客户端了。。

这里先假设一些东西,

  1. 服务器的ip是: 192.168.110.110
  2. 客户端1把项目储存在 ‘/home/wwwroot/default/test’ 目录下
  3. 把项目放在web服务器上 ‘/home/wwwroot/test.com’ 目录中,让外网访问

客户端1

1
2
3
$ cd /home/wwwroot/default
$ git clone git@192.168.110.110:/home/wwwroot/test
# 输入密码(免输入密码的方法我加在结尾的Other中)

现在 /home/wwwroot/default/test 就是你的工作目录,或者可以把 /test/.git文件夹移到你的工作目录下。。

然后就是在有 .git 文件夹下,输入下面命令

1
2
3
$ git add .                #当前目录下的所以文件加入到版本库中,如果不像所有,可以 git add 具体文件
$ git commit -m "这里你自己随便写"
$ git push origin master

上面这是在第一次提交文件,或者git仓库是空的情况下,假如是第二次提交,或者版本库中以有内容,则是。

1
2
$ git commit -am "自己随便写"
$ git push origin master

web服务器

1
2
3
$ cd /home/wwwroot/test.com
$ git clone git@192.168.110.110:/home/wwwroot/test
# 输入密码

当客户端1的项目更新提交了后,

1
$ git pull origin master

Other

免密码

这里git文件传送使用的是ssh,所以其实也是ssh免输入密码的方式。
首先,编辑 /etc/ssh/sshd_config

1
2
$ vim /etc/ssh/sshd_config
AuthorizedKeysFile .ssh/authorized_keys #这句前面的#号去了

在客户端上使用

1
2
$ ssh-keygen -t rsa -P ''
# 则会在 ~/.ssh/ 目录下生产 id_rsa 和 id_rsa.pub.. 这个就是传说中rsa加密的公钥和私钥

id_rsa.pub 文件中的内容复制,粘贴到服务端 ~/.ssh/authorized_keys

authorized_keys文件的权限必须是644

1
2
3
$ cd ~/.ssh
$ ls -al
-rw-r--r--. 1 root root authorized_keys
Author

Hcamael

Posted on

2015-07-22

Updated on

2017-08-08

Licensed under