1.Git和SVN的对比
1)git是分布式的,svn是集中式的。(最核心)
2)git是每个历史版本都存储完整的文件,便于恢复,svn是存储差异文件,历史版本不可恢复。(核心)
3)git可离线完成大部分操作,svn则不能。
4)git有着更优雅的分支和合并实现。
5)git有着更强的撤销修改和修改历史版本的能力
6)git速度更快,效率更高。
基于以上区别,git有了很明显的优势,特别在于它具有的本地仓库。
2.git几个概念
1)工作目录
工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
![](/qrcode.jpg)
2)暂存区域
是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。有时候也被称作`‘索引’’,不过一般说法还是叫暂存区域。
3)Git 仓库目录
是Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
3.git使用
1)常用选项
add 把工作目录内容添加到暂存区域
branch 查看和设置分支
checkout 切换分支和撤销
clone 克隆远程仓库
commit 把暂存取余提交到仓库
init 初始化工作目录
log 查看提交的日志信息
merge 合并分支
pull 拉取远程仓库
push 把本地内容推送到远程仓库
reset 撤销操作
status 查看文件所处的状态
2)使用
创建和初始化目录
mkdir /git_li
cd /git_li
git init
创建文件进行测试
echo "test" >test
git add . #把工作目录下的所有文件提交到暂存区域
git commit -m "v1" #把暂存区域的内容提交到仓库并标识为v1版本
git config --global user.email "[email protected]" #进行认证
git config --global user.name "Your Name"
再次提交
查看版本信息
gitlog
多次提交并设置为不同版本
echo "123" >> test
git add .
git commit -m "v2"
[master 4c1ef68] v2
1 file changed, 1 insertion(+)
echo "123" >> test
git add .
git commit -m "v3"
[master 7cb610b] v3
切换至V1版本
git reset --hard 8a3e5e13ab
工作目录回滚
git checkout -- test #进行工作目录状态撤销
暂存区域回滚
git reset HEAD test #不提交至仓库
git checkout -- test #工作目录中撤销
查看历史版本信息
git reflog
3)git分支
查看分支
git branch
创建分支
git branch test
切换分支
git checkout test
合并分支
git merge test
4.gitlab私有仓库
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
5.安装gitlab
1)下载安装包
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm/download.rpm
2)修改ip
vim /etc/gitlab/gitlab.rb
external_url 'http://192.168.52.233'
3)重新配置
gitlab-ctl reconfigure
gitlab-ctl start
启动gitlab时80端口不可被占用
4)gitlab使用
git clone http://192.168.52.233/root/test.git
git push -u origin master
5)linux免秘钥使用gitlab
ssh-keygen 生成秘钥
公钥粘贴到gitlab的ssh-keys中
拉取gitlab项目
git clone [email protected]:root/test.git