作为一名Coder,我想你应该了解代码托管的重要性,常用的版本控制工具也很多,这里说一说Git。
提到Git,我想大家应该应该都不陌生,以下是我的总结,希望和大家一起交流学习。
Git的特点
1. 直接记录快照,而非差异比较
Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。这类系统(CVS,Subversion,Perforce,Bazaar 等等)每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容,请看图 1-4。
Git 并不保存这些前后变化的差异数据。实际上,Git 更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。Git 的工作方式就像图 1-5 所示。
2. 近乎所有操作都是本地执行
在 Git 中的绝大多数操作都只需要访问本地文件和资源,不用连网。就算但如果用 CVCS 的话,差不多所有操作都需要连接网络。因为 Git 在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度很快。
3. 时刻保持数据完整性
在保存到 Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。换句话说,Git 能察觉文件(夹)的任何改动。
4. 多数操作仅添加数据
常用的 Git 操作大多仅仅是把数据添加到数据库。因为任何一种不可逆的操作,比如删除数据,都会使回退或重现历史版本变得困难重重。在 Git 里,一旦提交快照之后就完全不用担心丢失数据,特别是养成定期推送到其他仓库的习惯的话。
Git版本控制的原理
先用一张图来解释。
Git原理Workspace:工作区,执行git add *命令就把改动提交到了暂存区,执行git pull命令将远程仓库的数据拉到当前分支并合并,执行git checkout [branch-name]切换分支
Index:暂存区,执行git commit -m '说明' 命令就把改动提交到了仓库区(当前分支)
Repository:仓库区(或本地仓库),执行git push origin master提交到远程仓库,执行git clone 地址将克隆远程仓库到本地
Remote:远程仓库,就是类似github,coding等网站所提供的仓库
Git的四个状态
有了工作区的概念,就不得不提到Git的几个重要状态,他们分别是:
1. untracked 未跟踪的;
2. modified 修改的(未commit);
3. staged 缓存的;
4. commited 提交的;
假如你在本地新建了文件但是没有添加到git中,那么它就是untracked;如果修改了一个文件,当你没有执行git add 操作的时候文件的状态就是modified;当执行了git add 但是没有commit 的时候它的状态是staged,表示已加入缓冲区;当commit 之后就是commited状态了。
这几个状态的切换通过下图解释。
Git状态间切换第一次使用Git
说了那么多,没有实践怎么行,一起来体验一下Git吧!
1. 注册账号并登录
进入Github官网,注册一个账号并登录;
2. 安装git并配置ssh
如果是linux,在命令行中输入以下命令;
sudo apt-get install git
git config --global user.name "*YOUR NAME*"
/*输入用户名*/
git config --global user.email "*YOUR EMAIL ADDRESS*"
/*输入email*/
下一步配置ssh,这里也可以选择不配置,但是不配置的话每次提交都得输入用户名和密码,比较麻烦,建议配置一下,具体操作参考下列链接:
https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
3. 创建第一个Git仓库
准备工作就绪了,赶快进入正题吧。
登录github账号后点击页面右上角的加号,选择新建仓库;
如图所示,为你的第一个仓库取一个名字吧,然后点击Create repository即可。
3. 初始化本地仓库
经过上一步后你将看到这个界面:
这时你可以选择克隆远程仓库后再修改或者暂且不管去初始化本地仓库,假设你选择的是后者,在本地新建一个文件夹,执行git init 去初始化本地仓库
初始化本地仓库4. 开始第一个提交
新建一个文件并查看 git status
因为我创建的时候没有加入到git中,可以看到它是untracked状态的,执行git add,将文件加入到缓冲区中;
add文件执行git commit
git commit
接下来就到推送到远程仓库了,现在回到刚刚远程上创建完仓库的页面,将本地仓库关联到远程仓库,比如
git remote add origin git@github.com:XLuoChen/hello-world.git
最后一步推送,如:git push -u origin master
很赞哦,快去远程刷新一下页面看下吧!
完美Git常用命令
以上只是git的简单运用,在实际使用时需要配合一些其他命令,关于常用Git命令参见这里
此外,如果锻炼自己使用Git的能力,也可以练习Githug,它是一个通关游戏,每一关是不同的git操作,帮你更好的掌握Git 操作。
网友评论