Git是分布式版本控制系统
我们注意划重点,他是一个分布式版本控制系统,在他诞生之前,就已经有许多集成式版本控制系统.
如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?更何况随着计算机软件的发展,一个软件会产生很多版本,如何去管理这些版本就会产生对这种形态的软件的需要.
CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?
集中式系统有一个大型的中央处理系统,中央处理系统是一台高性能、可扩充的计算机,所有的数据、运算、处理任务全部在中央计算机系统上完成。中央计算机连接多个终端,终端用来输入和输出,没有数据处理能力,运算全部在主机上进行。远程终端通过网络连接到中央计算机,它们得到的信息是一致的。
集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。
他有一个巨大的缺陷:
集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,非常致命而且过分依赖于中央服务器的性能.
在程序设计中,分布式版本控制(英语:distributed revision control 或 distributed version control,又译为分布式版本控制),又称去中心化版本控制(decentralized version control),是一种版本控制的方式,它允许软件开发者可以共同参与一个软件开发项目,但是不必在相同的网络系统下工作。其作法是在每个开发者电脑中复制一份完整的代码库以及完整历史。因此在无法连接网络时,仍可以进行软件的分支及合并,可以加速大部分的作业,增加此情形可以进行的工作,而且系统的代码库可以在多家电脑上备份,不需靠单一位置的备份。而多个位置的代码库再透过其他机制来达到同步。
初始化本地仓库
git init 在初始化后本地仓库(该文件夹目录下会多出一个 .git文件夹)
添加需要提交的文件(有修改)
git add [file](git add .可添加当前子目录所有产生变化的文件)
提交 对提交文件生成新的版本
git commit -m "message"("message"中输入本次提交你想要记录的信息)
我想要删除提交的错误文件怎么办?
记住,在git中文件消失对这个文件来说也是一种变化 , git记录的文件的变化.
所有只需要在本地仓库目录删除对应文件,在进行git add
和commit
即可
好用的查看仓库内文件变化状态命令
git status
是非常好用的查看你当前仓库中文件变化状态的命令
多按按他看看仓库状态总不会吃亏
链接远程库(GitHub)
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容.
登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库
第3步: 链接远程库
本地仓库目录下输入命令: $ git remote add origin git@github.com:"username"/"repository name".git
向远程库推送
git push -u origin master
查看你链接的远程库:
git show
有些文件不想提交上去:比如工程文件等等
建立.gitignore
文件,在该文件中输入你不想提交的文件或者目录即可
从远程库克隆(需要网络良好):
$ git clone git@github.com:"username"/"repository name".git
版本回退:
git log
命令显示从最近到最远的提交日志
你看到的一大串类似1094adb...的是commit id(版本号)
回退制定版本:
$ git reset --hard "commit id"
回退上一版本:
$ git reset --hard HEAD^
git作为分布式版本控制系统相比集成式更加现代,但他相比别的分布式版本控制系统的优势在于git还有极其强大的分支管理等等功能.我还没有展开进一步学习,先不在此探究.