一,安装
前文所述,Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上运行。
不过由于git强大,好用,所以慢慢地有人把它移植到了其他平台上。
现在,Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行。
严格来说,git的安装要区分平台,比如linux安装,mac安装和Windows安装。
我个人未来一段时间主力使用ubuntu,所以只记录ubuntu 16.04下的安装方式。
安装非常简单,使用sudo apt install git
在一些网络资料上会写 install git-core,这又是什么意思呢?
因为以前有个软件也叫GIT(GNU Interactive Tools),为了不重名,Git就只能叫git-core了。
后来由于Git名气越来越大,干脆就把GNU Interactive Tools改成gnuit,git-core正式改为git。
现在我们只需要install git即可。
安装完成后,还需要在终端输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
这一步骤必须完成,且非常重要。
它目的在于告诉git系统,将来谁修改的文件,以便和其他人协同工作。
每次git提交时都会引用这两条信息,会随着更新内容一起被永久纳入历史记录。
注意git config命令的--global参数,用了这个参数,表明以后你这台电脑上所有的项目都会默认使用该信息。
信息存放文件为:~/.gitconfig
如果要在某个特定的项目中使用其他名字或者邮件,去掉--global参数重置配置即可。
此时信息存放文件为: 当前项目下.git/config
二,创建仓库
我们学习git的目的就是为了高效管理项目,抛弃掉过去那种费时费力的落后方式。
要想让git帮我们管理项目,第一步就是创建仓库。
如何创建仓库呢?仓库又是什么呢?
仓库,英文名repository,这个概念是站在git角度来说的。
git把不同的项目当成是一个一个不同的仓库,每一个仓库(项目)里面都包含许多货物(文件)。
而站在开发者的角度来说,一个项目可能就是一个目录,该目录里包含许多文件以及子目录。
所以初学者可以把一个仓库等价于一个目录(项目)。
即仓库==项目==目录。
git并没有那么智能,它无法知道开发者想要它做什么,因此我们需要明确告诉它去管理某一个项目,这个操作就叫做创建仓库。
一旦创建好了仓库,那么这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
比如我个人想要git去管理桌面这个目录,那么首先
cd 桌面
git init
创建仓库后,该目录下会出现一个名为.git的隐藏目录。
所有git需要的数据和资源都存放在这个目录中。
初学者最容易踩坑地方是,在某个目录下git init后,该目录下所有文件就自动被git管理了,这是错误的!
事实上,我们仅仅告诉git把该目录当成仓库,还没有开始跟踪管理仓库中任何一个文件。
要想把文件纳入版本控制,还需要git add 加入:
git add *.c
git commit –m “init project version”
第一句git add *.c 意味着把所有c语言源文件加入控制。
第二句git commit 意味着提交到仓库,后面的-m 表明本次提交的说明,“init project version”内容是我们自己写的,作用类似代码注释。
初学者容易踩坑的第二个地方是,跨目录随意git add,认为git会自动把文件添加好,这是错误的!
git add添加文件时,该文件必须存放于创建好的仓库里,换句话说,添加之前,文件本体或拷贝需要在该项目中。
它不像visual studio这类IDE,不支持项目内部逻辑上的文件关系。
个人总结:
① 要想让git管理哪一个项目,就在该项目的根目录中git init 创建仓库。
② 创建仓库完成后,把想要跟踪控制的文件 git add,最后git commit 提交。
为什么git的设计者不采用git init 后,自动管理该目录下所有文件的方式呢?
反而还需要手工git add 添加,再手工git commit 提交?
从技术角度说,git完全可以做到更自动化,个人觉得这恰恰印证了linux的核心理念。
“傻瓜化”,“自动化”是Windows系统的设计理念---用户完全不懂,我们帮他们拿主意。
而LINUX系统的核心理念在于---用户完全清楚他们在做什么,无需旁人额外作主。