赞
踩
目录
随着IT企业的不断发展,版本控制系统无疑也加入了市场的主流,常见的版本控制系统有集中式版本控制工具和分布式版本控制工具。
集中式版本控制系统常见的就是SVN,每个人都拥有一个本地仓库,远程仓库是集中放在中央服务器的,也就是所有人共享一个远程仓库。
这也导致了集中式版本控制的一大问题,也就是单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也无法从服务器获取最新的文件。最坏的情况是,如果服务器的硬盘发生故障,并且没有做过备份或者备份不及时,还会有丢失数据的风险。
为了解决这个问题,于是推出了分布式版本控制系统这个概念,常见的有Git。分布式版本控制系统中,每个人都拥有一个本地的仓库,也拥有一个属于自己的远程仓库,这样分布式的设计就解决了单点故障带来的无法提交数据更新与硬盘数据丢失的问题。
接下来我们就开始介绍分布式版本控制工具Git,看看它是如何实现本地仓库与远程仓库数据的交互的。
版本控制系统能追踪项目,从开始到结束的整个过程。
对编程人员而言,版本控制技术是团队协作开发的桥梁,助力于多人协作同步进行大型项目开发。
软件版本控制系统的核心任务:查阅项目历史操作记录、实现协同开发。
Git是一个开源的分布式版本控制系统(Distributed Version Control System,简称DVCS)。
可以有效、高速地处理从很小到非常大的项目版本管理。
Git官网地址:https://git-scm.com/downloads
我们选择最新版即可,安装之后会得到一个exe安装包,直接傻瓜式安装即可。
安装之后我们鼠标右键或是在文件夹中会看见这两个快捷,一个是图形化界面的Git,一个是命令符的Git。个人建议这里还是选择命令符的Git !
安装完成 Git 后,正式使用git前,是需要进行一些全局设置的,如用户名、邮箱。
# 设置全局用户名
git config --global user.name "your name"
# 设置邮箱
git config --global user.email "your email"
#初始化本地仓库 git init
这样,我们本地库的配置和初始化就结束了。接下来是Git的一些常用命令。
#1.查看配置文件信息: git config --list
#2.查看文件状态:git status
#3.将文件添加到暂存区 (先要把文件添加到暂存区,再把文件提交到本地仓库)
#单个文件添加:git add 文件名
#将当前目录下的文件都添加到暂存区:git add .
#4.将暂存区文件提交到本地仓库
#普通提交:git commit
#带评论提交:git commit -m '你想说的话'
#5.查看文件提交的历史记录
#显示所有提交记录:git log
#显示单行提交记录:git log --pretty=oneline
#6.版本回退
#回退到 commit_id 指定的提交版本 :git reset --hard commit_id
#7.回到某个提交:先通过 git reflog 从历史命令中找到想要回到的提交版本的 ID, 然后通过 git reset --hard 来切换。
#8.删除文件(只能删除在本地仓库中的文件):git rm 文件名
概述:分支管理就是在初始化本地仓库的基础上,我们可以创建本地仓库的分支仓库。
分支仓库会包含主分支仓库的文件和内容,且主分支与分支对于文件的操作与修改互不影响。
也就是说,当我们提交一个文件到分支仓库,主分支不会包含分支仓库新提交的文件,修改也是。
#1.创建分支:git branch 分支库名称
#2.查看分支
#查看本地分支信息:git branch
#查看相对详细的本地分支信息:git branch -v
#查看包括远程仓库在内的仓库信息:git branch -av
#3.切换分支:git checkout 要切换的分支名称(可以切换主分支)
#4.创建并切换到分支:git checkout -b 分支库名称
#5.合并分支(必须要在主分支进行此操作):git merge 分支库名称
#6.删除分支:git branch -d 分支库名称
远程仓库就是一个可以将本地仓库中的文件上传到这个服务器,来实现数据可以共享。
常用的远程仓库有GitHub和码云(gitee),两者都是为本地仓库实现文件共享的一个远程仓库,GitHub是国外的远程仓库,所以当上传数据时可能会比较慢,所以这里我选择给大家介绍码云,也就是国内做的远程仓库,两者大同小异。
码云官网地址:https://gitee.com/
个人空间地址就是访问你远程仓库的地址
注册成功后,我们就可以创建自己的远程仓库了。
以后我们使用本地仓库想要去访问远程仓库时,通过克隆与下载的地址即可实现交互。
gitee支持四种同步远程仓库的方法,但是由于HTTPS是无状态协议,所以当我们想使用本地仓库向远程仓库传输文件时,我们需要验证用户名与密码,这就导致每次传输文件都需要验证一次用户。SSH恰恰弥补了这个缺点,我们只需要配置SSH地址的公钥和私钥,即可直接访问远程仓库。
在git命令符中执行命令,生成公钥和私钥:
ssh-keygen -t rsa
执行命令完成后,在window本地用户.ssh目录C:\Users\用户名.ssh下面生成如下名称的公钥和私钥,打开id_rsa.pub这个文件,然后把上面的内容复制下来,粘贴到gitee中配置SSH公钥的位置即可。
执行命令创建了私钥后,我们进入gitee中的SSH公钥将刚刚复制的代码粘贴进去。
(一)添加远程仓库:
如果已经有了一个本地仓库,,然后打算将它发布到远程,供其他人协作。
那么使用命令:
# 为本地仓库添加远程仓库
git remote add origin 远程仓库地址
如:git remote add origin https://gitee.com/junguang00/git_demo01.git注:
提示出错信息:fatal: remote origin already exists.
先输入
$ git remote rm origin
再输入:
git remote add origin 远程仓库地址
(二)查看远程仓库 :
如果想查看已经配置的远程仓库服务器,可以运行 git remote 命令。 它会列出指定的每一个远程服务 器的简写。 如果已经克隆了远程仓库,那么至少应该能看到 origin ,这是 Git 克隆的仓库服务器的默认名字。
# 命令形式:
git remote -v
# origin ——仓库服务器的默认名称
注:如果显示空,没有添加远程仓库。如果添加显示远程仓库地址
(三)推送本地内容到远程仓库 :
# 在本地仓库更新内容 添加暂存区
git add .
# 提交内容
git commit -m '信息'
# 当本地仓库中,代码完成提交,就需要将代码等推送到远程仓库,这样其他协作人员可以从远程仓库同步内容。
# 第一次推送时使用,可以简化后面的推送或者拉取命令使用
git push -u origin master
# 将本地 master 分支推送到 origin 远程分支
git push origin master
注意:
① git push -u origin master ,第一次使用时,带上 -u 参数,在将本地的 master 分支推送 到远程新的 master 分支的同时,还会把本地的 master 分支和远程的 master 分支关联起来。
② 推送之前,需要先pull远端仓库,如果发现提交版本不一致,出现错误
(四) 从远程仓库获取最新内容:
在多人协作过程中,当自己完成了本地仓库中的提交,想要向远程仓库推送前,需要先获取到远程仓库的最新内容。使用如下命令
git pull 在获取远程仓库的内容后,会自动做合并,可以看成 git fetch 之后 git merge 。
(五)移除无效的远程仓库:
# 命令形式:
git remote rm <shortname>
注意:此命令只是从本地移除远程仓库的记录,并不会真正影响到远程仓库
(六)从远程仓库克隆:
Git 克隆的是该 Git 仓 库服务器上的几乎所有数据(包括日志信息、历史记录等),而不仅仅是复制工作所需要的文件。 当你 执行 git clone 命令的时候,默认配置下远程 Git 仓库中的每一个文件的每一个版本都将被拉取下来。
如果你本地没有仓库,希望从已有的远程仓库上复制一份代码,那么你需要 git clone 。
# 通过 https 协议,克隆 Github 上 git 仓库的源码
git clone https://github.com/lagou-zimu/repo1.git
# 通过 ssh 协议,克隆 Github 上 git 仓库的源码
git clone git@github.com:lagou-zimu/repo1.git
(七)从远程仓库拉取:
# 拉取 命令形式:git pull【远程仓库名称】【分支名称】
(八)解决合并的冲突:
在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。
例如:
A用户在本地修改代码后优先推送到远程仓库,此时B用户在本地修订代码,提交到本地仓库后,也需 要推送到远程仓库,此时B用户晚于A用户推送,故需要先拉取远程仓库代码,经过合并后才能推送代 码。在B用户拉取代码时,因为A、B用户同一段时间修改了同一个文件的相同位置代码,故会发生合并 冲突。解决:
① 先拉取代码
② 打开代码解决冲突
③ 再提交
#1. 初始化并提交项目到远程仓库 【项目leader操作】
① 初始化并提交项目到远程仓库 【项目leader操作】
执行步骤:
1. 在GitHub/码云中创建远程仓库
2. 将工程交给Git管理
3. 配置忽略文件
4. 提交到本地仓库
5. 推送到远程仓库
② 在gitee上创建仓库
③ 将工程交给Git管理
④ 配置忽略文件
⑤ 提交到本地仓库
⑥ 推送到远程仓库
2. 克隆远程仓库到本地【开发人员】
① 从远程仓库克隆
① 新增文件:新文件状态红色,未进入暂存区
加入git之后,红色变绿色,已经进入暂存区
② 编辑文件:修改文件 变成蓝色
正常编辑的文件默认放在暂存区,不需要再添加到暂存区
③ 重置文件到修改前
比如修订了某一文件,需要重置到修改文件之前的状态,选择文件,右键菜单:选择Git--->Revert
重置后,文件颜色自动消失,说明已重置到修改之前的状态。
④ 提交当前文件
⑤ 本地仓库推送到远程仓库
操作步骤:
1. 推送前一定要先拉取远程仓库对应分支
2. 如果有冲突,先解决冲突,并提交到本地仓库
3. 推送当前分支到远程仓库
冲突:如果A、B两个分支都在操作同一文件。当A分支提交远程仓库之后,B分支再提交的话会产生冲突
解决:先拉取,解决完冲突,再push
再推送到远程仓库
操作步骤:
1. 创建分支
2. 切换分支执行操作
3. 执行合并操作,master合并dev
4. 同步远程仓库
① 创建分支
② 切换分支执行操作
③ 执行合并操作(将dev分支合并到master分支)
④ 同步远程仓库
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。