git基本使用知识点总结
建议直接访问我的gitee,以为有些图片没有完整下下来 http://coderwcb.gitee.io/javaweb/#/git/
一、引言
在单人开发过程中,需要进行版本管理,以利于开发进度的控制;
在多人开发过程中,不仅需要版本管理,还需要进行多人协同控制。
二、介绍
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目;
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件;
官网:https://git-scm.com/
三、Git安装
3.1、下载Git
下载Git https://git-scm.com/downloads
3.2、安装
安装,除了安装位置外,其他一直下一步即可
3.3、基本配置
安装后,打开cmd ,自报家门
如下信息会在提交代码时要使用,记录在你的每次提交中。以后才知道哪次提交是谁做的。
git config --global user.name "Your Name" #用户名
git config --global user.email "email@example.com" #邮箱
# 查看信息
git config -l 复制Error复制成功
3.4、测试
测试:CMD中执行 ,查看git版本
git version 复制Error复制成功
四、架构
版本库:工作区中有一个隐藏目录
.git
,这个目录不属于工作区,而是git的版本库
,是git管理的所有内容;暂存区:版本库中包含一个临时区域,保存下一步要提交的文件;
分支:版本库中包含若干分支,提交的文件存储在分支中。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HqGcSLr7-1632399596466)(http://coderwcb.gitee.io/javaweb/git/asset/img/README/暂存区.jpg)]
五、仓库
对应的就是一个目录,这个目录中的所有文件被git管理起来;
以后会将一个项目的根目录,作为仓库;
仓库中的每个文件的改动都由git跟踪。
5.1、新建仓库
选择一个目录,执行指令:
git init
新建仓库 | 仓库目录 |
---|---|
5.2、工作区
执行
git init
的目录即为工作区,如上例,D:\repo1
目录即为工作区(不包含.git
目录)所有文件,都首先在工作区新建,然后可以存入仓库(版本库),进行版本控制。
5.3、暂存区
暂存区也在
.git
目录内,工作区的文件进入仓库时,要先进入暂存区。
5.4 分支
版本控制,简单说,就是记录文件的诸多版本,分支就是这些版本的最终记录位置。
六、基本操作
6.1、查看仓库状态
执行
git status
可以看到工作区中文件的状态
6.2、暂存文件
行
git add
将工作区中的文件全部[存入暂存区
6.3、提交文件
执行git commit -m "这里写提交的描述信息"
作用是将暂存区的文件存入分支,形成一个版本
七、远程仓库
第5章中的仓库,其实是本地仓库。
当多人协同开发时,每人都在自己的本地仓库维护版本。
但很重要的一点是,多人之间需要共享代码、合并代码,此时就需要一个远程仓库(公共)。
7.1、远程仓库工作模式
远程仓库工作模式 |
---|
7.2、远程仓库选型
有很多远程仓库可以选择,比如 :
- Github
- 码云
此两种可以注册自己测试使用,但如果是商业项目,需要更多支持需要付费。
7.3、基本操作
每个开发人员,在面对远程仓库时,会面临的一些基本操作。
7.3.1、注册git服务器账号
在码云注册账号,并登录。
进入公司后,很可能会使用公司自己搭建的git服务器,则账号向领导索要即可
点击注册,完成注册过程 | |
---|---|
登录后显示主页 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6aFEEzQR-1632399596485)(http://coderwcb.gitee.io/javaweb/git/asset/img/README/码云登录.jpg)] |
7.3.2、新建远程仓库
创建远程私有仓库-01 |
---|
创建远程私有仓库-02 |
---|
创建远程私有仓库-03 |
---|
7.3.3、本地关联远程仓库
本文档中选用仓库的 https协议的地址,将此地址关联到本地git中
如此后,本地即可用“origin” 代指远程仓库 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Cw44egj-1632399596489)(http://coderwcb.gitee.io/javaweb/git/asset/img/README/关联远程仓库.jpg)] |
7.3.4、推送文件到远程仓库
将本地仓库中已经commit的内容push到远程仓库,以共享自己的代码。
push |
---|
输入凭证,如此码云才能接受此次上传的内容 |
---|
7.3.5、克隆远程仓库
果仓库已经由别人创建完毕,我们需要其中的内容,则可以通过 [git clone
新建目录“repo2”,然后在其中执行 git clone |
---|
远程仓库,复制到本地,并自动初始化为一个本地仓库 |
---|
7.3.6、代码共享
人协同开发时,写好代码的[git push
有人再次将本地仓库内容,上传到了远程仓库 |
---|
重点:此时另一方如果想获得更新,则需要做一次拉取 git pull |
---|
7.3.7、命令汇总
命令 | 描述 |
---|---|
git remote add 标识名(master) 远程地址 | 本地关联远程仓库 |
git push 标识名 master | 将本地仓库内容上传到远程仓库 |
git pull 标识名 master | 从远程仓库下载内容到本地仓库 |
git clone 远程地址 | 将远程仓库复制到本地,并自动形成一个本地仓库 |
八、分支
8.1、分支简介
分支,是一个个版本最终存储的位置。
分支,就是一条时间线,每次
git commit
形成一个个版本,一个个版本依次存储在分支的一个个提交点上。
分支由多个提交点组成,分支上会有一个指针,默认总是指向最新的提交点 |
---|
8.2、分支操作
8.2.1、查看分支
查看当前仓库的分支
git branch
仓库中默认只有master分支
执行
git commit
时,默认是在master分支上保存版本。
默认只有master分支 |
---|
8.2.2、创建分支
在商业项目开发过程中,我们不会轻易的在
master
分支上做操作。我们会新建一个开发用的分支,在此分支上做版本的记录。
当代码确实没有问题时,才会将开发分支上成熟的代码版本添加到
master
分支上。保证开发过程中,可以及时记录版本,又保证
master
分支上每个提交点都是稳健版本。
创建分支 |
---|
8.2.3、切换分支
默认情况下,当前使用的分支是master分支
可以切换到dev分支,则后续的
git commit
便会在dev分支上新建版本(提交点)
切换分支 |
---|
再次查看分支情况 |
---|
8.3、新建分支细节
新建分支时,新分支,默认有哪些内容?分支中包含了哪些次提交?
8.3.1、新分支初始内容
每个分支都有一个指针,新建一个分支,首先是新建一个指针。
而且新分支的指针会和当前分支指向同一个提交点。
新分支包含的提交点就是从第一个提交点到分支指针指向的提交点。
每个分支都有一个指针,新建一个分支,首先是新建一个指针 |
---|
8.3.2、多分支走向
在master分支和新分支,分别进行
git add
和git commit
分支情况如下图:
master分支未动,在dev分支增加一次commit |
---|
master分支增加一个commit,dev分支再增加一个commit |
---|
8.3.3、分支提交日志
查看分支的提交日志,进而看到分支中提交点的详细情况。
提交情况如下 |
---|
查看当前分支的提交日志 |
---|
8.4、分支合并
两个分支内容的合并
git merge 分支a
合并分支a合并的方式有两种:快速合并和三方合并。
8.4.1、快速合并
如果分支A当前的修改,是完全基于分支B的修改而来,则B分支合并A分支,就是移动指针即可。
合并前分支状态 |
---|
快速合并效果(master 合并 dev) |
---|
8.4.2、三方合并
在不具备快速合并的条件下,会采用三方合并。
合并前,分支状态 |
---|
三方合并,将2 和3 的更改都累加在1 上,形成新的提交点
|
---|
8.4.3、合并冲突
两个分支进行合并,但它们含有对同一个文件的修改,则在合并时出现冲突,git无法决断该保留改文件哪个分支的修改。
8.4.3.1、冲突演示
场景模拟如下:
master分支修改hig.txt文件 |
---|
dev分支修改hig.txt |
---|
在master分支合并dev分支
合并dev分支 |
---|
此时,打开hig.txt文件:
冲突后,git会将两个分支的内容都展示在文件中 |
---|
8.4.3.2、冲突解决
出现冲突后,如要由两个开发人员当面协商,该如何取舍,为冲突文件定义最终内容。
解决方案:
- 保留某一方的,删除另一方的
- 保留双方的
. 但无论如何,要记得删除 [<<<< ==== >>>>- 本质是两人协商为冲突的内容,定制出合理的内容。
根据协商,再次编辑文件 |
---|
提交 再次编辑后的文件 |
---|
九、Idea关联Git
9.1 关联Git
File > Settings关联过程是自动的
此处关联是Idea可以自动完成的 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OqO1AIE1-1632399596526)(http://coderwcb.gitee.io/javaweb/git/asset/img/README/idea-关联git.jpg)] |
9.2 创建仓库
新建项目后,将项目目录创建为git仓库
注意: 要在建仓库前,设置忽略文件".gitignore"
- 作用:被忽略的文件会被版本记录忽略,版本中不包含它们。
- 范围:不需要和其他开发共享的文件,具体见下图。
创建仓库前,先添加忽略文件 |
---|
将项目目录初始化为一个仓库 |
---|
9.3 提交-commit
创建好仓库后,做第一次提交。
选择提交菜单 |
---|
选择提交文件,定义提交信息 |
---|
之后会有些友好提示,可以忽略,点击“commit” 即可
|
---|
9.4 创建分支
新建开发分支
点击右下角链接,即可 |
---|
新建分支 |
---|
查看当前分支 |
---|
9.5 上传到远程仓库(push)
- 请首先参照第7章,创建一个远程仓库。
- 要求是裸库,且建议库名和项目名同名。
选择push 菜单
|
---|
定义远程仓库地址 |
---|
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7pDBSuMp-1632399596534)(http://coderwcb.gitee.io/javaweb/git/asset/img/README/idea-push3.jpg)] |
执行,push操作 |
---|
push成功后 ,弹窗提示 |
---|
9.6 复制到本地仓库(clone)
如果有建好的远程仓库,比如公司内已经在用的仓库,或者github,码云上的一些公开仓库,
可以将远程仓库的项目复制到本地使用。
点击克隆菜单 |
---|
输入如远程仓库地址 |
---|
打开项目 |
---|
打开项目,选项 |
---|
9.7 更新本地项目
如果远程仓库有更新,则你的本地项目也需要一起更新。
选择pull菜单 |
---|
执行 pull操作 |
---|
更新日志显示 |
---|
9.8 冲突解决
合并分支时,如果出现冲突,则需要解决冲突。
冲突出现,弹窗中可以选择如下 |
---|
也可以直接修改冲突文件,然后commit即可 |
---|
十、多人协同开发
多人开发协同,git操作
10.1 项目管理员( 项目经理 )
由管理员负责创建一个远程库,初始的库中什么也没有,为裸库。库的名称建议和项目同名
管理员会在idea中创建一个初始项目,其中包含.gitignore文件。
并在项目根目录下 建立本地库。并建立 dev分支。
管理员将本地库上传到远程库
将其他开发人员拉入远程库的开发成员列表中,使得其他开发人员可以访问该远程库。
流程如下:
点击添加成员 |
---|
选择直接添加 |
---|
提交 |
---|
查看已添加的开发成员 |
---|
master分支设置为
protected分支
,只有管理员有权限将代码合并到其中。dev分支设置为常规分支
所有开发人员 都可以其中合并代码
进入分支设置 |
---|
设置保护分支,让master分支不能被随更改 |
---|
10.2 开发人员
- 初始化:在idea中clone 远程库,获得项目。会建立本地库
- 后续的开发中,都要在dev分支上进行。开发完一个功能并测试通过后就commit 提交到本地的dev分支中,然后 上传(push)到远程dev分支中。
- 需要更新项目内容时,通过 pull 从远程仓库拉取内容。
- 注意:多人协同时,每次在 push 到远程库前,都先做一次pull,一来是把远程最新内容合并到本地,二来是核实本地内容是否和远程内容有冲突。
- 后续的开发,会接到一个个的功能任务,往复操作 2、3、4而已。
十一、经典问题
在使用https协议做push时,如果曾经使用过码云,但密码有过改动,此时会报错
使用https协议报错 |
---|
解决方案:
控制面板-凭据管理器
删除对应凭证,再次使用时会提示重新输入密码。
删除之前的码云凭证,然后重新push即可 |
---|
git基本使用知识点总结相关推荐
- git fetch和git pull的区别_Git实战(实验楼)学习笔记 实验2 基本用法(下)
一.实验介绍 本节实验为 Git 入门第二个实验,继续练习最常用的 Git 命令. 知识点 对比差异 分布式的工作流程 Git 标签 实验环境 实验环境为 Ubuntu Linux 命令行环境,需要了 ...
- 读者专属福利: Git面试宝典分享
我最近面试中高级的开发岗应聘者时,几乎人人都写了熟练掌握Git.然而我用一道Git的面试题刷掉了一多半面试者(所以简历上写的技能面试前一定要好好做功课哦).这道题是:请说明 git clone.git ...
- git修改commit注释_【Slog】Git之多人同feature的同分支开发
抛出问题 多人对同一feature分支进行开发如何最有效.简洁? 这是最近我一直在思考的问题.这个场景有什么问题呢?先来看看通常的做法.一般一个人会对应一个分支来对feature进行开发,与IT不同的 ...
- 作为学生借助 CODECHINA 这样学习 Git 知识
目录 CODECHINA CODECHINA Learning LAB 发现开源课程: <Git 入门> 一键点击「开始学习」 通过 CODECHINA 学习 Git 知识 开始学习 查看 ...
- 哈工大软件构造期末知识点总结
哈工大软件构造试题构成: 1.30-45分的选择题,10-20题 2.55-70分的简答与设计题,5-6题 考试知识点(不全面): 1.git工具的知识点 2.Java设计模式(一共有23个,主要考察 ...
- git的使用及流程(详细)
## git的使用及流程 知识点1[git的概述] 代码管理工具概念:多人协同开发时管理代码. 作用: 防止代码丢失,可以做备份 代码版本的管理,可以进行多个版本之间的跳跃 可以方便的将代码在多人之间 ...
- Git 删除文件后找回方式总结
文章目录 知识点排列 一.Git特性--.git只增不减 二.基于索引值的找回操作 git reset命令 参数对比 三.文件恢复的几类情景 1.工作区删除文件,在尚未提交删除记录到本地版本库前,恢复 ...
- github --- 多个项目的管理方式
1. 多个项目管理方式 进入项目根目录: git init 将当前的项目添加到暂存区中: git add . (注意: 最后有一个点) 将暂存区的内容放到本地仓库: git commit -m '初始 ...
- C++文件服务器项目—数据库表设计 与 后端接口设计—6
C++文件服务器项目-数据库表的设计-6 前言 1. 数据库建表 1.1 用户信息表 user_info 1.2 文件信息表 file_info 1.3 用户文件列表表 user_file_list ...
- 哈工大软件构造 复习
哈工大软件构造试题构成: 1.30分的选择题 2.70分的简答题 2019考试知识点(重要的,但不涵盖全部考试范围): 1.git工具的知识点(没有考察命令行,考察的主要是git的演变及各部分的作用) ...
最新文章
- 模型的可解释性:部分依赖图PDP和个体条件期望图ICE
- 中国学前教育行业投资机会评估与运营展望规划报告2022版
- Serverless:这真的是未来吗?(一)
- 《零基础看得懂的C语言入门教程 》——(七)C语言的循环分分钟上手
- cocoa pods的安装与我遇到的问题
- java中intvalue_Java Short类intValue()方法及示例
- Win7系统忘记登入密码的解决方法
- android字符串显示textview,Android编程:TextView不显示完整字符串
- weblogic 12C集群环境下的session复制
- 百度语音识别最新资讯
- java基础之静态代理和动态代理
- python计算手机销量年增长率_python如何计算环比增长率
- 高新技术背景下超大城市垃圾处理的成本控制研究
- 做大数据的公司_技术
- 苹果市值破万亿,iPhone 会涨价吗?
- ug二次开发环境配置
- 十一章——Trangle类
- CVE-2021-42287、CVE-2021-42278域内提权漏洞
- Vue —— 排他思想
- 这四款超级实用的PC软件,你还没用过吗?
热门文章
- ASP.NET-Request对象
- 20145302张薇《Java程序设计》第三周学习总结
- OpenCV学习笔记(二十六)——小试SVM算法ml
- 生活大爆炸第7季第6集Howard写给Bernadette的歌
- 拓端tecdat|【视频】Lasso回归、岭回归等正则化回归数学原理及R语言实例
- 拓端tecdat|R语言预测期货波动率的实现:ARCH与HAR-RV与GARCH,ARFIMA模型比较
- oracle 没有debug权限,开启Oracle的debug级别日志
- css两列等高,实现一个两列等高布局,讲讲思路
- matlab 矩阵动态,matlab – 如何以块为单位动态重塑矩阵?
- vs2017安装qt