一直以来想在家搭建一个自己的git代码服务器,国庆假期终于有时间搞一搞了。这样自己在笔记本上辛辛苦苦写的代码,就可以备份到linux主机上,再也不担心某天笔记本电脑硬盘挂了,或者电脑挂了,而丢失代码。
资源:
准备工作:
假设以上工作已经完成,接着就开始搭建git服务器。
windowns端:
ssh-keygen
连续按几次enter就生成了在C:\Users\sc\.ssh下有个id_rsa.pub文件就是公钥,我们需要把此文件中的内容copy到linux主机中对应的位置,下文中会有详细说明。
Linux端:
sudo adduser git
su git
cd
mkdir .ssh
cd .ssh
touch authorized_keys
创建authorized_keys文件是目的是为了把各个用户的公钥存放在这个文件中,只有把这些公钥存放在这里,对应的用户才有权限访问我们的代码服务器。把上文中在windows中创建的id_rsa.pub文件中的内容拷贝到authorized_keys中并保存。
2.创建代码目录,假设我们创建为project.git
mkdir project.git
cd project.git
3.将project.git初始化为空仓库,使用--bare选项
git@sc-System-Product-Name:~/project.git$ git --bare init
Initialized empty Git repository in /home/git/project.git/
现在我们已经在服务器端初始化完成了一个空仓库。
windows端:
sc@sc-PC MINGW64 /e/source_code
$ mkdir code_test
sc@sc-PC MINGW64 /e/source_code
$ cd code_test/
sc@sc-PC MINGW64 /e/source_code/code_test
在code_test里面新建文件
sc@sc-PC MINGW64 /e/source_code/code_test
$ ls
test.c
使用命令行对code_test文件夹做初始化,并做一次git 初始化提交
sc@sc-PC MINGW64 /e/source_code/code_test
$ git init
Initialized empty Git repository in E:/source_code/code_test/.git/
sc@sc-PC MINGW64 /e/source_code/code_test (master)
$ git add .
warning: LF will be replaced by CRLF in test.c.
The file will have its original line endings in your working directory.
sc@sc-PC MINGW64 /e/source_code/code_test (master)
$ git commit -m "initial commit"
[master (root-commit) 6b7e181] initial commit
warning: LF will be replaced by CRLF in test.c.
The file will have its original line endings in your working directory.
1 file changed, 1 insertion(+)
create mode 100644 test.c
将本地仓库的远端添加为linux主机中的空仓库
git remote add origin [email protected]:/home/git/project.git
PS:git remote rm origin 可以删除已经存在的远端地址。
并push到远端
$ git push origin master
[email protected]'s password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 228 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:/home/git/project.git
* [new branch] master -> master
可以看到我们已经提交成功。
$ git remote -v
origin [email protected]:/home/git/project.git (fetch)
origin [email protected]:/home/git/project.git (push)
在另外一个目录中做一次拉取测试
sc@sc-PC MINGW64 /e/source_code/one
$ git clone [email protected]:/home/git/project.git
Cloning into 'project'...
[email protected]'s password:
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
Checking connectivity... done.
sc@sc-PC MINGW64 /e/source_code/one
$ ls
project/
sc@sc-PC MINGW64 /e/source_code/one
$ cd project/
sc@sc-PC MINGW64 /e/source_code/one/project (master)
$ ls
test.c
好了,现在已经完全ok了,可以愉快的提交代码了。后面更复杂的git用户管理,团队合作等用法,后面有时间再更新。