0%

创建版本库

什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

所以,创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:

1
2
3
4
5
6
$ pwd
/Users/simon
$ mkdir learngit
$ cd learngit/
$ pwd
/Users/simon/learngit

创建好learngit目录后,如果Mac下的SourceTree Git管理工具打开此目录,则会报如下错误:

1
2
Invalid folder
The path /Users/simon/learngit does not refer to a working copy for Mercurial or Git.

说明此文件夹还未变成Git可管理的文件夹(项目、仓库)。

第二步,通过git init命令把这个目录变成Git可以管理的仓库:

1
2
$ git init
Initialized empty Git repository in /Users/simon/learngit/.git/

瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的。

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的。

把文件添加到版本库

首先这里再明确一下,所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道。

不幸的是,Microsoft的Word格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的。

因为文本是有编码的,比如中文有常用的GBK编码,日文有Shift_JIS编码,如果没有历史遗留问题,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。

现在我们编写一个readme.txt文件,内容如下:

1
2
Git is a version control system.
Git is free software.

一定要放到learngit目录下(子目录也行),因为这是一个Git仓库。

把一个文件放到Git仓库只需要两步。

  1. 用命令git add告诉Git,把文件添加到仓库:
    1
    $ git add readme.txt
  2. 用命令git commit告诉Git,把文件提交到仓库:
    1
    2
    3
    4
    $ git commit -m "wrote a readme file"
    [master (root-commit) 7e08ce2] wrote a readme file
    1 file changed, 2 insertions(+)
    create mode 100644 readme.txt

简单解释一下git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

git commit命令执行成功后会告诉你,1个文件被改动(我们新添加的readme.txt文件),插入了两行内容(readme.txt有两行内容)。

为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:

1
2
3
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."

此时,通过SourceTree可以观察到如下效果。

在Mac OS X上安装Git

在 Mac 上安装 Git 有两种方式。最容易的当属使用图形化的 Git 安装工具,界面如图 1-7,下载地址在:http://sourceforge.net/projects/git-osx-installer/

另一种是通过 MacPorts (http://www.macports.org) 安装。如果已经装好了 MacPorts,用下面的命令安装 Git:

1
$ sudo port install git-core +svn +doc +bash_completion +gitweb

这种方式就不需要再自己安装依赖库了,Macports 会帮你搞定这些麻烦事。一般上面列出的安装选项已经够用,要是你想用 Git 连接 Subversion 的代码仓库,还可以加上 +svn 选项,具体将在第八章作介绍。(译注:还有一种是使用 homebrew(https://github.com/mxcl/homebrew) :brew install git。)

安装完成后,还需要最后一步设置,在命令行输入:

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。

注意git config命令的—global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

阿里云的空间没有续费,资源被释放了,代老师又要重启应用,这下就只有重新装系统装软件了。在这篇文章中,记录一下关于数据库Mysql的安装及配置过程。

安装Mariadb

  1. 安装命令
    1
    yum -y install mariadb mariadb-server
  2. 启动

    1
    systemctl start mariadb

    同时补充其他几个命令

    1
    2
    3
    systemctl stop mariadb # 关闭服务
    systemctl restart mariadb # 重启服务
    systemctl status mariadb # 查看状态
  3. 进行Mariadb相关的简单初始化配置

    1
    mysql_secure_installation

    输入root密码,当然第一次密码为空,直接回车

    1
    Enter current password for root (enter for none):

    设置密码

    1
    2
    3
    Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
    New password: <– 设置root用户的密码
    Re-enter new password: <– 再输入一次你设置的密码

    其他配置

    1
    2
    3
    4
    Remove anonymous users? [Y/n] <– 是否删除匿名用户,回车
    Disallow root login remotely? [Y/n] <–是否禁止root远程登录,回车,
    Remove test database and access to it? [Y/n] <– 是否删除test数据库,回车
    Reload privilege tables now? [Y/n] <– 是否重新加载权限表,回车

配置Mariadb的字符集

登录数据库

1
$ mysql -u root -p

查看当前字符集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
MariaDB [(none)]> show variables like "%character%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

MariaDB [(none)]> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
3 rows in set (0.00 sec)

修改字符集为utf-8

1
vi /etc/my.cnf

在[mysqld]后添加

1
character_set_server=utf8

再次查看字符集
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
MariaDB [(none)]> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

MariaDB [(none)]> show variables like '%collation%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+

设置权限

授予root外网登陆权限

1
mysql>grant all privileges on *.* to root@'%' identified by <password> WITH GRANT OPTION;

到此为止,mysql的安装及初始化配置已经完成。

开启开机启动

1
systemctl enable mariadb

新版本的CentOS已经不使用chkconfig命令了

设置开机不自动启动则是

1
systemctl disable mariadb

查看此服务是否为开机启动

1
systemctl is-enabled mariadb

查看开机自启动的命令

1
ls /etc/systemd/system/multi-user.target.wants/

异常情况恢复

如果root自己把自己的权限弄没了,可以通过如下命令进入

1
# mysqld_safe --skip-grant-tables &

这时进入mysql是不需要密码的。

如何把root用户都删除了,这时通过CREATE USER命令或者GRANT命令都是没有用的。需要通过SQL语句来插入一个用户。

1
MariaDB [mysql]> INSERT INTO mysql.user (Host, User, Password) VALUES('localhost', 'root', PASSWORD('123456'));

然后把root用户其他所有的XXX_priv字段改为Y。这时,root用户的权限才算恢复过来了。