一、远程服务器(阿里云CentOS 7)
1.安装Git:
1.1.安装相关依赖: yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel;
1.2.安装:Git yum install git。
2.创建Git用户组和用户,用来运行git服务:(这里设定在/home目录下进行)
2.1.创建xxx用户组:groupadd xxx;
2.2.创建yyy用户,并归属到xxx用户组:useradd yyy -g xxx。
3.收集所有需要登录的用户的公钥,公钥位于开发人员本地电脑的id_rsa.pub文件中,把公钥导入到/home/yyy/.ssh/authorized_keys文件里,一行一个。如果没有该文件创建它,操作为:
3.1.进入以用户名为yyy的目录: cd /home/yyy/;
3.2.创建.ssh文件夹:mkdir .ssh;
3.3.设置文件权限:chmod 755 .ssh;(chmod 755 可查看Linux命令);
3.4.创建authorized_keys文件touch .ssh/authorized_keys;
3.5设置文件权限:chmod 644 .ssh/authorized_keys
4.指定目录下初始化Git仓库,假定在/home/gitrepo目录下初始化:
4.1.进入:cd /home;
4.2创建gitrepo文件夹:mkdir gitrepo;
4.3.设置文件权限:chown yyy(用户名):xxx(git组名) gitrepo/;
4.4.进入:cd gitrepo;
4.5.初始化空仓:git init --bare xxxx(一般是项目名).git;以上命令Git创建一个空仓库,服务器上的Git仓库通常都以.git结尾;
注:通过 --bare 初始化的仓库,开发者在本地push上来的文件,在空仓库是看不到的,空仓库只存储历史和元信息,不会维护工作目录,仅作为共享。如果需要在服务器上的空仓库查看文件,则在建立初始化Git仓库时不加--bare即可,但一般建议加上,以避免有人在服务器上进行文件修改,不利维护和规避风险。
4.6.更改仓库所属用户:chown -R yyy(用户名):xxx(组名) 仓库名.git。这样本地仓库用户才能有权限推送代码到服务器仓库 git push origin master 失败 remote: error: insufficient permission for adding an object to repository database ./objects,要查看当前用户是否是没有权限推送
5.其他骚操作在各自开发人员本地电脑中进行。
二、本地电脑(Mac)
1.打开终端。
2.查看是否已经安装了Git,命令: git --version。
2.1如果没有安装,则直接在Git官网下载安装包,可视化安装。
3.配置Git用户,一般设置为全局用户,即以后默认使用此用户进行交互,命令: 1)设置用户名 git config --global user.name "xxx";2)设置邮箱 git config --global user.email "xxxx@xxx.com"。
提示:也可以设置普通用户,可以指定某个普通用户具有访问该仓库的权限,未指定的则没有权限。
4.创建ssh key,先查看是否已经存在,不存在则创建,命令:ssh-keygen -t rsa -C "your_email@youremail.com";
在本地的/Users/当前电脑用户/.ssh目录下会生成两个文件id_rsa、id_rsa.pub,id_rsa文件保存的是私钥,保存于本地;id_rsa.pub文件保存的是公钥,需要将里面内容上传到远端(服务器、gitHub等)仓库。
5.新建文件夹或在指定文件目录下,初始化Git仓库,命令:git init。
6.配置.gitignore文件。配置单个项目忽略文件,在.git同级目录下,创建.gitignore文件,添加要忽略的文件和文件夹。配置全局忽略文件,在Users/用户名/目录下配置,命名为.gitignore_global,执行git config --global core.excludesfile Users/用户名/.gitignore_global 即可。
注意:.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
7.克隆远程服务器Git仓库到本地,命令: git clone username@ip(或者domain):path(服务器仓库的地址,如:/home/gitrepo/study.git);
8.接下来进行git的其余的开发操作,如 add、commit、pull、push等常规操作。