简单了解-Git&GitHub

244 阅读5分钟

版本控制工具

什么是版本控制工具

工程设计领域中使用版本控制管理工程蓝图的设计过程。在 IT 开发过程中也可以 使用版本控制思想管理代码的版本迭代

版本控制工具具有的功能

  1. 协同修改

多人并行不悖的修改服务器端的同一个文件。

  1. 数据备份

不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。

  1. 版本管理

在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。

  1. 权限控制

对团队中参与开发的人员进行权限控制。对团队外开发者贡献的代码进行审核—Git 独有。

  1. 历史记录

查看修改人、修改时间、修改内容、日志信息。将本地文件恢复到某一个历史状态。

  1. 分支管理

允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

Git介绍

是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git的优势

  1. 大部分操作在本地完成,不需要联网
  2. 完整性保证
  3. 尽可能添加数据而不是删除或修改数据
  4. 分支操作非常快捷流畅
  5. 与 Linux 命令全面兼容

Git结构

  • Git的团队合作
  • 常用的远程库:
  1. 外网 Github和码云
  2. 局域网 GitLab 服务器

Git基本命令

git init:初始化本地库,初始化完成后会有一个 .git文件夹存放的是本地库相关的子目录和文件 git status:查看工作区、暂存区状态 git add【filename】:提交文件到暂存区

git add . : 提交所有文件到暂存区

git commit -m "commitmessage" 【filename】:将暂存区的某个文件内容提交到本地库

git commit -m "commitmessage":将暂存区的所有文件提交到本地库

git log:查看历史版本

git reset --hard【局部索引值】回退到某一个版本

git reset --hard HEAD^ 回退一个版本

  • reset命令的三个参数对比
  1. --soft 参数:只回退本地库的指针
  2. --mixed 参数:回退本地库和暂存区
  3. --head 参数:回退本地库、暂存区和工作区

如果你真的需要回退,你需要根据是否执行了add、commit命令来进行具体的回退过程

git checkout 【fileName】:将文件按照本地库的最新记录还原。

git diff 【fileName】:将工作区中的文件和暂存区进行比较。

分支管理

在版本控制过程中,使用多条线同时推进多个任务。

  • 分支的好处
  1. 同时并行推进多个功能开发,提高开发效率
  2. 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可
  • 分支操作

gitbranch【分支名】:创建分支

gitbranch-v:查看分支

gitcheckout【分支名】:切换分支

合并分支:

  1. 切换到接受修改的分支(被合并,增加新内容)上 git checkout【被合并分支名】
  2. 执行 merge 命令 git merge【有新内容分支名】
  • 解决冲突
  1. 编辑文件,删除特殊符号
  2. 把文件修改到满意的程度,保存退出
  3. git add[文件名]
  4. git commit -m"日志信息"

注意:此时 commit 一定不能带具体文件名,如果出现冲突则需要程序员自己修改代码来解决冲突问题。

Git存储原理

Git 的文件管理机制 Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改, Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的 工作方式可以称之为快照流。

GitHub

GitHub是最大的开源代码托管平台,旨在促进在一个共同项目上工作的个人之间的代码托管、版本控制和协作。通过该平台,无论何时何地,都可以对项目进行操作。

  • 也是我们平常使用最多的场景。
  • 首先再GitHub上创建自己的仓库

  • git remote add【别名】【远程地址】:创建远程库地址别名

  • git push 【别名】【分支名】:推送到 GitHub 仓库

  • git clone 【GitHub地址】:把仓库中的所有代码拷贝到本地库

  • git pull 【远程库地址别名】【远程分支名】:将项目拉取下来,主要是为了共同开发项目,和clone的区别就是pull需要在本地初始化.git,并且只能pull当前分支的内容。

  • GitHub的分支冲突问题

  1. 如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取。
  2. 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。

IDEA 很好的对 Git 进行插件集成,通过可视化的图形界面来使用,底层依然还是基本的git命令