git版本控制

目录

版本控制

版本库

分布式版本控制

git

git的工作原理

基本的 Git 工作流程如下:

git客户端

使用git

HEAD指针

git分支

常用的分支:

使用分支

tag标记

分支与head的关系

问题:

客户端与git服务器通信的方式有哪些

Git移动HEAD指针的命令是什么

Git如何创建并切换分支


版本控制

版本库

  • 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

  • 简单来说,就是为目录打快照。将来可以回到某一个历史记录点。

  • 是一个典型的客户端/服务器模型(C/S模型)

  • 版本库是版本控制的核心

 

分布式版本控制

集中式版本控制系统

  • 开发者之间共用一个仓库

  • 所有操作需要联网

分布式版本控制系统

  • 每个开发者都是一个仓库的完整克隆,每个人都是服务器

  • 支持断网操作

git

  • 是一个分布式的代码管理工具

  • 可以是C/S架构,也就是Client/Server

  • 只要有适当的权限,每个客户端都可以下载或上传数据到服务器

git的工作原理

git重要的三个工作区域:

  • 工作区:写代码的目录。就是项目代码存放的目录,放在磁盘上供你使用或者修改。

  • 暂存区:工作区与版本库之间的缓冲地带。位置是.git/index,就是一个索引文件,保存了下次 提交的文件列表信息

  • 版本库:工作区快照存放的目录。在工作区下,名为.git的目录

 

基本的 Git 工作流程如下:

  1. 在工作区中修改文件。

  2. 将想要提交的更改暂存,这样会将更改添加到暂存区。

  3. 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。

git客户端

# 安装git
[root@develop ~]# yum install -y git
# 设置使用者的名字和email地址
[root@develop ~]# git config --global user.name zhangzhg
[root@develop ~]# git config --global user.email zhangzg@tedu.cn
# 查看git配置信息
[root@develop ~]# git config --list
user.name=zhangzhg
user.email=zhangzg@tedu.cn
[root@develop ~]# cat ~/.gitconfig 
[user]
	name = zhangzhg
	email = zhangzg@tedu.cn

使用git

# 初始化git,方法一,通过git创建名为mytest的目录:
[root@develop ~]# git init mytest
初始化空的 Git 版本库于 /root/mytest/.git/
[root@develop ~]# ls
mytest
[root@develop ~]# ls -A mytest/
.git
# 初始化git,方法二,对已存在的目录操作:
[root@develop ~]# mkdir myweb; cd myweb
[root@develop myweb]# echo 'Hello World' > readme
[root@develop myweb]# git init
初始化空的 Git 版本库于 /root/myweb/.git/
[root@dev myweb]# ls -A
.git  readme
# 安装中文支持
[root@develop myweb]# yum list | grep zh
[root@develop myweb]# yum install -y langpacks-zh_CN.noarch
[root@develop myweb]# git status   # 查看状态
位于分支 master


尚无提交


未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)
   readme


提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
# 暂存目录下所有文件
[root@develop myweb]# git add .   # 把当前目录所有内容放到暂存区
[root@develop myweb]# git status
位于分支 master


尚无提交


要提交的变更:
  (使用 "git rm --cached <文件>..." 以取消暂存)


	新文件:   readme


# 提交文件,真正打快照。commit,确认。-m:即message,对该快照的说明
[root@develop myweb]# git commit -m "项目初始化"   # 将暂存区数据写入版本库
# 查看状态,干净工作区是指工作区中的内容和版本库中的内容相同。打快照之后,工作区中的文件没有变化。
[root@develop myweb]# git status
位于分支 master
无文件要提交,干净的工作区

HEAD指针

  • HEAD是一个可移动的指针。

  • 它可以指向任何分支或版本。

  • 通过移动指针,可以将数据还原至任何版本。

  • 指针指向哪里,工作区中就显示相应的数据。正所谓“想看哪里,指哪里”。

还原数据到特定版本(移动HEAD指针)

# 查看工作区内容
[root@develop myweb]# ls
1.txt  2.txt  readme
# 查看历史版本
[root@develop myweb]# git log --oneline
70c927d (HEAD -> master) 增加2.txt
24c555d 增加1.txt
0629cc7 项目初始化
# 还原到版本:24c555d
# --hard丢弃工作区和暂存区文件的改动
[root@develop myweb]# git reset --hard 24c555d
HEAD 现在位于 24c555d 增加1.txt
[root@develop myweb]# ls
1.txt  readme

git分支

  • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。

  • 可以按功能创建分支,分支可以合并。

  • git的默认分支名为master。它在功能上与用户创建的分支没有区别。

常用的分支:

  • Master: 主分支;主要是稳定的版本分支,正式发布的版本都从Master拉。

  • Develop: 开发分支;更新和变动最频繁的分支,正常情况下开发都是在Develop分支上进行的。

  • Release:预发行分支;一般来说,代表一个版本的功能全部开发完成后递交测试,测试出Bug后进行修复的分支。

  • Features: 功能分支; 其实Features不是一个分支,而是一个分支文件夹。里面包含了每个程序员开发的功能点。Feature开发完成后合入Develop分支。

  • HotFix: 最希望不会被创建的分支;这个分支的存在是在已经正式上线的版本中,发现了重大Bug进行修复的分支。

使用分支

# 查看分支
[root@develop myweb]# git branch 
* master
# 创建名为b1的分支
[root@develop myweb]# git branch b1
[root@develop myweb]# git branch 
  b1
* master  # 当前在哪个分支,前面有*标识
# 切换分支
[root@develop myweb]# git checkout b1
切换到分支 'b1'
[root@develop myweb]# git branch 
* b1
  master
# 在分支上提交代码
[root@develop myweb]# echo 'b1 branch' > b1.txt
[root@develop myweb]# ls
1.txt  2.txt  b1.txt  readme
[root@develop myweb]# git add .
[root@develop myweb]# git commit -m "b1上提交b1.txt"
# 合并b1分支到master
[root@develop myweb]# git checkout master
切换到分支 'master'

tag标记

  • 可以将某一次提交打标记,以示本提交重要。

  • 通常用于将某次提交标记为一个软件发行版本。

# 查看所有的tag
[root@develop myweb]# git tag
# 为现在的版本打标记为1.0
[root@develop myweb]# git tag 1.0
[root@develop myweb]# git tag
1.0
# 切换到指定标记1.0
[root@develop myweb]# git checkout 1.0

分支与head的关系

 

问题:

客户端与git服务器通信的方式有哪些

  • 本地访问 git clone file:///var/git/project

  • ssh服务器方式访问 git clone root@服务器IP:/var/git/project

  • git服务器方式访问 git clone git://服务器IP/var/git/project

  • web服务的方式 firefox http://服务器IP/git

Git移动HEAD指针的命令是什么

  • git reset --hard 版本编号

Git如何创建并切换分支

  • 创建分支:git branch 分支名称

  • 切换分支:git checkout 分支名称

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值