Posts Github入门1 - Git的由来及背景
Post
Cancel

Github入门1 - Git的由来及背景

🗃 Linus Torvalds 托瓦兹哲学

  • I am smarter, I can teach you more, I am your god.
  • You not only have to be a good coder, you have to be a sneaky bastard too.
  • Talk is cheap, show me the code.

狂人一个,但的确也是个 genius coder.

此外:

  • Git相关书目作为基础优先推荐: 《Pro Git》
  • Git-SCM doc 一手教学

🔖 学习Git相关内容时需要了解的缩写 Abbr.

  • VCS: Version Control System

  • SVN: Subversion (属于集中式VCS)

  • Git: Linux之父随便给它取的名字 (属于分布式VCS)

分布式的VCS 也可以叫 Distributed Version Control (DVC)或 Distributed Revision Control (DRC),但不常用了。


  • The name “git” was given by Linus Torvalds when he wrote the very first version. He described the tool as “the stupid content tracker” and the name as (depending on your way):
    • random three-letter combination that is pronounceable, and not actually used by any common UNIX command. The fact that it is a mispronunciation of “get” may or may not be relevant.
    • stupid. contemptible and despicable. simple. Take your pick from the dictionary of slang.
    • “global information tracker”: you’re in a good mood, and it actually works for you. Angels sing, and a light suddenly fills the room.
    • “g*dd*mn idiotic truckload of sh*t”: when it breaks

(Reference: Link)


⚗ Git的面世缘由

1998年9月 - 2002年,Linus那Linux开源的内核项目管理起来一直很麻烦,因为项目实在是太大了,开发者花费过多的时间在版本管理上。

于是,2002年,Linus开始使用BitKeeper公司的分布式VCS来管理项目(其实BK的项目2000年才正式写完),且这段合作过程也是有着不小的争议和亮点。

2005年4月后,由于Linus的企业破解BitKeeper公司的分布式VCS产品并干扰同行竞争,被BitKeeper公司回收了其免费使用权。

Linus急了,于是没多久,同样是2005年,Git出生了,出道即巅峰。

(Reference: Link)


🧐 Git立项目标

  1. 分支切换速度要尽可能快

  2. 占用空间容量要尽可能小

  3. 设计不可复杂化

  4. 完全分布式

  5. 强力支持非线性开发模式(允许上万个并行开发的分支同时工作)

  6. 能够高效管理我司自己的Linux内核项目

(Reference: Link)


💫 SVN vs. Git

差异SVNGit
系统特点1.集中式版本控制系统(文档管理很方便)2.企业内部并行集中开发3.windows系统上开发推荐使用4.克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件,用时将近一个小时,极慢1.分布式版本控制系统(代码管理很方便)2.开源项目开发3.mac,Linux系统上开发推荐使用4.克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件,用时1分钟,极快
灵活性不灵活。1.搭载svn的服务器出现故障,无法与之交互 2.所有的svn操作都需要中央仓库交互(例:拉分支,看日志等)灵活。1.可以单机操作,git服务器故障也可以在本地git仓库工作 2.除了push和pull(或fetch)操作,其他都可以在本地操作 3.根据自己开发任务任意在本地创建分支 4.日志都是在本地查看,效率较高
安全性较差,定期备份,并且是整个svn都得备份较高,每个开发者的本地就是一套完整版本库,记录着版本库的所有信息(gitlab集成了备份功能)
分支方面1.拉分支更像是copy一个路径 2.可针对任何子目录进行branch 3.拉分支的时间较慢,因为拉分支相当于copy 4.创建完分支后,影响全部成员,每个人都会拥有这个分支5.多分支并行开发较重(工作较多而且繁琐)1.我可以在Git的任意一个提交点(commit point)开启分支!(git checkout -b newbranch HashId) 2.拉分支时间较快,因为拉分支只是创建文件的指针和HEAD 3.自己本地创建的分支不会影响其他人4.比较适合多分支并行开发5.git checkout hash值(切回之前的版本,无需版本回退)6.强大的cherry-pick
版本控制1.保存前后变化的差异数据,作为版本控制(占用空间较少,但版本回滚很慢)。 2.版本号进行控制,每次操作都会产生一个高版本号(svn的全局版本号,这是svn一个较大的特点,git是hash值)1.git只关心文件数据的整体发生变化,存的是文件快照并压缩,作为版本控制(占用空间稍多,但版本回滚极快),文件没有改变时,分支只想这个文件的指针不会改变,文件发生改变,指针指向新版本。 2. 40 位长的哈希值作为版本号,没有先后之分。3. git rebase操作可以更好的保持提交记录的整洁
工作流程1.每次更改文件之前都得update操作,有的时候修改过程中这个文件有更新,commit不会成功 2.有冲突,会打断提交动作(冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。)1.开始工作前进行fetch操作,完成开发工作后push操作,有冲突解决冲突 2.git的提交过程不会被打断,有冲突会标记冲突文件3.gitflow流程(经典)
学习成本好学。使用起来更方便,svn对中文支持好,操作简单,适用于大众难学。更在乎效率而不是易用性,成本较高(有很多独有的命令,rebase,远程仓库交互的命令,等等)
权限管理严格。svn的权限管理相当严格,可以按组、个人针对某个子目录的权限控制(每个目录下都会有个.svn的隐藏文件)宽松。git没有严格的权限管理控制,只有账号角色划分(在项目的home文件下有且只有一个.svn目录)
平台未了解。gitlab(建议使用,集成的功能较多,API开发),gerrit,github等

(Reference: Link)

问题: Git, Gits区别? GitLab, Gerrit区别?


🏷️ Git相关下载与安装的补充

  • 基础 Git-SCM (Git Client / Git Bash) 下载地址:

    • https://git-scm.com/download/
    • (此 SCM 不是Supply Chain Management, 也不是 Software Configuration Management,是 Source code management
  • Git本身也是开源的:

    • https://github.com/git/git
    • 即便是在Windows, Git Bash 用的 command-line terminal 是 Linux 指令
    • 要区别于Windows Powershell 的 MS DOS 指令 (Microsoft - Disk Operation System‘s Command)

🔨 Git 安装后,一生一次的初始化操作

打开 git bash

git --version 测试git安装成功与否

git config --global user.name "yourgithubId" 配置ID

git config --global user.email "email@xxx.com" 配置Email

git config --list

  • 关于 –global 参数
    • --system 设置本系统中所有用户的默认git账号
    • --global 设置系统中本用户的默认git账号
    • 设置当前文件夹目录应该归属于哪个git账号
  • 关于 config 变量存放的三个位置:
    • /etc/gitconfig ‘–system’ 所对应的存储目录
    • ~/.gitconfig ’–global‘ 所对应的存储目录
    • ./.git/config ‘ ’ 所对应的存储目录

This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

Trending Tags