Git 基础知识回顾及 SVN 转 Git 自测

背景

项目开发过程中使用的版本控制工具是 SVN,Git 多有耳闻,以前也偶尔玩过几次,但是工作中不用,虽然本地也有环境,总是不熟练。

最近看一本网络开源技术书时,下载源码部署了一下,又温故了一下 Git 的用法,思考一个问题:如果现在我们的版本控制工具从 SVN 转换到 Git,我能不能直接上手呢?

本文汇总一下 Git 的基础知识和转换需要的基本流程,要上手也是没问题,资料来源于网络,说实话,资源真是多啊,如果真要换 Git ,现学现用足够了。

Git 原理

  1. Git 是什么?Linux 的源代码版本控制工具,在 BitKeeper 收费后,该团队自己开发的一个版本控制工具。
  2. Git 和 SVN 的区别是什么?存储方式不同。
    Git 存储的是全量快照:
    Git 基础知识回顾及 SVN 转 Git 自测_第1张图片
    途中的虚线是指相对上个版本没变化的文件,那么它就只存储一个指向上个版本的指针,其他变化的文件作为本版本的文件。而 SVN 保存的差异信息:
    Git 基础知识回顾及 SVN 转 Git 自测_第2张图片
    版本 V2 记录了相对 V1的增量变化内容。

Git 的基本思想:

  • 分布式版本控制工具,每个主机上的本地仓库都是一个节点,commit 也只是提交到本地仓库的,然后通过 push 到原创共享仓库
  • 直接记录快照,而非差异比较。
  • 近乎所有的操作都在本地执行,除了推送操作外。
  • 时刻保持数据的完整性。
  • 多数操作都是添加数据的操作。
  • 文件的三种状态:CMS「客户管理系统缩写记住它们」(Commit、Modified、Stated)

Git 操作

Git 的常用操作:

  • git init
  • git clone
  • git add
  • git commit
  • git pull
  • git fetch :与 git pull 的区别是,不会自动合并,用于需要人工比对差异的情况,然后再手动执行 merge。相当于查看变动,如果没有冲突或者没有问题,就可以直接执行 pull 拉取操作了。
  • git push
  • git log
  • git status
  • git config

Git 的换行配置

  • LF:line feed(单个字符\n),Linux 下的换行符号,含义:换行。
  • CRLF:carriage return line feed(回车换行,两个字符:\r\n),Windows下的换行符号。

LF 和 CRLF 的历史遗留故事,Windows 操作系统和 Linux 操作系统的差异为版本控制带来的问题。

解决办法是配置 core.autocrlf

true :最初的换行符号提交到 Linux 上了,都是 LF,但是下载到本地的时候,自动转换为 CRLF,为了 Windows 系统而推荐的配置。

input:所见即所得,适合 Linux 和 macOS。

结论就是:在 Window 主机上的配置应该为 true ,自动处理行尾,在 Linux 或 MAC 上设置为 input ,所见即所得,本地获取时不处理行尾。

SVN 日常操作

本地使用的 SVN 工具是 SnailSVN,日常基本操作有:

  1. 检出
  2. 更新
  3. 提交
  4. 查看日志
  5. 变更比对

Git 工具

Git 的也有图形化工具 SourceTree,界面很清爽,对比 SVN 的日常操作,有这个工具就够了,尤其是它能直接在界面上显示待提交的文件变化:

这个功能太好了,尤其是我在 SVN 使用的时候,都是在文件目录下逐个对比差异的。

直接找到 SourceTree 的工程路径,然后在 IDEA 中打开就可以了,所有的修改状态自动对应到当前选中的分支上。

论工具的使用,本人还是属于熟练工的一种吧!各种技术、工具啊,真的是够多的,像我这种只会用工具、抽象创造力匮乏的人,算不上科技人才吧,妥妥的工具人!

你可能感兴趣的:(项目开发问题,svn,git)