Git&Github学习笔记

一、Git简介

1.Git结构

image-20210420141625320

2.Git和代码托管中心

  • 局域网环境下
    • GitLab服务器
  • 外网环境下
    • GitHub
    • Gitee码云

3.本地库和远程库

团队内协作

image-20210420142315751

团队间协作

image-20210420142539796

4.git工作流程

image-20210420135146623

二、Git命令行操作

1.本地库初始化

描述:创建一个文件夹,作为本地仓库。命令行使用git init在该目录下初始化仓库。初始化完成后会生成一个.git隐藏目录。

命令:git init

效果:

image-20210420143116275

2.设置签名

  • 形式

    • 用户名:deserts
    • Email地址:zoea@126.com
  • 作用:区分不同开发人员的身份

  • 命令

    • 项目/仓库级别:仅在本地仓库范围内有效

      • git config user.name deserts
      • git config user.eamil zoea@126.com
    • 系统用户级别:登录当前操作系统的用户范围

      • git config --global user.name deserts_g
      • git config --global user.eamil zoea_g@126.com
    • 级别优先级

      • 就近原则:项目级别优于系统用户级别,两个都有时采用项目级别
      • 不允许两个级别都没有
    • 示例:

      image-20210420144736368

    • 项目级别签名信息保存的位置

      .git/config

      image-20210420144907964

    • 查看全局签名配置:放在家目录下的.gitconfig文件下

      image-20210420145253591

3.添加提交和查看状态

命令:git status

image-20210420145517823

创建一个文件后,查看状态:

image-20210420145849148

这时提示可以使用git add 去追踪

image-20210420150039692

  • git add:将文件添加到暂存区
  • git rm --cached :撤销添加到暂存区
  • git commit: 将暂存区的文件提交到本地仓库

当文件被修改后:

image-20210420151633609

使用git add添加到暂存区

image-20210420152142436

使用git commit -m “modified” hello.txt添加注释并提交

image-20210420152323221

4.版本前进后退

查看版本历史记录:git log

image-20210420152528595

git log --pretty=oneline

image-20210420153352784

git log --oneline

image-20210420153432848

git reflog

image-20210420153549476

版本前进后退的本质:移动HEAD指针

image-20210420153929276

使用索引值操作

命令:git reset --hard 部分索引值

image-20210420154329690

reset三个参数对比
  • hard: 在本地库移动HEAD指针,并且重置暂存区和工作区
  • soft: 仅仅是在本地库移动HEAD指针
  • mixed:在本地库移动HEAD指针,并且重置暂存区

5.删除文件后找回

删除文件

image-20210420161159581

提交到暂存区

image-20210420161220280

提交到本地仓库:

image-20210420161338057

版本回退:

image-20210420161524995

被删除的文件可以恢复。

  • 添加到暂存区的文件删除恢复: git reset --hard HEAD

6.比较文件

image-20210420162418573

7.Git分支

image-20210420181858551

查看分支版本

命令:git branch -v

image-20210420182123994

创建分支

命令:git branch 分支名

image-20210420182215040

切换分支

命令:git checkout 分支名

image-20210420182629769

合并分支

步骤:

  1. 切换到被合并的分支上面
  2. 使用git merge 【合并分支名】来合并分支

示例:

hot_fix分支对test.txt进行修改,并切换到master分支

image-20210420183131611

合并hot_fix分支:

image-20210420183328123

解决合并分支冲突

冲突的产生:不同分支的同一个文件都被修改了,这时要合并分支时两个修改的文件要指定一个为合并后的分支的文件。这时需要决定哪一个修改并入该分支中。

image-20210420184638819

冲突的表现:

image-20210420184911563

这时需要我们去修改这个文件,作为最终修改的版本

image-20210420185110655

添加到暂存区:

image-20210420185157186

提交到本地仓库(不能带文件名):

image-20210420185303974

步骤总结:

image-20210420185328752

三、Git基本原理

1.哈希加密算法

对两个文件进行加密,通过加密结果比对来验证两个文件是否发生了变化,若发生了变化,两个结果相差会很大。

image-20210420190418430

2.Git保存版本的机制

Git的文件管理机制:使用快照机制

image-20210420190857566

3.Git分支管理的机制

本质是HEAD指针的切换

image-20210420191255807

四、使用Github

1.本地库和远程库的交互

image-20210420195727754

2.GitHub创建远程仓库

1.注册一个账号

2.创建一个远程仓库

image-20210420195944586

填写创建仓库的信息

image-20210420200117907

创建成功

image-20210420221222166

3.往远程仓库push

1.查看远程仓库地址

image-20210420221935586

2.给远程仓库起别名

  • 命令: git remote add 别名 地址

image-20210420222231881

3.推送

  • 命令:git push 别名 分支名

image-20210420222559881

这时会有一个master分支了

image-20210420222658948

4.clone操作

命令:git clone 地址(默认项目主分支,项目创建时的分支)

image-20210420223442744

从远程仓库克隆到本地有三个效果:

  • 完整地把远程库下载到本地
  • 创建origin远程别名,可以使用这个别名直接push
  • 初始化本地库

clone指定分支:git clone -b 分支名 地址

image-20210420225205440

5.加入团队

本地clone远程仓库后,需要加入团队后才能push。

1.添加队员

image-20210420234224401

image-20210420234304849

2.复制邀请链接发给队员

3.队员访问邀请链接,加入团队。这样队员就能push了。

6.pull拉取

当队员B修改了,队员A需要拉取代码进行开发;需要先fetch查看一下(读操作)

image-20210420232830052

git fetch origin main:

image-20210420233950781

查看远程库的内容:git checkout origin/main, 这样切换到分支就可以查看远程仓库的内容了

image-20210420234625068

查看完修改完,可以merge,merge完远程的东西就都合并了

image-20210420235249012

pull = fetch + merge

7.解决冲突

image-20210421002017528

8.跨团队之间协作

image-20210422091742251

1.让别的团队成员访问你的远程仓库地址,在远程仓库中fork

image-20210422092155364

2.fork之后会到自己远程仓库,自己可以进行操作

image-20210422092340398

3.自己在本地和远程仓库操作后,可以想原项目的远程仓库发起pull request

image-20210422092935432

4.原项目可以审核并讨论

image-20210422093016124

9.SSH免密登录

1.进入家目录: cd

image-20210422093825836

2.把以前的SSH目录删掉: rm -r .ssh/

image-20210422094030651

3.生成ssh目录:ssh-keygen -t ras -C GitHub邮箱

image-20210422094302717

4.进入.ssh目录查看id_ras.pub文件,并复制:

image-20210422094448453

5.在自己GitHub账号上的settings里,点击SSH and GRG keys设置SSH keys

image-20210422094818240

6.输入密码确认

image-20210422094910742

7.可以看到已经生成的SSH keys

image-20210422095001367

8.回到命令行测试。修改文件并commit到本地仓库

image-20210422095303357

9.到GitHub仓库上复制SSH地址

image-20210422095450034

10.创建本地的SSH地址别名

image-20210422095620221

11.把本地仓库的内容推送到远程仓库上,这时不需要密码登录

image-20210422095749127

12.可以看到,已经成功推送了

image-20210422095905908

五、IDEA中使用Git

1.安装Git

已经安装Git,IDEA中会自动集成

image-20210422100418998

2.登录Github账号

image-20210422145615955

3.创建本地仓库

点击创建

image-20210422145015702

创建成功

image-20210422145034297

在本地也能看到.git文件夹了,说明本地仓库创建成功

image-20210422145234023

4.add、commit、push等操作

点击项目右键的Git,可以进行命令行的那些操作:

image-20210422150910212

常用的快捷操作:

image-20210422150934178

示例:

1.创建一个新文件,创建完成后可以选择直接添加到暂存区

image-20210422151021970

2.将所有文件添加到暂存区

image-20210422151231978

3.提交到本地库

image-20210422151306027

选择文件和添加注释

image-20210422151346143

5.查看历史

点击快捷键可以查看历史

image-20210422151909874

点击具体的版本还可以查看变化的详情

image-20210422152007004

版本回退:点击具体的版本右键复制哈希值

image-20210422152518186

回退版本:

image-20210422152554972

跟据哈希值回退:

image-20210422153100245

查看前面的历史版本需要在控制台中,可以在IDEA中集成Git

image-20210422154529062

使用Git命令:

image-20210422154555470

6.创建分支、合并分支

创建分支

image-20210422155500638

合并分支

image-20210422155607886

解决冲突:

image-20210422155933542

7.将本地库上传到GitHub

image-20210422160249771

选择地址

image-20210422160341270

选择分支和版本上传

image-20210422160959694

8.更新本地库

当远程库发生修改,取push时自己不是最新版本,会失败

image-20210422161541787

pull操作:

image-20210422162018420

六、Git工作流

1.概念

在开发中使用Git的方式

2.分类

  • 集中式工作流:类似与SVN

    image-20210422162916531

  • GitFlow工作流:团队内使用分支,常用

    image-20210422162929510

  • Forking工作流:给团队外成员;虚拟团队

    image-20210422162943303

3.GitFlow工作流

image-20210422163306433

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值