这两天搭建Git服务器,折腾了好久,把自己纠结的几个点记录分享下。
『Git Server搭建』
1.Git安装,安装之前先查看下是否已经安装好了:
git version
如果没有安装:
yum install git
2.选择一个文件夹,初始化Git仓库:
sudo git init --bare test.git
此处的--bare的意思就是建立一个裸仓库,不能在此仓库里进行add和commit操作。服务器里面的初始代码,也是需要client端推送(push)进来的,不可以自己去commit。这个问题我真心是纠结了好久啊,我一开始切换到test.git这个目录里面,再git init,然后后面的操作都不对了。其实这样初始化就OK了。
3.创建一个新用户,用来运行git服务(此处随便啥用户都可以,只要找好该用户处于的组就可以了,用户名在后面SSH登陆的时候要用到)
1 sudoadduser zita #新增用户2 passwdzita #修改用户密码3 groupszita #查看该用户所处的组
此时test.git是属于root:root:
我们将其修改为zita:zita:
sudo chown -R zita:zita test.git
此时git server就搭建好了,就是辣么简单,没有其他操作了。。。
『Git Client』
此处的client建立在windows上,别问我为什么要用windows,因为这个上面的要求。
在windows上装好Git Gui后,就可以开始操作了。
1.新建一个文件夹,作为Git仓库,在此文件夹中初始化git。
初始化好了之后,会自动生成一个.git的隐藏目录,务必不要手动修改此文件夹。
2.基本配置:
再右击打开”Git Gui“,进行基本配置:
1)配置用户名和邮箱号,这一步只是为了标识出不同的用户。
填写完了保存。
2)生成SSH KEY,供远程登陆使用。
然后,登录到git服务器上,将SSH KEY加入到/home/git/.ssh/authorized_keys文件中。如果没有此文件,请按照这个路径新建文件。
3.基本操作:
1)添加并提交文件,我在版本库里添加了一个文件:
换用”Git Bash“:
git status #查看当前版本库的变动
此时可以看到”1.txt“发生了变动
git add 1.txt #将1.txt添加到缓冲区
git commit-m "first commit" #添加备注并且提交
再次查看版本库状态,无更新了:
2)版本回退:
我先多修改几次文件,然后多提交几次:
git log #显示操作记录
此时我想回退到first commit:
git reset --hard 5282c6 #此处的数字为版本号的sha1前几位
3)重回未来:
此时我想再返回到second commit,该怎么办?
此时的git log只剩一条记录了:
我们可以使用git reflog,找到版本号:
git reflog
git reset --hard 6903158
4.远程操作:
1)clone远程库:
git clone zita@192.168.1.140:/home/githome/test.git
此时的版本库里什么都没有,因此是空的。
2)push代码上去:
git push
查看远程主机名:
git remote -v
如果没有,则可以添加。此处的”origin“为自定义的远程服务器的名字,zita为刚才添加的用户名,192.168.1.140为git服务器的IP地址,/home/githome/test.git为刚才设置的git仓库文件夹:
git add origin zita@192.168.1.140:/home/githome/test.git
查看本地分支,默认为master:
git branch
push 代码到远程服务器:
git push origin master
push成功了,此时在服务器上是看不到我push上去的代码的,但是别人在他的client端是可以看到的。
3)此时我新建另外一个文件夹,初始化一个新的仓库,并且添加远程服务器:
git fetch origin #获取远程服务器的变动
此时文件还在一个缓冲区里,我们需要将其merge到自己的分支上来:
首先查看远程分支名字:
git branch -a
我将远程的origin/master分支合并到我的master分支上:
git merge origin/master
本地就获取到了文件:
『小结』
Git还有好多操作和一些原理性的东西,等用到了再去学习吧。
参考资料: