Git

版本控制工具:

Git: 80%

SVN: 10%

1. 介绍

Git 是一个版本控制工具。可以记录和追踪 某个文件 在某一个时刻的内容和状态。

如果没有版本控制

Git的历史

Git的特点

主流的管理工具对比: Git 80% 上; SVN 10%

2. 安装Git

2.1 Linux

正常来就那个我们在日常配置Linux其它代码开发环境的时候, 在安装某些工具的时候, 其中可能自动安装了git工具. 我们可以通过命令来确定Linux环境中是否已经具备git工具.

如果我们在通过上述命令检测的时候, 发现没有git工具:(如图)

我们可以通过命令来安装git工具:

建议在安装git之后设置一些内容

2.2 Windows

2.2.1 下载

官方下载地址

2.2.2 安装

直接傻瓜式(一路默认, 唯一需要注意如下图)安装即可。

安装的时候,要注意 让Windows 记住登录凭证

判断是否安装成功

如果在Windows的任何路径下都可以出现如下图所示的命令选项, 既是安装成功

3. Git的使用

3.1 Git核心流程

Git的工作流程

3.2 Git 命令

3.2.1 注册相关网站

在不同Git仓库注册的时候, 一定要记住账号和密码和邮箱

3.2.2 建立远程仓库

建立远程仓库

3.2.3 clone

下载仓库内容

注意: 如果是私有仓库,会在clone的时候要求输入账号密码(此账号密码为你的git远程仓库上的账号密码) (下图以Linux为例,要求在命令行输入账号密码)(而在Windows中账号密码会出现弹框提示你输入)

注意: 正常来讲, git工具会自动记住账号和密码, 下次使用就不需要输入了(和远程仓库交互的时候), 如果密码输错, 则可能需要修改系统的记录凭证(windows中比较方便的操作). 或者清空缓存重置账号密码(Linux删除家目录下的 .git-credentials 文件). 建议还是不要输错了

注意: (如果老是每次都和中央仓库交互都需要输入账号密码: windows: git config --global credential.helper manager ) (Linux: git config --global credential.helper store)

(或者各个系统的通用配置在用户名路径下的.gitconfig中 配置 : [credential] helper = store)

3.2.3 status

status状态命令:

这个命令可以帮助我们查看工作区缓冲区本地仓库中的变化。

3.2.4 add

add: 这个命令可以帮助我们把工作区中的变化提交到缓冲区。

3.2.5 commit

commit命令: 帮助把缓冲区变化内容提交到本地仓库。

设置方式一: 直接文件设置

设置方式二: 命令设置

设置完之后,就可以提交了,会产生一个版本信息

3.2.9 log

log命令: 查看仓库中的所有的版本信息

3.3 分支问题

分支是在合作开发中一个非常重要的维护代码迭代/bug修复/协作可发的重要设计结构,

需要注意的是在做分支操作之前: 确认工作空间和缓冲区干净状态, 以避免产生不必要的冲突

3.3.1 查看分支

查看所有分支:

3.3.2 创建分支

创建一个本地分支:

3.3.3 切换分支

从当前分支切换到另一个分支:

创建并切换分支: (等价于先创建, 再切换到创建的这个分支上)

3.3.4 删除分支

删除分支:

3.3.5 合并分支

合并一个其它分支的内容到当前分支

注意: 合并分支应该要向下游版本合并, 而非向上游合并

注意: Y型分支

3.4 冲突问题

冲突: 更多时候是指在一个Git项目管理追踪中, 用户在更新和提交的代码中, 对同一个文件发生了修改

1, 版本冲突: git会自动合并版本冲突, 产生一个合并版本, 最常见, 但是git会自动合并产生合并版本

2, 如果某个文件产生了冲突 (并且内容的变化本身是兼容的:eg创建两个同名无内容文件, 或者内容变化的本身无关性的:eg分别修改同一个文件1行和20行): 不常见, 会自动合并产生合并版本

3, 修改同一个文件,导致内容冲突: 需要手动合并(git对这种情况就无法自动合并产生合并版本了), 如果进行手动的冲突合并, 一定要记得需要重新add -> commit -> push

3.5 提交和更新

在合作开发中, 多个用户基于远程仓库的代码合并本质上是一种Y型分支的问题.

3.5.1 push

push命令: 可把本地仓库中的版本变化推送到远程仓库。

3.2.7 pull

pull命令: 拉取远程仓库中的所有的版本变化到本地。

3.6 协作开发

3.6.1 邀请成员加入仓库

不管是 开源的仓库,还是私有的仓库,都是 只有仓库中的成员才能去修改仓库中的代码。

3.6.2 怎么在项目中组织分支

在公司中写代码, 一定要去问一下分支结构(git branch -a查看), 合并逻辑

组织GIT的分支体系有很多种模式: 怎么设计没有标准的定式. (举例...)

3.7 回退问题

慎重: 覆盖 (紧急情况: master生产环境紧急回退->clone->本地回退-> 修改代码 -> 覆盖muster_bug)

回退工作空间的变化: (参考git status提示)

把缓冲区中的变化,回退到工作空间:

回退本地版本

永远不要手动回退远程仓库的代码

3.8 忽略文件

Git在做版本控制的时候,可以让我们忽略一些文件,不去追踪这个仓库中这些文件的变化。

注意事项:

3.3 本地项目提交

场景

方式一:

方式二: