因为实验室项目组的需要,小老板让用之前闲置的服务器搭建一个GIT服务器来管理项目中的代码,于是开始学习了GIT的基础知识和搭建GIT,主要是参考了廖雪峰老师的教程:廖雪峰GIT教程;对于入门和基础的使用是很全面的一个教程。
一. 基础知识的总结
sudo apt install git #安装git
mkdir git_test
cd git_test
git init #在创建的文件夹中初始化Git管理的仓库
touch readme.txt #创建一个文件,并对其加入内容
git status #可以查看git对readme.txt文件的描述,该文件在工作区
git add readme.txt #把文件添加到暂缓区
git commit -m "the readme file" #把文件添加到本地git的分支之中
通过上面的这些指令,就是把文件添加到了Git仓库中。
git log #查看历史记录
git log --pretty==oneline #比较精简的显示
git resent --hard HEAD^ #回归到上一次的修改,或者HEAD^可以使用commit_id来取代
git reflog #退回到了旧版之后,又想回到新版本,通过这个查找之前新版本的commit_id
git diff readme.txt #查看工作区中的readme文件与仓库中的文件区别
git checkout -- readme.txt #把工作区的修改进行撤销,回到暂存区或者版本库的文件状态
git rm -- readme.txt 把仓库中的文件删除了
通过上面的指令,对工作区,暂存区和仓库中的文件进行一些基本常用的操作。如何使用公开的GitHub远程库,就直接看廖雪峰老师的教程好了。
git checkout -b dev #创建一个名字为dev的分支,并且当前的分支也是dev
git branch #查看所有的分支
git branch user1 #创建user1分支
git checkout user1 #切换到user1分支
git merge dev #在master分支下,对dev分支进行融合
git branch -d dev #删除分支
通过上面的指令,对git中的分支进行了操作,多人协作时以及bug处理时,都应该在不同的分支之上进行处理,然后对分支进行融合即可。
二.Git服务器的搭建
其实Git服务器的搭建还是挺简单的,主要步骤如下:
sudo adduser git_server #创建一个用户,来管理git仓库
收集需要登陆用户的ssh公钥,在用户目录下的.ssh/id_rsa中,然后把它们导入到/home/git/.ssh/authorized_keys 文件之中。生成密钥和公钥的指令为:ssh-keygen -t rsa;拷贝到目标机器的指令:ssh-copy-id git_server@192.168.***.***。
mkdir SLAM #在git_server用户下进行操作,新建一个文件夹SLAM
cd SLAM
git init --bare gitslam.git #初始化这个裸仓,裸仓是没有工作区的仓库,安全着想
chmod -R 777 ../SLAM/* #对该文件进行修改权限
基本上Git服务器就搭建好了,可以进行操作了,其实还是很简单的。
还有一些设置,比如不然用户直接用ssh登入到bash界面,只让ssh链接就行:
vim /etc/passwd #打开该文件
把 git_server:x:1001:1001:,,,:/home/git_server:/bin/bash
改成 git_server:x:1001:1001:,,,:/home/git_server:/usr/bin/git-shell
接着就能够在客户端使用git clone; git push origin master 等操作了。
接下里就是去学习一下Gitolite的操作了,用来管理用户。
三.遇到的小问题
又是ssh的问题,经常能遇到ssh的问题;在客户端ssh链接服务器时,出现ermission denied, please try again,但是密码是正确的,后来经过排错,应该是ssh的config问题。主要参考了:shh连接问题
1. 打开 /etc/ssh /sshd_config文件,确定其中的PermitRotLogin yes 和 PasswordAuthentiation yes 都是yes的,然后/etc/init.d/ssh start 重启ssh服务。
2.netstat -anp |grep sshd 查看shhd是否正确运行,如果不正常,则service sshd restart 来重启服务
我的问题在第一小点中解决了。