Git教程

一、Git介绍

Git用于分布式版本控制。

二、Git工作流程

在这里插入图片描述

三、Git安装与常用命令

1.Git安装与环境配置

下载地址:https://git-scm.com/downloads
按照默认选择安装程序即可。
安装之后,在桌面点击鼠标右键,出现下图两个选项则说明安装成功。其中GUI表示图形化界面,Bash表示命令行。
在这里插入图片描述
安装Git之后,首先要设置用户名和email地址,因为每次Git提交都会使用该用户信息。
1. 打开Git Bash
2. 设置用户信息

# 更换成自己的用户名和邮箱
git config --global user.name "username"
git config --global user.email "hello@tom.com"

查看配置信息:

git config --global user.name
git config --global user.email

3. 为常用指令配置别名(可选)
有些常用的指令参数很多,每次都需要输入很多参数,可以通过设置别名来简化。

  • 打开GitBash,执行touch ~/.bashrc
    在这里插入图片描述
  • .bashrc文件中输入以下内容:
# 用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件及基本信息
alias ll='ls -al'
  • 打开GitBash,执行source ~/.bashrc
    在这里插入图片描述
    4. 解决GitBash乱码问题
  • 打开GitBash执行下面命令:
git config --global core.quotepath false
  • ${git_home}/etc/bash.bashrc 文件最后加入下面两行:
export LANG="zh-CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"

2.获取本地仓库

要使用Git对代码进行版本控制,首先需要获得本地仓库:

  1. 在电脑的任意位置创建一个空目录,作为本地Git仓库
  2. 进入这个目录,点击右键打开Git Bash窗口
  3. 执行命令git init
  4. 创建成功后可在文件夹下看到隐藏的.git目录
    在这里插入图片描述

3.基础操作指令

Git工作目录(.git文件所在目录)下,对于文件的修改、增加、删除会存在几个状态,这些修改的状态会随着我们执行Git的命令发生变化。
在这里插入图片描述

  1. 工作区 → 暂存区:git add
  2. 暂存区 → 本地仓库:git commit
  • 查看状态

    • 作用:查看修改状态(在暂存区还是工作区)
    • 命令:git status
  • 从工作区添加到暂存区

    • 作用:添加工作区的一个或多个文件的修改到暂存区
    • 命令:git add 文件名,或者 git add . 表示添加所有文件
  • 从暂存区提交到本地仓库

    • 作用:提交暂存区内容到本地仓库的当前分支
    • 命令:git commit -m “注释内容”
  • 查看提交日志

    • git log [option]
      options可选参数如下:

        --all 所有分支
        --pretty=oneline 将提交信息显示为一行
        --abbrev-commit 使得输出的commitId更简短
        --graph 以图的形式显示
      
  • 版本回退

    • 作用:版本切换
    • 命令:git reset --hard commitID(id是前面配置的简略的输出也可以)
      • commitID 可以使用前面配置的git-loggit log指令查看
      • 使用git reflog可以查看已经删除的提交记录
  • 添加文件至忽略列表
    一般我们会有一些文件无需纳入Git的管理,通常是一些自动生成的文件,比如日志文件、Idea项目中的.idea等。此时可以在工作目录中创建一个名为.gitignore的文件(文件名称固定),在文件中列出要忽略的文件模型。下面是一个示例:

# 忽略以.a结尾的的文件
*.a
# lib.a这个文件不忽略,其它.a的忽略(结合上一句)
!lib.a
# 忽略TODO文件
/TODO
# 忽略名为build的文件夹
build/
# 忽略doc目录下的所有.txt文件
doc/*.txt
# 忽略doc目录及其字目录下的所有.pdf文件
doc/**/*.pdf

4.分支

使用分支可以从开发主线上分离开来,修改重大Bug、开发新的功能,避免影响开发主线。

  • 查看本地分支
    • 命令:git branch
  • 创建本地分支
    • 命令:git branch 分支名
  • 切换分支
    • 命令:git checkout 分支名
    • 创建并切换:git checkout -b 分支名
  • 合并分支
    • 作用:一个分支上的提交可以合并到另一个分支
    • 命令:先切换到master(一般都是合并到master分支),然后执行:git merge 分支名
  • 删除分支
    不能删除当前分支,只能删除其它分支
    • 命令:
      git branch -d b1 删除其它分支时,需要做各种检查
      git branch -D b1 不做任何检查,强制删除
  • 解决冲突
    两个分支上对文件的修改可能会存在冲突,例如同时修改了同一文件的同一行,这时就需要手动解决冲突,步骤如下:
    • 处理文件中冲突的地方
    • 将解决完冲突的文件加入暂存区(git add)
    • 提交到仓库(git commit)

5.开发中分支使用原则与流程

  • master(生产)分支
    线上分支,主分支,在中小规模项 目中,作为线上运行应用对应的分支。
  • develop(开发)分支
    从master创建的分支,一般作为开发部门的主要开发分支,如果没有其它并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要合并到master分支,准备上线。
  • feature/xxxx分支
    从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后再合并到develop分支。
  • hotfix/xxxx分支
    从master创建的分支,一般作为线上修复bug使用,修复完成后合并到master、test、develop分支。
  • 一些其它分支,例如test分支(用于代码测试)、pre分支(预上线分支)等等。
    在这里插入图片描述

四、Git代码托管服务

使用Gitee作为远程仓库,地址:https://gitee.com/

1.创建远程仓库

注册、登录Gitee,并创建仓库

2.配置SSH公钥

  1. 打开GitBash,输入ssh-keygen -t rsa生成SSH公钥,不断回车(如果公钥已存在,会覆盖)
    在这里插入图片描述
  2. Gitee账户设置公钥
  • 获取公钥:cat ~/.ssh/id_rsa.pub
  • 在Gitee个人设置页面中,设置公钥
    在这里插入图片描述
  • 验证配置是否成功:ssh -T git@gitee.com,输入yes
    在这里插入图片描述
    3.操作远程仓库
    首先要绑定本地仓库和远程仓库,进入Gitee仓库并且复制地址(SSH)。
    在这里插入图片描述
    再打开GitBash,输入以下内容:
    git remote add origin 远程仓库地址
    

其中origin是自己起的远程仓库名称(不用和Gitee中的名称一致,一般规范就叫做origin

  • 查看远程仓库:
    git remote
    
  • 推送到远程仓库:
    git push [-f] [--set_upstream] [远端名称 [本地分支名][:远端分支名]]
    git push origin master:master
    -f 表示强制覆盖,一般不用
    # 远程分支名和本地分支名相同,可以只写本地分支名
    git push origin master
    # --set_upstream推送到远端的同时,建立当前分支和远端分支的关系
    # 当master已经存在远端时,会推送不了,需要建立对应关系
    git push --set_upstream origin master
    # 如果当前分支已经和远端分支关联,则可以省略分支名和远端名
    git push 将master分支推送到已关联的远程分支
    
  • 从远程仓库克隆
    如果已经有一个远端仓库,可以直接clone到本地。
    命令:git clone <仓库路径> [本地目录]
    仓库路径是SSH路径,本地目录可以省略,会自动生成一个目录
  • 从远程仓库中抓取和拉取
    远程分支和本地分支一样,可以进行merge操作,只是需要先把远程仓库里的更新都下载到本地,再进行操作。
    • 抓取命令:git fetch [remote name] [branch name]
      • 抓取就是将仓库里的更新都抓取到本地,但不会进行合并
      • 如果不指定远端名称和分支名称,则抓取所有分支
    • 拉取命令:git pull [remote] [branch name]
      • 拉取就是将远程仓库的修改拉到本地并自动进行合并,相当于 fetch+merge
      • 如果不指定远端名称和分支名称,则抓取所有分支并更新当前分支
      • 拉取中的merge可能会有冲突,需要按照上面说的方法解决冲突

五、使用idea操作Git

  1. 首先打开Idea–设置–Version Control,配置本地下载的Git路径Git/bin/git.exe,可点击Test按钮测试是否设置成功。
    在这里插入图片描述
  2. 然后创建一个Gitee的远程仓库,并且复制仓库的SSH路径。
  3. 在Idea中打开本地仓库,创建.gitignore文件,并将.idea文件到其中
    在这里插入图片描述
  4. 初始化本地仓库,按照下图选择创建Git仓库,并且选择本地仓库路径(相当于git init)
    在这里插入图片描述
  5. 提交
    下图中,绿色对号表示提交到本地仓库,蓝色箭头表示pull
    在这里插入图片描述
    选择需要提交的文件,由于已经有.gitignore文件,因此可以全选提交。并在Commit Message框中输入备注信息。之后一路选择确认提交即可。
    在这里插入图片描述
  6. 查看日志
    在这里插入图片描述
  7. 推送
    在这里插入图片描述
    在这里插入图片描述
    origin是给远程仓库起名称,url是Gitee中远程仓库的SSH路径。
    在这里插入图片描述
  8. 从远端克隆仓库
    在这里插入图片描述
    填写SSH路径和本地路径
    在这里插入图片描述
  9. 解决冲突
    一般建议先pull再push,如果本地与云端的代码修改了同一文件的同一行,则在commit时会出现冲突。因此,每次提交前,先pull拉取远程仓库中最新版本的代码,出现冲突后(因为pull包含了merge),在本地解决冲突,再add、commit和push。
  10. 分支操作
    创建分支:在Idea–Version Control–Log页面,右键创建即可在这里插入图片描述
    总结:
    在这里插入图片描述
    在这里插入图片描述

六、多人开发场景

  1. 组长基于项目创建本地仓库,创建远程仓库,推送项目到远程仓库
    在这里插入图片描述
  2. 每一个组员从远程克隆项目到Idea中,这样每个组员电脑上都有一个副本,进行开发。假设有组员A和B。
    在这里插入图片描述
  3. 组员A修改工作区,提交到本地仓库,再推送到远程仓库。组员B可以从远程仓库获取最新代码。
    在这里插入图片描述
  4. 组员A和B修改了同一文件的同一行,需要解决冲突。
    在这里插入图片描述

七、补充

  1. 切换分支前先提交本地的修改
  2. 代码及时提交,提交过了就不会丢
  3. Idea集成GitBash作为Terminal
    在这里插入图片描述

参考:黑马程序员Git全套教程 https://www.bilibili.com/video/BV1MU4y1Y7h5/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值