在linux下使用Git很方便。有很多关于Git的教程,在这把自己对Git的理解记录下来。
一、Git原理
Git主要的原理,个人理解就是镜像备份,如下图(Git Data Flow And Commands)所示主要分为三个部分,工作区(Working directory)、本地版本库(Local repository)、远程版本库(Remote repostitory ,git服务器上的版本),一般的数据流为:工作区->本地版本库->远程版本库。
在本地版本库时(Local repository),可以创建多个分支,默认创建了一个本地Master分支。在没有创建其他分支的时候,可以认为本地Master分支就是本地版本库时(Local repository)。
其数据交互和相关的命令如下图所示:
二、Git服务器搭建
首先在服务器Server上创建一个名为git的用户 。
$sudo adduser git
$sudo passwd git
我们配置用户A使用git这个用户免认证登录服务器Server。
1、使用 authorized_keys
方法来给用户授权
如以下步骤:
- 生成公钥和私钥
- 导入公钥到认证文件,更改权限
在用户A主机上生成公钥、私钥:
$ssh-keygen -t rsa
默认在 ~/.ssh目录生成两个文件:
id_rsa :私钥
id_rsa.pub :公钥
把公钥复制到服务器Server上:
$scp ~/.ssh/id_rsa.pub xxx@host:~
然后,将公钥导入到认证文件尾
$cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
修改文件权限:
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys
2、在服务器Server用--bare选项新建一个裸仓库
$cd
$mkdir project.git
$cd project.git
$git --bare init
这时,用户就可以把它加为远程仓库,推送一个分支,从而把第一个版本的项目文件上传到仓库里了。
如在用户A主机上:
$ cd myproject $ git init $ git add . $ git commit -m 'initial commit' $ git remote add origin git@gitserver:~/project.git $ git push origin master
3、限制 git
用户的活动范围
把 git
用户登入的 shell设置git-shell
。
$ sudo vim /etc/passwd
在文件末尾,git用户的一行,修改为:
git:x:531:531::/home/git:/usr/bin/git-shell
现在 git
用户只能用 SSH 连接来推送和获取 Git 仓库,而不能直接使用主机 shell。
三、git仓库的使用
主要的操作:
$cd project
$git init
$git status
$git add .
$git commit -m "Version 1.0"
$ git remote add origin git@gitserver:~/project.git
$ git push origin master
到这一步,会推送一个分支到远程版本库(Remote repostitory )。
在开发的时候,建议再创建一个分支 dev分支。这dev分支上做开发,然后合并到本地master分支,再推到远程版本库。先查看一下目前有的分支 。
$cd project
$git branch
*master
创建dev分支:
$git branch dev
$git branch
切换到dev分支:
$git checkout dev
开发....
在dev分支下,提交当前工作
$git status
$git add .
$git commit -m "Version 2.0 "
然后合并分支,先切换到master分支下:
$git checkout master
合并dev分支:
$git merge dev
在以上使用中,通过 git status、 gitk(GUI程序) 、Qgit等配合使用 。
下面是使用gitk查看git:
参考:
1、http://git-scm.com/book/en/v2
3、http://www.cnblogs.com/tankaixiong/p/4172942.html