git学习笔记

目录

 

一、版本控制简介

1、版本控制

2、版本控制工具

3、版本控制工具应该具备的功能

二、Git简介

1、Git简史

2、git的优势

3、Git结构

4、Git和代码托管中心

5、本地库和远程库

三、Git命令行操作

1、本地库初始化

2、设置签名

3、基本操作

3.1、状态查看

3.2、添加

3.3、提交

3.4、查看历史记录

3.5、前进后退

3.6、reset命令的三个参数对比

3.7、删除文件并找回

  3.8、比较文件差异

四、分支管理

1、什么是分支?

2、分支的好处

3、分支操作

3.1、创建分支

3.2、查看分支

3.3、切换分支

3.4、合并分支

五、git基本原理

1、哈希

2、git保存版本的机制

六、GitHub

1、账号信息

2、创建远程库

3、常见远程库地址别名

4、推送

5、克隆

6、团队成员邀请

7、拉取

8、解决冲突

9、跨团队协作

七、Eclipse操作

1、工程初始化为本地库

2、Eclipse中忽略文件

3、推送到远程库

4、Oxygen eclipse克隆工程操作

5、Kepler Eclopse克隆工程操作

6、解决冲突

八、Git工作流

1、概念

2、分类

3、GitFlow工作流详解

4、具体操作


一、版本控制简介

1、版本控制

               工程设计领域中使用版本控制管理工程蓝图的实际过程。在IT开发过程中也可以使用版本控制思想管理代码的版本迭代。

2、版本控制工具

(1)集中式版本控制工具:SVN、VSS、CVS

(2)分布式版本控制工具:Git、Darcs

3、版本控制工具应该具备的功能

(1)协同修改

          多人并行不悖的修改服务器端的同一个文件

(2)数据备份

          不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态

(3)版本管理

           在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率,这方面SVN采用的是增量式管理的方式,Git采取了文件系统快照的方式

(4)权限控制

对团队中参与开发的人员进行权限控制,对团队外开发者共贡献的代码进行审核——Git独有

(5)历史记录

查看修改人、修改时间、修改内容、日志信息。将本地文件恢复到某一个历史状态

(6)分支管理

允许开发团队在工作过程中多条生产线同事推进任务,进一步提高效率

二、Git简介

1、Git简史

2、git的优势

  1. 大部分操作在本地完成,不需要联网
  2. 完整性保证
  3. 尽可能添加数据而不是删除或修改数据
  4. 分支操作非常快捷流畅
  5. 与linux命令全面兼容

3、Git结构

4、Git和代码托管中心

代码托管中心的任务:维护远程库

局域网环境下:GitLab服务器

外网环境下:GitHub、码云

5、本地库和远程库

(1)团队内部协作

(2)跨团队协作

三、Git命令行操作

1、本地库初始化

命令:git add

效果:

注意:.git  目录中存放的是本地库相关的子目录和文件,不要删除修改

2、设置签名

  • 形式:用户名:tom                    Email地址:xiong@qq.com
  • 作用:区分不同开发人员的身份
  • 辨析:这里设置的签名和登录远程库的账号密码没有任何关系
  • 命令

            (1)项目级别/仓库级别:仅在当前本地库范围内有效

              git   config  user.name  tom_pro

              git    config  user.email goodMorning

                        信息保存位置:./git/config文件

                          

             (2)系统用户级别:登录当前操作系统的用户范围

                          git config  --global  user.name  tom

                          git  config --global  xiong@qq.com

                        信息保存的位置:./gitconfig文件

                          

             (3)级别优先级

                       a、就近原则:项目级别优先于系统用户级别,二者都有事采用项目级别的签名

                       b、如果只有系统用户级别的签名,就用系统用户级别的签名为准

                       c、二者都没有不允许

3、基本操作

3.1、状态查看

 git  status

查看工作区、暂存区状态

3.2、添加

git add 【file name】

将工作去的“新建/修改”添加到暂存区

3.3、提交

git commit -m "commit message" [file name]

将转存去的内容提交到本地库

3.4、查看历史记录

git log

多屏显示控制方式:空格向下翻页,b向上翻页,q退出

git log --pretty=oneline

git log  --oneline

git reflog

HEAD@{移动到当前版本需要多少步}

3.5、前进后退

本质:指针移动

(1)基于索引值操作【推荐】

  • git reset --hard [局部索引值]
  • git  reset --hard  a6ace91

(2)使用^符号:只能后退

  • git  reset --hard HEAD^
  • 注:一个^表示后退一步,n个表示后退n步

(3)使用~符号:只能后退

  • git reset --hard  HEAD~n
  • 注:表示后退n步

3.6、reset命令的三个参数对比

(1)--soft参数

仅仅在本地库移动HEAD指针

(2)--mixed参数

在本地库移动HEAD指针

重置暂存区

(3)--hard 参数

在本地库移动HEAD指针

重置暂存区

重置工作区

3.7、删除文件并找回

前提:删除前,文件存在时的状态提交到了本地库

操作:git  reset --hard 【指针位置】

        删除操作已经提交到本地库:指针位置指向历史记录

        删除操作尚未提交到本地库:指针位置用HEAD

  3.8、比较文件差异

(1)git  diff [文件名]

将工作区的文件和暂存区进行比较

(2)git diff [本地库中历史版本]  [文件名]

将工作区中的文件和本地库历史记录进行比较

(3)不带文件名比较多个文件

四、分支管理

1、什么是分支?

在版本控制过程中,使用多条线同时推进多个任务

2、分支的好处

同时并行推进多个功能开发,提高开发效率

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败分支删除重新开始即可

3、分支操作

3.1、创建分支

                git  branch [分支名]

3.2、查看分支

               git  branch -v

3.3、切换分支

            git checkout  [分支名]

3.4、合并分支

(1)第一步: 切换到接收修改的分支(别合并,添加新内容)上

                 git  checkout  [被合并分支名]

(2)第二步:执行merge命令

                git   merge  [有新内容分支名]

(3)解决冲突

   a、冲突的表现

b、冲突的解决

①编辑文件,删除特殊符号

②把文件修改到满意程度,保存退出

③git add [文件名]

④git commit -m "日志信息"

 注:此时  commit 一定不能带具体文件名

五、git基本原理

1、哈希

哈希是一个系类的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点

  • 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定
  • 哈希算法确定,输入数据确定,输出数据能够保证不变
  • 哈希算法确定,输入数据变化,输出数据一定变化,而且变化通常很大
  • 哈希算法不可逆

Git地址采用的是SHA-1算法

哈希算法可以被迎来验证文件。原理如下图所示:

2、git保存版本的机制

2.1集中式版本控制工具的文件管理机制

            以文件变更列表的方式存储信息,这类系统将他们保存的信息看做是一组基本文件和每个文件随时间逐步积累的差异。

2.2、git的文件管理机制

          git把数据看作是小型文件系统的一组快照。每次提交更新是git都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以git的工作方式可以称之为快照流。

六、GitHub

1、账号信息

GitHub首页就是登陆注册页面   : http://github.com/

2、创建远程库

3、常见远程库地址别名

git  remote -v 查看当前所有远程地址别名

git  remote add  [别名]   [远程地址]

4、推送

git  push  [别名]   [分支名]

5、克隆

               git   origin [远程地址]

效果:

(1)完整的吧远程库下载到本地

(2)常见origin远程地址别名

(3)初始化本地库

6、团队成员邀请

“岳不群“把邀请链接发送给“令狐冲”,“令狐冲”登录自己的GitHub帐号,访问邀请链接

7、拉取

pull=fetch+merge

git fetch [远程库地址别名]  [远程分支名]

git merge [远程库地址别名/远程分支名]

git pull  [远程库地址别名] [远程分支名]

8、解决冲突

要点

  • 如果不是基于GitHub远程库的最新版所做的修改,不能推送,必须先拉取
  • 拉取下来后如果进入冲突状态,按照“分支冲突解决”操作即可

9、跨团队协作

fork

本地修改,然后推送到远程

Pull Request

  

审核代码

合并代码

将远程库修改拉取到本地

七、Eclipse操作

   1.工程初始化为本地库

工程——右键——Team——Share Project ——Git

Create Repository

Finish

2、Eclipse中忽略文件

(1)概念:eclipse特定文件

这些都是eclipse为了管理我们创建的工程而维护的文件,和开发的代码没有直接关系,最好不要在Git中进行追踪

 .classpath文件          .project文件    .settings目录下的文件    

(2)gith官网样例文件

https://github.com/github/gitignore

https://github.com/github/gitignore/blob/master/java.gitignore

(3)编辑本地忽略文件,文件名任意

Java.gitignore

#Compiled class file
*.class

#Log file
*.log

#BlueJ files
*.ctxt

#Mobile Tools for java (J2ME)
.mej.tmp/

#Package Files#
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar


#virtual machine crash logs,see http://www.java.com/en/download/help/error_hstspot.xml
hs_err_pid*

.classpath
.project
.settings
target

(3)在~/.gitconfig文件中引入上述文件

[core]

         excludesfile=c:/Users/Lenovo/Java.gitignore

注意:这里的路径一点要使用“/”,不能使用“\”

3、推送到远程库

4、Oxygen eclipse克隆工程操作

import 导入工程

到远程复制工程地址

指定工程的保存位置

指定工程导入方式,这里只能用:import as general project

转换工程类型

最终效果

5、Kepler Eclopse克隆工程操作

问题:不能保存到当前Eclipse工作区目录

正确做法:保存到工作区以外的目录中

6、解决冲突

冲突文件——右键——Team——Merge Tool

修改完成后正常执行 add/commit 操作即可

八、Git工作流

1、概念

在项目开发过程中使用Git的方式

2、分类

(1)集中式工作流

像SNV一样,集中式工作流以中央仓库所有修改的单点实体。所有修改都提交到Master这个分支上

这种方式与SVN的区别就是开发人员由本地库,Git很多特性没有用到

(2)GitFlow工作流

GitFlow工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

(3)Forking  工作流

forking工作流实在GitFlow基础上,充分利用了Git的fork和pull request 的功能达到代码审核的目的。更适合安全可靠的管理大团队的开发者,而且能接受不信任贡献者的提交

3、GitFlow工作流详解

(1)分支种类

a.主干分支 master

主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。

b.开发分支  develop

主要负责管理正在开发过程中的代码、一般情况下应该是最新的代码。

c.bug修理分支   hotfix

主要负责管理生产环境下出现的紧急修复的代码。从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支

d.准生产分支(预发布分支) release

较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集成测试。该版本上线后,回合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除

e.功能分支   feature

为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来,开发完成后会合并到开发分支。

(2)GitFlow工作流举例

(3)分支实战

4、具体操作

(1)创建分支

(2)切换分支审查代码

(3)检出远程新分支

(4)切换到master

(5)合并分支

(6)合并结果

合并成功后,把master推送到远程

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值