团队协作利器 (一)· 初识Git

Git

GitHub/Gitee/GitLab 是基于 GIt 的,如果不会 Git,那么这些代码托管平台也无从说起,所以,今天学习 Git 。

1. 什么是 Git ?

Git 是一种版本控制系统。

什么是版本控制系统?
我们在软件开发过程中,源码非常重要的,那么对源码的管理则是重中之重。

比如,我们为了防止代码的丢失,需要本地机器与远程服务器都存放一份,而且还需要有一套机制让本地与远程服务器同步;

又比如,开发过程中,我们经常是几个人协同开发,可能会涉及到几个不同的人对一份代码的操作或更改,这个时候,需要大家互不影响,有需要各自可以同步别人的代码;

又比如,我们开发过程中免不了有 bug,有时候需要紧急对代码进行还原;

又比如,随着我们版本迭代的功能越来越多,但是我们需要清楚知道历史每一个版本的代码更改记录,甚至知道每个人历史提交代码的情况;

上面这些类似的问题,都是版本控制系统能解决的问题。所以说,版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统,对于软件开发领域来说,版本控制是最重要的一环,而 Git 是当下最流行最好用的版本控制系统。

2. Git 安装

Mac 上其实是自带 Git 的,其他系统可点击下方超链接选择。

  • Git下载地址

如何判断是否安装成功?

  • Mac :在命令行输入 git --version,如果出现
    git version x.xx.x 说明已经安装成功了。

  • Windows:右击桌面,出现 Git Bash Here / Git Gui Here,点击 Git Bash Here ,在命令行界面出现下图即可说明安装成功。
    在这里插入图片描述

3. 如何使用 Git

Git 是有很多图形化软件可以操作的,但是建议从命令行开始学习和理解,只有一开始学习命令行,之后对 Git 的每一步操作才能理解其意义,等熟练之后,再用任何图形化软去操作轻松上手。

4. 使用 Git 之前需要做的最小配置

  • 配置开发者 user.name 和 user.email 信息
$ git config --global user.name 'your_name'
$ git config --global user.email '[email protected]'

为什么 Git 需要配置这些信息?

  • 方便查看代码提交日志,修改人。
  • 在 code review 的时候,必要时可通过外部系统发送邮件给代码提交者。

5. Git 命令列表

Git 的所有操作命令开头都要以 git 开头。
团队协作利器 (一)· 初识Git_第1张图片
上面列举了最常用的一些 Git 命令,紧接着会有一句英文解释这个命令的意义。但是还是结合实际操作才能更好理解。

5. Git 具体命令

我们在本地创建一个文件夹 git-learning,并在该文件夹下创建 test.txt 文件。

1. git config

  • config 的三个作用域:
名称 作用域
local 只对某个仓库有效
global 对当前用户所有仓库有效
system 对系统所有登录用户有效
缺省等于 local
  • 显示 config 的配置,加 --list
$git config --list local
$git config --list global
$git config --list system

团队协作利器 (一)· 初识Git_第2张图片

  1. git init
    代表初始化 git 仓库。输入 git init 之后会提示:
    在这里插入图片描述
    可以看到初始化了,该目录已经是一个 git 仓库了。

  2. git status
    紧接着我们输入 git status 命令,会有如下提示:
    团队协作利器 (一)· 初识Git_第3张图片
    默认就是在 master 分支,关于分支的概念后面会提。这时候提示的是,test.txt 文件 Untracked files,意思说,test.txt 文件还没有被追踪,还没有提交在 git 仓库呢,提示中显示,我们可以使用 git add 命令去操作你想要提交的文件。

    git status 顾名思义就是查看状态,这个命令可以算是使用最频繁的一个命令了。

  3. git add

    上面提示 test.txt 文件还没有提交到 git 仓库里,这个时候我们就可以随便编辑一下 test.txt 文件,然后输入 git add test.txt ,然后再输入 git status:
    团队协作利器 (一)· 初识Git_第4张图片

    此刻提示,“Changes to be committed",意思就是说 test.txt 文件等待被提交,当然你可以使用 git rm --cached 这个命令移除这个缓存。

  4. git commit
    接着我们输入 git commit -m “my first commit” ,这个命令。commit 是提交的意思,-m 是代表提交的备注信息,执行了以上命令,代表我们已经正式进行了一次提交。

    这个时候我们再输入 git status ,就会提示 nothing to commit。
    团队协作利器 (一)· 初识Git_第5张图片

  5. git log
    这个时候,我们输入 git log 命令,就会看到如下:
    团队协作利器 (一)· 初识Git_第6张图片
    git log 命令可以查看所有产生的 commit 记录,所以可以看到一i纪念馆产生的一条 commit 记录,包括提交时候的附带信息”my first commit"

    git add & git commit
    为什么在 commit 提交前需要进行 add 操作?
    git add 我们可以理解成一个缓存区域,临时保存我们的改动。而 commit 才是真正的提交。
    这样的好处是防止误提交,当然也有命令直接将这两步合并成一步操作,建议新手一步步的来。

  6. git branch
    branch 即分支的意思,分支的概念很重要,尤其是团队协作的时候。

    执行 git init 初始化 git 仓库之后会默认生成一个主分支 master ,也就是我们所在的默认分支,也基本是实际开发生产环境下的分支。一般情况下, master 分支不会轻易直接在上面操作的,我们可以输入 git branch 产看当前分支情况:

    在这里插入图片描述

    如果我们想在此基础上新建一个 a 分支呢?很简单,执行 git branch a 就好了。这时候分支 a 和分支 master 是一模一样的内容,我们再输入 git branch 查看当前的分支情况:
    团队协作利器 (一)· 初识Git_第7张图片

    但是可以看到,master 分之前有个 * 号,即虽然新建了一个 a 分支,但是当前所在分支还是在 master 上,如果我们想在 a 分支上进行开发,首先要切换到 a 分支上才行,所以下一步是切换分支:

	git checkout a

执行这个命令,然后输入 git branch,查看分支情况:
团队协作利器 (一)· 初识Git_第8张图片

可以看到当前我们已经在分支 a 上了,有没有将新建分支和切换分支一步到位的命令?当然有了:

git checkout -b a

这个命令的意思就是新建一个 a 分支,并且自动切换到 a 分支。

  1. git merge
    git merge 就是合并分支用到的命令,针对这个情况,需要先做两步:
    第一步:先切换到 master 分支
    第二步:执行 git merge a 命令

    意思就是把 a 分支的代码合并过来了,不出意外的话,这个时候 a 分支的代码已经合并过来了。为什么不出意外呢?因为这个时候可能有冲突而合并失败,这个后面讲。

  2. git branch -d
    有新建分支,那肯定有删除分支了,如果a分支无用需要删除,则执行命令:git branch -d a 就可以把 a 分支删除了。

  3. git branch -D
    有些时候可能会删除失败,比如 a 分支还有代码没有合并到 master,这个时候执行 git branch -d a 是删除不了的,他会提示我们 a 分支还有未合并的代码,但是如果你非要删除,那就执行 git branch -D a 就可以强制删除 a 分支。

  4. git tag
    在客户端开发的时候经常有版本的概念,比如 v1.0,v1.1 之类的,所以,在实际开发过程中,根据实际情况,需要我们给代码加上标签,这样假设 v1.1 版本出现了一个新 bug,但是又不晓得 v1.0 是不是也有这个 bug,有了标签就可以顺利切换到 v1.0 版本的代码,重新打包测试一下了。

    所以,如果想要新建一个标签很简单,比如 git tag v1.0 就代表我们在当前代码状态下新建了一个 v1.0 的标签,输入 git tag 可以查看历史 tag 记录。
    团队协作利器 (一)· 初识Git_第9张图片
    想要切换到某个 tag 怎么办?执行 git checkout v1.0 ,即可切换到v1.0 tag 的代码状态了。

    以上,是一些 git 在本地环境的基本操作,还没有涉及到远程仓库,后续会写本地如何跟远程仓库一起同步协作。

你可能感兴趣的:(GitHub,团队协作)