GitHub
世界上最大的软件远程仓库,是一个软件项目托管服务平台,使用Git做分布式版本控制,在这里你可以分享你的项目到这个平台或者在这个平台找到其他程序员分享的项目源码。我们进行团队开发的时候一般使用类似GitHub这样的平台来管理我们的代码。
在使用GitHub前最好先了解一下git。
Git
Git是分布式版本控制的一个工具,简单地说就是一个实现文件历史管理的一个工具,下面举个例子。
我们写代码的时候是要不断修改的,但是修改完成后却发现修改前的代码更好,但是这个时候代码可能已经修改了一半,再修改成原来的代码太浪费时间了。这时我们会想到一个简单的方法,备份,但是这个不太好,一个是备份如果太多难以管理,一个是如果文件比较大备份太消耗你的存储空间。这个时候我们就可以使用Git来解决这个问题,它可以把你每一次提交的文件按照顺序保存起来,这样当你想要恢复原来的文件时就可以通过Git找到你保存的记录然后恢复文件。
简单的解释就是类似于游戏存档和读档。
分布式与集中式
前面我说过Git是一个分布式版本控制的一个工具,那么分布式与集中式有什么区别呢。
集中式版本控制系统版本库是放在一个中央服务器上的,并且使用的时候必须联网才行,如果这个中央服务器出了问题,所有用户都无法工作了。
分布式版本控制没有所谓的中央服务器,或者说每一台电脑都是自己的中央服务器,所以使用的时候不需要联网。如果你的电脑出了问题,只需要去别人的电脑复制就行了,相对于集中式,分布式的安全性更好。
安装Git(Windows,其它系统安装请自行查找)
下载安装Git:网上搜索下载安装即可。
安装完之后,先设置一下你的身份等信息,打开git-bash.exe,输入下面的语句
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
Git使用
首先创建一个版本库管理你的文件,即新建一个文件夹,我将其命名为Test(建议不要使用中文目录,不然可能会出错)。在该文件夹的目录右击打开命令行窗口(按住键盘shift键右击),输入下面的语句。
在创建的文件夹里面新建一个TXT文件,命名为test1.txt,里面输入下面的语句
接下来分两步把文件放入仓库
第一步,把文件放进仓库缓存区
没有提示即添加成功。
第二步,把文件从仓库缓存区提交到仓库。
-m后面的“xxx”是对这一次提交的内容说明(不要像我一样用中文),如果你不想输入后面的-m"xxx"也可以,但是警告你不要这样做,不然你一定会后悔的。
为什么要分两步,在第一步我们是可以提交很多个文件的,这里要一条语句一条语句地写,但是在第二步不用了,不管你第一步添加了多少个文件,到了第二步只需git commit -m "xxx"这一条语句就搞定了。
打开test1.txt,在里面输入一句话
保存后使用git status语句查看仓库状态
根据上面的信息我们可以知道文件已经被更新过了,但是还没有提交到仓库。
文件更新的内容是什么呢?不记得了怎么办,没事,可以使用git diff语句查看
原来更新的内容是这个
更新的内容也看了,可以提交了。
唉,提交的版本太多了,都不知道哪个版本修改了什么,没事,可以使用日志来查看
好吧,看到这里我前面错了,我不应该使用中文来作为内容说明,之前警告了是不支持Unicode编码的,正常来说你看到的就是你写的内容说明了。
现在我想文件恢复到上一个版本,怎么办,很简单
git reset --hard HEAD^
这里 HEAD^表示上一个版本, 如果是上上个版本就要用两个^,那前一百个版本怎么办,写一百个^?当然不是,还有一种写法是HEAD~100
注意,如果输入git reset --hard HEAD^后出现more?这是因为cmd控制台中换行符默认是^,而不是\ ,所以它的more?的意思是问你下一行是否需要再输入,而^ 符号就被当做换行符而被git命令忽略掉了,解决方法如下:
加引号:git reset --hard “HEAD^”
加一个^:git reset --hard HEAD^^
换成~:git reset --hard HEAD~ 或者 git reset --hard HEAD~1
~ 后面的数字表示回退几次提交,默认是一次
这时重新打开文件,已经恢复到上一个版本
这时再查看日志,发现最新版本的信息不见了,就像穿越到古代却发现回不去了
不要着急,如果命令行没有关闭,从之前的日志中找到最新版本的commit id,然后
就行了,commit id不需要写全,前几位就行,git会自动找
如果已经关闭了怎么办?也没事,git中有一个git reflog会记录你的每一次操作。