Git是什么

image-20200815104605450

分布式版本控制系统的安全性要高很多,因为每个开发人员电脑里都有完整的版本库,某一个开发人员的电脑坏掉了不要紧,随便从其他开发人员那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有开发人员都没法工作。

Gt是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。

G是Linus Torvalds为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。 Torvalds开始着手开发Gt是为了作为一种过渡方来替代Bitkeeper,后者之前一直是Lnux内核开发人员在全球使用的主要源代码工具。

尽管最初Git的开发是为了辅助Linux内核开发的过程,但是已经发现在很多其他自由软件项目中也使用了Git。

GIT

安装可以到官网下载对应系统的安装包进行安装。然后正常的安装流程即可。

image-20200815112858150

安装后的配置

通过右键即可看到Git Bash Here,即可打开git bash工具。

通过输入git --version也可以看到版本号。

image-20200815105432030

1
2
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

安装完成后需要设置用户信息,因为Git是分布式版本控制系统,所以每一台电脑注册用户信息(名称和Emai地址)。

值得注意的是, git config命令的 global参数,表示当前这台电脑上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Emai地址。

1
2
git config user.name '你的名字'
git config user.email '你的邮箱'

查看配置

1
2
3
4
# 打印所有config
git config --list
# 打印指定config
git config user.name

工作区、暂存区和版本库

image-20200815110308616

  • 工作区

    当前电脑里能看到的目录

  • 暂存区

    英文交stage或index。一般存放在.git目录下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)

  • 版本库

    工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git常见的操作

  1. clone

    1
    git clone Repo

    image-20200815111357538

  2. 添加到版本库

    1
    git add fileName

    image-20200815111513972

    需要进入到版本库目录才可以使用此命令。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 添加单个文件
    git add 1.txt

    # 添加多个文件
    git add 2.txt 3.txt

    # 添加整个目录
    git add ./a

    # 添加多个目录
    git add ./b ./c

    # 添加所有文件
    git add .
  3. 将添加的文件提交到版本库

    1
    git commit -m 'message' [file Name]

    image-20200815111715947

    git commit命令后可以添加文件名称,表示只提交这个文件,但一般不会跟文件名称,表示全部提交。

    也可以直接使用git commit命令,会调用出默认的编辑器去编辑信息。修改默认的编辑器

    以vacode为例(Windows)。首先在命令行输入code,如果能正常出现vscode编辑器,那么直接输入以下命令即可。

    1
    git config core.editor notepad

    如果不能出现vscode编辑器,那么将VSCode目录下的bin目录添加到环境变量,然后运行上面的命令即可。

    MAC及Linux环境下配置。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 添加 vscode 编辑器 - mac
    # 通过 vim 打开环境变量配置文件
    vim ~/.bash_profile
    # 添加环境变量
    export PATH=/Applications/Visual\ Studio\ Code.app/Contents/Resources/app/bin:$PATH
    # 保存退出
    source ~/.bash_profile
    # 测试:在终端中直接通过命令 code 调用 vscode
    git config --global core.editor "code --wait"
  4. 日志

    1
    2
    // 完整格式
    git log

    image-20201029145104369

    1
    2
    // 简要格式(单行)
    git log --oneline

    image-20201029145122973

    1
    2
    // graph模式
    git log --all --graph

    image-20201029145021216

  5. 修复上次提交

    1
    git commit --amend -m 提交
  6. 将本地版本库Push到远程库中

    1
    git push URL master

    image-20200815112810004

  7. 从远程库更新到本地库

    1
    git pull

    image-20200815113234094

  8. 查看上次修改的信息

    1
    git status
  9. 查看执行git status命令结果的详情信息

    1
    git diff

    git diff命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。

    • 查看尚未缓存的改动

      git dff

    • 查看已缓存的改动

      git diff --cached

    • 查看已缓存的与未缓存的所有改动

      git diff HEAD

    • 显示摘要而非整个dif

      git diff --stat

Git分支管理

每一种版本控制系统都以某种形式支持分支。使用分支意味着可以从开发主线上分离开来,然后在不影响主线的同时继续工作。

有人把Git的分支模型称为"必杀技特性",而正是因为它,将Git从版本控制系统家族里区分出来。

  1. 创建分支

    1
    git branch name

    image-20200815114513318

    如果只输入git branch那么将显示当前的分支,有标识的表示当前正在使用的分支。

    image-20200815114620749

  2. 切换分支

    1
    git checkout name

    image-20200815114719083

  3. 合并分支

    1
    2
    3
    4
    # 切换到主分支
    git checkout master
    # 将某个分支合并到master分支
    git merge name

    如果两个分支同一文件同一行都发生了修改,那么将不会自动合并分支,而是需要处理冲突。

    image-20200815115610742

  4. 删除分支

    1
    git branch -d dev

    image-20200815120329189

  5. 推送分支时,删除多余分支

    1
    git push origin --delete branchName

合并分支遇到冲突

image-20200815115757045

可以通过VSCODE中的插件进行快速的合并。合并完成后通过git add命令告诉git冲突已经解决。

image-20200815120034510