系统环境:Ubuntu 16.04
Git和其他版本控制系统一样只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,其可以告知你每次的改动;而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,Git无法告知。
要真正使用版本控制系统,就要以纯文本方式编写文件。因为文本是有编码的,强烈建议使用标准的UTF-8编码,所有语言使用同一种编码,既没有冲突,又被所有平台所支持。
安装Git
-
查看Git是否安装
$ git --versin
-
安装Git
$ sudo apt-get install git $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com"
创建版本库
-
在本地创建一个空目录
$ mkdir testgit
-
把这个目录变成Git可以管理的仓库
$ cd testgit/ $ git init
ps:当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。如果没有看到.git目录,因为这个目录默认是隐藏的,用ls -ah命令就可以看见。
创建版本库内容
-
创建文件
在本地目录或子目录下创建一个readme.txt文本文件,文件内容如下:
This is a test for git and github. Today is 2020.6.16.
-
添加文件到Git仓库
$ git add readme.txt
-
提交文件到Git仓库
$ git commit -m "wrote a readme file"
ps:后面输入的是本次提交的说明,可以输入任意内容,从而可以在历史记录里方便地找到改动记录;同时commit可以一次提交很多文件,所以你可以多次add不同的文件。
查看修改情况
-
修改readme.txt文件
修改后的内容如下:
This is a test for git and github. Today is 2020.6.16. My name is gtw.
-
查看修改结果
$ git status
反馈结果告知readme.txt被修改过了,但还没有准备提交的修改 -
查看修改具体内容
$ git diff readme.txt
修改版本库内容
-
添加修改后的文件
$ git add readme.txt
-
提交修改后的文件
$ git commit -m "add my name"
版本回退
-
查看修改日志
$ git log
终端显示从最近到最远提交的日志,可以看到3次提交 -
回退版本
$ git reset --hard HEAD^ $ cat readme.txt
上一个版本就是HEAD^ ,上上一个版本就是HEAD^^ ,当然往上100个版本写100个 ^ 比较容易数不过来,所以写成HEAD~100
可见成功回退到上一个版本 -
指定回到未来的某个版本
$ git reset --hard 7fab9 //从log中可以获取下个版本的id为7fab9 $ cat readme.txt
Github使用
-
创建SSH Key
ssh-keygen -t rsa -C "youremail@example.com"
-
添加 SSH Key
登陆GitHub,打开“Account settings”,“SSH Keys”页面然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容.
-
创建远程库
在Repository name填入testgit,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库.
在GitHub上的这个testgit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。 -
关联远程库
$ git remote add origin git@github.com:hustgtw/testgit.git
-
推送到远程库
$ git push -u origin master