GIT学习使用随笔

​ Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

​ Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

​ Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

什么是版本控制

版本控制(Version Control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误

简单说就是用于管理多人协同开发项目的技术。

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

无论是工作还是学习,或者是自己做笔记,都经历过这样一个阶段!我们就迫切需要一个版本控制工具!

Git 与 SVN 区别

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。

Git 与 SVN 区别点:

  • 1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

  • 2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

  • 3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

  • 4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

  • 5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

Git安装

打开 [git官网] https://git-scm.com/,下载git对应操作系统的版本。

所有东西下载慢的话就可以去找镜像!

官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/

注意

如果要用sourceTree等第三方工具操作git,安装时需要勾选此项,其他均next即可。

Git配置

注意:所有的配置文件,其实都保存在本地!

查看配置 git config -l

查看不同级别的配置文件:

#查看系统configgit config --system --list  #查看当前用户(global)配置git config --global  --list

配置个人的用户名称和电子邮件地址:

$ git config --global user.name "xxx"
$ git config --global user.email test@xxx.com

注意:当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中。只需要做一次这个设置,如果你传递了–global 选项,因为Git将总是会使用该信息来处理你在系统中所做的一切操作。如果你希望在一个特定的项目中使用不同的名称或e-mail地址,你可以在该项目中运行该命令而不要–global选项。总之–global为全局配置,不加为某个项目的特定配置。

Git流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。

  • 在克隆的资源上添加或修改文件。

  • 如果其他人修改了,你可以更新资源。

  • 在提交前查看修改。

  • 提交修改。

  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

Git 工作区、暂存区和版本库

基本概念

我们先来理解下 Git 工作区、暂存区和版本库概念:

  • **工作区:**就是你在电脑里能看到的目录。

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

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

    • 图中左侧为工作区,右侧为版本库。在版本库中标记为 “index” 的区域是暂存区(stage/index),标记为 “master” 的是 master 分支所代表的目录树。
    • 图中我们可以看出此时 “HEAD” 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
    • 图中的 objects 标识的区域为 Git 的对象库,实际位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。
    • 当对工作区修改(或新增)的文件执行 git add 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。
    • 当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
    • 当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。
    • 当执行 git rm --cached 命令时,会直接从暂存区删除文件,工作区则不做出改变。
    • 当执行 git checkout . 或者 git checkout – 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区中的改动。
    • 当执行 git checkout HEAD . 或者 git checkout HEAD 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

Git 创建仓库

使用当前目录作为Git仓库,我们只需使它初始化。

git init

该命令执行完后会在当前目录生成一个 .git 目录。

使用我们指定目录作为Git仓库。

git init newrepo

初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。

如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:

$ git add *.c
$ git add README
$ git commit -m '初始化项目版本'

git clone

我们使用 git clone 从现有 Git 仓库中拷贝项目(类似 svn checkout)。

克隆仓库的命令格式为:

git clone <repo>

如果我们需要克隆到指定的目录,可以使用以下命令格式:

git clone <repo> <directory>

参数说明:

  • **repo:**Git 仓库。
  • **directory:**本地目录。

比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:

$ git clone git://github.com/schacon/grit.git

执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。

如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

$ git clone git://github.com/schacon/grit.git mygrit

Git 操作

建议使用sourceTree或者idea集成的git插件

企业环境总体流程

1:配置用户名、邮箱

$ git config --global user.name “xxx”
$ git config --global user.email test@xxx.com

2:生成密钥

ssh-keygen -t rsa -C test@xxx.com

3:查看密钥

cat ~/.ssh/id_rsa.pub

4:复制密钥到码云或者其他代码托管平台。配置好后可以使用ssh连接就不用每次提交代码都输入密码了

5:sourceTree安装

​ 遇到注册直接跳过即可(较新版本)

提前安装git会检测出来

如果没有提前安装或者安装git时没有允许第三方软件提交git(此时可以下载一个或者自己安装 点击重新检查)

项目没down下来选择clone,如果已经下载选择add

工具=》选项=》SSH客户端直接选择openssh可以自动识别git配置的信息

sourceTree安装包

链接:https://pan.baidu.com/s/1r4KVzw52odjnSF-wfETIgw
提取码:v61f

sourceTree安装集成git并配置密钥至码云相关推荐

  1. git推送项目到码云(gitee)

    git推送项目到码云(gitee) git推送项目到码云(gitee) 创建账号 创建一个Gitee账号,我使用的是Gitee因为国内速度快~ 本地安装Git 前往 Git 根据操作系统下载Git到本 ...

  2. 如何使用git上传本地代码到码云上(超详细的呦)

    如何使用git上传本地代码到码云上(超详细的呦) 文章目录 如何使用git上传本地代码到码云上(超详细的呦) 一.准备工作 二.通过git把项目代码提交到本地仓库 三.把本地仓库代码提交到码云 一. ...

  3. Git学习(了解版本控制、Git安装配置、Git基本理论、Git搭建、Git文件操作、使用码云或Github、IDEA集成Git,Git分支开发)

    学习git之前,我们需要先明白一个概念,版本控制! 版本控制 什么是版本控制 版本迭代,新的版本!版本管理器. 版本控制(Revision Control)是一种在开发的过程中用于管理我们对文件.目录 ...

  4. Jenkins 流水线 获取git 分支列表_jenkins的安装和配置 自动化部署 码云 gitee

    目前项目使用的jenkins 自动化部署的还是比较多的 ,所以趁着脑瓜子还清醒,来写一下如何使用 jenkins 使用码云更新代码后,重新构建就是最新的代码,费话不多少了 直接上货, 首先要做一下准备 ...

  5. github 公钥 私钥_ubuntu git生成ssh key (公钥私钥)配置github或者码云

    Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 设置Git的user name和email: git confi ...

  6. 通过git将本地代码上传码云

    什么是码云? 码云是开源中国社区2013年推出的基于 Git 的完全免费的代码托管服务,这个服务是基于 Gitlab 开源软件所开发的,在 Gitlab 的基础上做了大量的改进和定制开发,目前已经成为 ...

  7. 【Git版本控制管理】Gitee(码云)和GitHub的使用

    远程仓库的使用 文章目录 远程仓库的使用 使用码云(Gitee) 使用GitHub 远程仓库是指托管在因特网或其他网络中的你的项目的版本库. 你可以有好几个远程仓库,通常有些仓库对你只读,有些则可以读 ...

  8. Git的简单使用——连接码云

    安装Git 到Git官网https://www.git-scm.com/ 下载Git客户端 网盘下载 安装时选择默认即可. 安装完成后在桌面的快捷菜单中选择Git Bash Here 或者在开始菜单中 ...

  9. 使用Git上传项目到码云

    为了更方便的开发和管理代码,代码托管工具尤为重要:这里列出几个代码托管平台: GitHub https://github.com/ 开源中国(码云) http://git.oschina.net/ C ...

最新文章

  1. AllUsers And SiteUsers
  2. java file pathname_int compareTo(File pathname)
  3. 关于SimpleDateFormat时间转换总是显示1970年的问题
  4. 前端学习(1381):多人管理项目1项目管理搭建
  5. Spring学习总结(27)——Spring常用注解再总结
  6. C++标准转换运算符:const_cast
  7. mysql数据没有同步更新_MySQL数据库主从没有同步的两种解决方案
  8. 在framework和hal添加log
  9. C语言进制转换相关函数
  10. 【微信小程序】【云开发】【从零开发】【零成本】翻译小程序 —《阿怼翻译》0.0.1版本(有教程视频和源码)
  11. unity学习之可编程渲染管线 SRP Batcher
  12. EyouCms1.0前台GetShell漏洞复现
  13. c语言程序设计第07章在线测,《C语言程序设计》第07章在线测试.doc
  14. Element-Ui组件 单选框(Radio) 修改点击激活时的文本颜色,填充色和边框色
  15. 计算机键盘重复,电脑怎么设置键盘重复延迟和重复速度?
  16. vue—维持登录状态
  17. 计算机视觉算法岗 面试经验 (转载)
  18. 我的架构梦:(九十八)消息中间件之RocketMQ的高可用机制——消息发送高可用
  19. 矩阵笔记4:矩阵分析(第三版)-史荣昌-第四章:矩阵分解
  20. 【老孟Flutter】Flutter 2的新功能

热门文章

  1. 计算机房动画图片英语,国产动画片大全
  2. linux查询网卡bdf信息,Linux获取pci设备的厂商号、设备号、class号
  3. 【转】Android-Accessibility(辅助功能/无障碍,自动安装APP)
  4. Python基础算法:排序、查找、二叉树
  5. java sslcontext_Java手动添加SSL证书
  6. 用户体验——尼尔森十大交互原则
  7. 用栈和队列实现魔王语言
  8. 如何将wps转换成html单元格内的图案还保留,如何利用WPS将网络数据转为表格 Excel批量转为Html,Html转换成Excel...
  9. 原来技术管理可以更美的
  10. qq群文件无法打开显示内容?