1、概述

  1. Git概述:Git是分布式版本控制系统,分为两种类型的仓库:本地仓库远程仓库
  2. 版本库:例如:.git文件夹就是版本库;版本库中存储了很多配置信息、日志信息和文件版本信息等。
  3. 工作目录(工作区):包含.git文件夹的目录就是工作目录;主要用于存放开发的代码。
  4. 暂存区:.git文件夹中有很多文件,其中有一个index文件就是暂存区,也叫stage;暂存区是一个临时保存修改文件的地方。
  5. git仓库命名习惯 git仓库类型_文件名


  6. git仓库命名习惯 git仓库类型_远程仓库_02


  7. git仓库命名习惯 git仓库类型_git仓库命名习惯_03

2、Git的工作流程

  1. 从远程仓库中克隆代码到本地仓库
  2. 从本地仓库中checkout代码,然后对代码修改
  3. 在提交前先将代码提交到暂存区
  4. 提交到本地仓库,本地仓库中保存修改的各个历史版本
  5. 修改完成后,需要和团队成员共享代码时,将代码push到远程仓库
  6. 只需克隆一次,下次需要代码时,从远程仓库pull到工作区即可

3、Git常用命令

3.1 环境配置

  • 设置用户信息
    git config --global user.name "刘xx" 设置用户名)
    git config --global user.email "hello@itcast.cn"(设置邮箱)
  • 查看配置信息
    git config --list (查看所有配置信息)
    git config user.name (查看用户名)

3.2 获取Git仓库

  • 在本地初始化一个Git仓库
    git init (路径为新建文件夹下)
  • 从远程仓库克隆到本地
    git clone https://xxxxxxxxxxxx (码云上所指定的仓库的https地址)

3.3 Git工作目录下文件的两种状态

  • untracked 未跟踪(未被Git纳入版本控制)
  • tracked 已跟踪 (被Git纳入版本控制) Unmodified(未修改状态) Modified(已修改状态) Staged (已暂存状态)

3.4 本地仓库操作

  • 查看文件状态(不显示未修改状态的文件M表示已修改
    git status (需在所在文件夹路径下)
    git status -s (使输出信息更简洁)
  • git仓库命名习惯 git仓库类型_git_04

  • 将未跟踪的文件加入暂存区
    git add 文件名 (加入后的状态如图)
  • git仓库命名习惯 git仓库类型_文件名_05

  • 将新创建的文件改为未跟踪状态(即取消暂存
    git reset 文件名 (状态如图)
  • git仓库命名习惯 git仓库类型_远程仓库_06

  • 将暂存区的文件修改提交到本地仓库
    git commit 文件名 -m "hhhh"(hhh为日志信息,可随意编写;+号表示已提交)
  • git仓库命名习惯 git仓库类型_文件名_07

  • 无需加入暂存区,直接提交
    git commit -a -m "日志信息"(将全部未跟踪的文件加入到暂存区)
  • 删除文件(例中的文件是已提交到本地仓库
    1)git rm 文件名(此时只是删除了工作区的文件)
  • git仓库命名习惯 git仓库类型_git_08

  • 2)git commit 66.txt(文件名) -m "日志信息" (此时是提交到本地仓库后彻底删除;-号表示已删除)
  • git仓库命名习惯 git仓库类型_文件名_09

  • 将文件添加至忽略列表
    当希望有些文件(例如自动生成的文件:日志文件等)无需纳入Git的管理,也不希望它们出现在未跟踪文件列表中时,可以在工作目录中创建一个名为.gitignore的文件(文件名称固定),再编辑列出要忽略的文件。

!lib.a(需将lib.a文件纳入Git管理)
.a(无需将所有以.a后缀的文件纳入Git管理)
/TODO(无需将TODO文件夹纳入Git管理)
build/(无需将build目录下的所有文件纳入Git管理)
doc/
.txt(无需将doc目录下的所有以.txt后缀的文件纳入Git管理)
doc/**/*.pdf(无需将doc目录下及其子文件下的所有以.pdf后缀的文件纳入Git管理)

1) touch .gitignore (创建.gitignore文件)

2) *.class (进入.gitignore后编辑)

git仓库命名习惯 git仓库类型_git仓库命名习惯_10

git仓库命名习惯 git仓库类型_文件名_11


忽略后的效果:

git仓库命名习惯 git仓库类型_文件名_12

  • 查看日志记录
    git log
  • git仓库命名习惯 git仓库类型_文件名_13


3.5 远程仓库操作

  • 查看远程仓库
    git remote (如果是克隆了远程仓库的,回车后会显示origin,origin表示默认服务器名;否则,表示没有与远程仓库关联)
    git remote -v (则能够查看到远程仓库的地址)
  • git仓库命名习惯 git仓库类型_文件名_14

  • git remote show origin(显示更详细信息)
  • git仓库命名习惯 git仓库类型_git_15

  • 添加远程仓库(例中的repo1为在电脑手动建的本地仓库
    先在码云上新建一个与工作目录下的新建本地仓库名一致的仓库名,然后再切换到此新建本地仓库路径下。
    可以将本地仓库添加到多个不同的远程仓库中,或一个远程仓库地址下可以有多个不同的本地仓库
    git remote add origin https://xxxxxxx (把本地仓库添加到远程仓库;即与远程仓库关联
  • git仓库命名习惯 git仓库类型_文件名_16

  • 移除远程仓库(即解除与远程仓库的关联
    git remote rm origin(服务器名)
  • git仓库命名习惯 git仓库类型_远程仓库_17

  • 从远程仓库中抓取
    1)git fetch --all 2)git reset --hard origin/master (表示是origin地址下的master分支)

删除后(拉取前):

git仓库命名习惯 git仓库类型_git_18


拉取后:

git仓库命名习惯 git仓库类型_文件名_19

  • 推送到远程仓库
    1)git commit -a -m "日志信息"(添加并提交所有未跟踪的文件到暂存区)
    git add 文件名git commit 文件名 -m "日志信息"2)git push origin master
  • git仓库命名习惯 git仓库类型_git仓库命名习惯_20


  • git仓库命名习惯 git仓库类型_远程仓库_21

  • 3.6 Git分支
    使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
  • 查看分支
    git branch (列出所有本地分支)
    git branch -r (列出所有远程分支)
    git branch -a (列出所有本地分支与远程分支)
  • 创建分支
    git branch b1(创建了名称为b1的分支)
  • 切换分支
    git checkout b1(切换到b1分支下;*号代表在此分支下
  • 把本地分支推送至远程仓库分支
    git push origin b1 (把本地的分支b1推送到远程仓库分支)
  • git仓库命名习惯 git仓库类型_git仓库命名习惯_22

  • 分支合并
    git merge b1(需在master分支(其他分支)的路径下执行,表示将b1分支下的文件复制到master分支中)
    例:
  • git仓库命名习惯 git仓库类型_git仓库命名习惯_23

  • 注意
    但两个分支中,同一个文件的同一个部分的内容出现不一致时,Git就没法自动合并分支,同时会提示文件冲突,此时需要我们打开冲突文件并修复冲突内容,执行git add 文件名 命令,最后执行git commit 提交。
  • 将本地分支文件推送到远程分支中
    git push origin b1(将本地仓库的b1分支里面的所有文件推送到远程仓库的b1分支里)
  • git仓库命名习惯 git仓库类型_远程仓库_24

  • 删除本地分支
    git branch -d b1 (删除本地分支b1,注意需要切换在别的分支下再执行)
    注意:当要删除的分支中进行了一些开发动作,此时执行上面的删除命令并不会删除分支;如果坚持要删除此分支,可以将-d 改为 -D执行。
  • git仓库命名习惯 git仓库类型_git_25

  • 删除远程仓库下的分支
    git push origin -d b1(将远程仓库下的b1分支删除)
  • git仓库命名习惯 git仓库类型_git仓库命名习惯_26

    git仓库命名习惯 git仓库类型_git仓库命名习惯_27

  • 3.7 Git标签
    标签指的是某个分支某个特定时间点的状态,通过标签,可以很方便的切换到标记时的状态。比较有代表性的是人们会使用这个功能来标记发布结点(如版本号V1.0,V1.2等)
  • 列出已有的标签
    git tag
  • 新建标签
    git tag v1.0(创建了一个名为v1.0的标签)
  • 查看标签信息
    git show v1.0(查看标签名为v1.0的标签信息)
  • 将标签推送至远程仓库
    git push origin v1.1(将名为v1.1标签推送至远程仓库)
  • git仓库命名习惯 git仓库类型_git仓库命名习惯_28

  • 检出标签
    1)git checkout -b b2 v1.1(新建b2分支,并将此前的v1.1标签传到b2分支中)
    2)git tag v2.0(将此前的v1.1标签下的文件内容修改后保存在v2.0标签中)
    2)git push origin v2.0(将新保存的v2.0标签内容上传至远程仓库)
  • 删除本地标签
    git tag -d v1.1(将本地的v1.1的标签删除)
  • 删除远程标签
    git push origin :refs/tags/v1.1(删除远程标签v1.1)
  • git仓库命名习惯 git仓库类型_git仓库命名习惯_29