git 操作
1 覆盖情况
两个人分别提交之后会覆盖另一个人
2 版本控制的功能
这个地方还要细细看看git 与 svn的区别
版本控制是一种思想 具体的实现有 git svn
git(分布式 本地完整版本控制) 本地有完整的版本历史
svn (集中式) 服务器一旦出现问题 (单点故障)
3 git github历史
4 git优势
1 本地有完整的历史
2 每一次提交的操作进行hash的计算
5 git结构
6 git 和代码托管中心
帮我们维护远程库
7 本地库和远程库交互方式
团队内
团队外
本地git 与远程github连接
一、注册账户以及创建仓库
要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。步骤如下:
1、打开https://github.com 直接在首页上注册
2、点按钮注册成功之后,在页面上方用户菜单上选择 “+”->New repository 创建一个新的仓库
3、为仓库取一个名字,点击创建仓库按钮 你将成功创建一个仓库
二、安装git客户端
github是服务端,要想在自己电脑上使用git我们还需要一个git客户端,
windows用户请下载 http://msysgit.github.com/
mac用户请下载 http://code.google.com/p/tortoisegit/
一路next,安装成功后, 回到C盘,或任何文件夹下,点鼠标右键会多出一些菜单
如Git Bash here、Git Gui , 说明安装成功。
三、配置Git
我们先在电脑硬盘里找一块地方存放本地仓库,比如我们把本地仓库建立在C:java\git文件夹下
进入git文件夹 鼠标右键操作如下步骤:
1)右键Git Bash进入git命令行,截图效果如下:
为了保险起见,我们先执行git init命令
$ git init
为了把本地的仓库传到github,还需要配置ssh key。
2)在本地创建ssh key
$ ssh-keygen -t rsa -C "your_email@youremail.com"
后面的your_email@youremail.com改为你的邮箱。我的邮箱是18370876897@163.com:
直接点回车,说明会在默认文件id_rsa上生成ssh key。
然后系统要求输入密码,直接按回车表示不设密码
重复密码时也是直接回车,之后提示你shh key已经生成成功。
然后我们进入提示的地址下查看ssh key文件。 我的电脑的地址是C:\Users\sihai\.ssh ,其中sihai是我的电脑的名称
打开id_rsa.pub,复制里面的key。里面的key是一对看不懂的字符数字组合,不用管它,直接复制。
回到github网站,进入Account Settings,左边选择SSH Keys,Add SSH Key,
title随便填,粘贴key。
3)验证是否成功,在git bash下输入
$ ssh -T git@github.com
回车就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
4)接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们
$ git config --global user.name "your name"
$ git config --global user.email "your_email@youremail.com"
5)进入要上传的仓库,右键git bash,添加远程地址
$ git remote add origin git@github.com:yourName/yourRepo.git
后面的yourName和yourRepo表示你再github的用户名和刚才新建的仓库,加完之后进入.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址,也可以直接修改config来配置远程地址。
与github上的对应
好了,到现在已经将本地的git和GitHub连接起来了。
8 设置签名
项目级别
系统用户级别
9 查看状态
未追踪的
已经提交到暂存区了
从暂存区删除了
10 日志
Head是当前的指针
每次只显示一行
11 前进或者后退历史版本
git reflog 可以查看所有分支的所有操作记录(包括(包括commit和reset的操作),包括已经被删除的commit记录,
git log则不能察看已经删除了的commit记录,而且跟进结果可以回退道某一个修改:
Git reset –hard 9a9ebe0
回退到哪个版本
其它的后退操作
hard mixed soft对比
Soft
mixed
hard
12 永久删除文件找回
git reset HEAD
是将咱暂存区和HEAD的提交保持一致
git reset --hard HEAD
是将工作区、暂存取和HEAD保持一致
13 比较文件
显示行号
14分支
Git 分支比svn效率高
查看有多少分支
创建分支
现在,你已经决定要解决你的公司使用的问题追踪系统中的 #53 问题。 想要新建一个分支并同时切换到那个分支上,你可以运行一个带有 -b 参数的 git checkout 命令:
$ git checkout -b iss53
Switched to a new branch "iss53"
它是下面两条命令的简写:
$ git branch iss53
$ git checkout iss53
然后在新的分支上进行操作
合并到主分支
1 切换到主分支
2 Merge到主分支了
合并冲突解决
Head 当前分支的内容
====到master为另一个的内容
15 Git原理
哈希
数据管理机制
SVN
Git
Git 文件管理机制细节
最右边就是提交时的各个文件,中间就是文件树,左边就是提交对象
Git如何管理分支
16 github
推送的时候设定推送地址
拉取操作
协同开发解决冲突
以上状态就是有冲突了
跨团队协同开发
1 Fork
2发起pull request
进行审批
看看修改过哪些
4合并
5 然后拉取到本地
ssh免密登陆
17 编译器与git进行绑定
Eclipse
右击项目 team commit
Eclipse中解决冲突
和beyongCompare差不多
对比
拉取分支
合并
18 忽略文件
Gitignor文件需要设置的东西
#.gitignore常用格式
# *.a 忽略所有 .a 结尾的文件
# !lib.a 但 lib.a 除外
# /TODO 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
# build/ 忽略 build/ 目录下的所有文件
# doc/*.txt 会忽略 doctes.txt 但不包括 docrver/arch.txt
配置文件
19 工作流
分支种类
20 gitlab搭建过程
centos
上传gitlab
1新建一个脚本文件
2安装命令放到脚本里面
改权限可以执行的
执行
重启
看看防火墙
Ubuntu
1.安装依赖包
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
2. 邮件配置
选择Internet那一项,不带Smarthost的sudo apt-get install -y postfix
3. 添加镜像
免费版curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
企业版curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
4. 安装
sudo apt-get update
sudo apt-get install gitlab-ce
或者 sudo apt-get install gitlab-ee
5. 配置访问路径
sudo -e /etc/gitlab/gitlab.rb
修改下图中的路径
6. 更新配置
sudo gitlab-ctl reconfigure
7. 重新启动gitlab
sudo gitlab-ctl restart
结果如下图
6. 更新配置
sudo gitlab-ctl reconfigure
7. 重新启动gitlab
sudo gitlab-ctl restart
结果如下图
8. 打开 sshd 和 postfix 服务
service sshd start
service postfix start
9. 查看gitlab服务器状态
sudo gitlab-ctl status
10. 结果
在浏览器中访问http://127.0.0.1
21更改git url
查看更改后的