《分布式版本管理工具》git技术分享

简介: linux系统,创始人linus,1999年研发之后即开源。 2002年前,都是linus手动合并到代码库中。看中了BitKeeper,提供给linux免费试用权。 2005年,由于linux的一个大牛尝试破解BitKeeper。话说两周之后,linus创建了新的版本管理工具git。

一、背景


linux系统,创始人linus,1999年研发之后即开源。 2002年前,都是linus手动合并到代码库中。


看中了BitKeeper,提供给linux免费试用权。 2005年,由于linux的一个大牛尝试破解BitKeeper。


话说两周之后,linus创建了新的版本管理工具git。


二、git & github



github是网站,是基于git的代码托管平台。


三、git安装



官网下载地址:https://git-scm.com/downloads


  1. 一直下一步直至安装完成 校验 :git --version 查看版本号


  1. 配合github,查看开源项目的代码 github官网:https://github.com/


以slf4j为例,它的代码地址:https://github.com/qos-ch/slf4j


1.找到【clone or download】按钮,点击download zip (并不常用)


2.git clone + 链接地址 ,代表将远程代码克隆到本地

例如: git clone https://github.com/qos-ch/slf4j.git

在命令提示符中,先找到要存储代码的位置,然后执行clone

直接下载一个项目文件夹到本地,打开项目时,

可能需要选中Add as Maven Project这一项(pom.xml上右键)


3.配置git,获取更改的权限。

配置项:用户名和邮箱 (从github上注册获取)

命令:

git config --list 显示配置列表

git config --global user.name "${用户名}"

git config --global user.email "${邮箱}"


4.可选的配置秘钥,才能使用以git开头的链接地址,

如git@github.com:qos-ch/slf4j.git (Use SSH按钮)

在本地生成秘钥

ssh-keygen -t rsa -C "${邮箱}"

执行命令后,会提醒你设置文件夹保存key,默认是.ssh文件夹

不设置密码直接回车后,生成id_rsa.pub秘钥文件

在github上配置秘钥

用户右键 -> settings -> SSH and GPG keys -> new ssh key

验证是否添加成功

使用ssh -T git@github.com

或者直接执行 git clone git@github.com:qos-ch/slf4j.git


四、git使用



1)仓库,管理项目的最基础目录。


在github上创建。 然后clone到本地。会提醒这是一个空的仓库。


1.创建文件并提交的步骤

创建新文件后,会询问是否添加到git中,选择是。

如果文件是红色的,代表没有加入,

要通过手动添加的方式——> 项目右键 -> Git -> Add

文件从红色变为绿色,可以提交和推送。

项目右键 -> git -> commit file -> 在commit message中写上更改的备注 -> 选择commit and push -> 可以在github中看到更改和提交记录。

文件从绿色变为白色,代表和远程仓库是一致的。


2.要对文件进行更改的处理

在commit file中双击文件,可以查看到修改的内容的(和上一个版本比较)。


2)查看提交历史


git -> show history

展示谁在什么时间进行了什么修改。


查看某次提交所有相关的文件

在提交记录上右键 -> show all affected files

并且双击文件本身,可以查看对应的修改


3)回退


文件更改后,状态由白色变为蓝色。

回退更改 文件右键-> git -> revert -> 确认

回退提交 执行命令 git reset --hard HEAD~


  • –hard代表强制执行
  • HEAD~代表上一次提交 ~可以加上数字
  • HEAD~2返回上上次提交


五、git的理论知识



1)工作区和暂存区


工作区:就是存放代码的地方 (项目文件夹)


暂存区:临时存放改动的地方 (通常在新建文件时使用)


本地仓库:安全存放代码的地方


远程仓库:(github)


git add 将代码从工作区 -> 暂存区 (把文件托管git)

git commit 将代码从暂存区 -> 本地仓库 (存在一笔提交记录)

git push 将代码从本地仓库 -> 远程仓库 (促进多人合作)


2) 分支(平行时空)


互不影响又同时进行的合作方式

创建仓库时,自动创建一个master主干。


具体使用场景:

master 一般用来存放已上线的代码

开发新的功能时,创建新的分支,每个人使用自己的分支。

最终还是要合并的。 但是合并分支往往要解决冲突。


六、分支使用



1)创建分支


git branch + {分支名}

默认拉取master上代码到新创建的分支中

git checkout + {分支名}

通过查看git branch结果中 * 所在的位置,来定位分支


2)合并分支


master -> test

首先当前分支是需要合并过来代码的分支(master)

git merge test 效果是test的最新提交的代码会出现在master中。


3)冲突解决

项目右键 -> git -> conflicts resolved

三个对比框 最左侧是当前分支的代码(master) 最右侧待合并的分支代码(test) 中间想要的合并结果


4)推送到远程仓库

git push origin test:test

test:test 冒号前代表 本地分支的名字

冒号后代表 远程分支的名字


七、git仓库



分为本地仓库和远程仓库


  1. git init 新建一个本地代码库
  2. git clone 从远程拷贝
  3. git pull(拉取) 拿到远程仓库的修改
  4. git push(推送)提交给远程仓库修改


如果要创建一个自己的分支 确认要拉取代码的分支

确保是最新代码 git pull

然后执行创建分支的流程(从master拉取)

如果需要,再合并一次代码


写好代码后,再推送给远程仓库

让代码可以上线,将分支代码再合并回master中


八、git和svn那些事



git是分布式,svn是集中式的 git支持离线,svn必须联网


git学习成本高,复杂概念多,svn更简单

git一入深似海,从此svn是路人。


git分支廉价,svn分支昂贵


九、svn - 版本控制工具


1.下载安装 官网地址:https://subversion.apache.org/packages.html 找到最下方的

TortoiseSVN 小乌龟客户端

链接:https://osdn.net/projects/tortoisesvn/storage/1.13.1/Application/TortoiseSVN-1.13.1.28686-x64-svn-1.13.0.msi/

(验证:在文件夹中右键 能够看到svn checkout)

VisualSVN svn的服务端 找到VisualSVN Server的下载链接

链接:https://www.visualsvn.com/files/VisualSVN-Server-4.1.3-x64.msi


2.创建仓库、用户等 创建了用户、用户组,并且给用户组赋权 读写仓库。


3.下载代码 使用svn checkout时, 需要copy服务端仓库的url地址。 需要登录用户名和密码


4.提交代码 svn commit


相关文章
|
3月前
|
Linux 开发工具 数据安全/隐私保护
分布式版本控制git
分布式版本控制git
|
4月前
|
Linux 开发工具 数据安全/隐私保护
《Linux从练气到飞升》No.08 Linux的版本管理工具 git
《Linux从练气到飞升》No.08 Linux的版本管理工具 git
36 0
|
4月前
|
Dart Linux 开发工具
Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】-2
Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】
39 0
|
4月前
|
搜索推荐 Linux 程序员
Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】-1
Linux | 分布式版本控制工具Git【版本管理 + 远程仓库克隆】
41 0
|
6月前
|
存储 Linux 开发工具
Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理
Git简介与工作原理:了解Git的基本概念、版本控制系统和分布式版本控制的工作原理
194 0
|
7月前
|
开发工具 git
Git分布式版本控制工具 2
Git分布式版本控制工具
61 0
|
7月前
|
存储 Linux Shell
Git分布式版本控制工具1
Git分布式版本控制工具
65 0
|
8月前
|
存储 安全 开发工具
版本管理工具git 与 svn 的区别具体有哪些?
版本管理工具git 与 svn 的区别具体有哪些?
81 0
|
10月前
|
存储 XML Java
Git 分布式版本控制工具01
内容 - Git概述 - Git代码托管服务 - Git常用命令 - 在IDEA中使用Git
|
11月前
|
程序员 网络安全 开发工具
使用Git分布式控制系统
使用Git分布式控制系统
65 0

热门文章

最新文章