Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目;是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件;Git 与常用的版本控制工具 CVS,Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
?
所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd
pwd 命令用于显示当前目录。在我的Mac上,这个仓库位于/Users/michael/learngit 。
如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。
第二步,通过git init 命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git 的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
如果你没有看到.git 目录,那是因为这个目录默认是隐藏的,用ls -ah 命令就可以看见。
现在我们编写一个readme.txt 文件,内容如下:
Git is a version control system.
Git is free software.
一定要放到learngit 目录下(子目录也行),因为这是一个Git仓库,放到其他地方Git再厉害也找不到这个文件。
和把大象放到冰箱需要3步相比,把一个文件放到Git仓库只需要两步。
第一步,用命令git add 告诉Git,把文件添加到仓库:
$ git add readme.txt
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
第二步,用命令git commit 告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
简单解释一下git commit 命令,-m 后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
嫌麻烦不想输入-m "xxx" 行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。实在不想输入说明的童鞋请自行Google,我不告诉你这个参数。
git commit 命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。
为什么Git添加文件需要add ,commit 一共两步呢?因为commit 可以一次提交很多文件,所以你可以多次add 不同的文件,比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
运行git status 命令看看结果:
git status 命令可以让我们时刻掌握仓库当前的状态,上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改。
虽然Git告诉我们readme.txt被修改了,但如果能看看具体修改了什么内容,自然是很好的。比如你休假两周从国外回来,第一天上班时,已经记不清上次怎么修改的readme.txt,所以,需要用git diff 这个命令看看:
git diff 顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到,我们在第一行添加了一个“distributed”单词。
知道了对readme.txt作了什么修改后,再把它提交到仓库就放心多了,提交修改和提交新文件是一样的两步,第一步是git add :
$ git add readme.txt
同样没有任何输出。在执行第二步git commit 之前,我们再运行git status 看看当前仓库的状态:
$ git status
在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log 命令查看:
git log 命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL ,上一次是add distributed ,最早的一次是wrote a readme file 。 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline 参数:
$ git log --pretty=oneline
?
一般教程都有,以下总结下自己碰到的问题:
$ git add tt.txt fatal: pathspec 'tt.txt' did not match any files
其实很好解决,就是自己新建一个tt.txt的文件,然后放在该目录下就可以了。这时候再来执行?git add tt.txt命令就可以了。
当然可以在添加之前写点东西,再添加,注意不要使用记事本,采用其他的文本编辑器。notepad++就蛮合适的。
? (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|