什么是git
git的分布式版本控制系统,自诞生于 2005 年以来,Git 日臻成熟完善,迅速成为最流行的分布式版本控制系统,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统,可以应付各种复杂的项目开发需求。2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。
什么是分布式版本控制系统
说道分布式版本控制系统,我们先来说一下集中式的版本控制系统:
集中式版本控制系统,版本库是集中存放在中央服务器的,而大家工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始工作,工作完成,再把自己的修订推送给中央服务器。这类系统,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
现在再来看一下分布式的版本控制系统:
布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
GitHub与Git的区别
GitHub与Git是完全不同的两个东西。在Git中,开发者将代码存入名叫“Git仓库”的资料库中并加以使用。而GitHub则是在网络上提供Git仓库的一项服务。也就是说GitHub上公开的软件源代码全都由Git进行管理。
GIT下载与安装
windows下可以去官网下载:https://git-for-windows.github.io/,然后点点即可!
centos下:yum -y install git
GIT初始化设置
设置用户名和邮箱
liubin@DESKTOP-E3SKG7C MINGW64 ~ $ git config --global user.name "LiuBin" liubin@DESKTOP-E3SKG7C MINGW64 ~ $ git config --global user.email "1546893728@qq.com"
这个命令会在用户家目录下生成.gitconfig文件
liubin@DESKTOP-E3SKG7C MINGW64 ~ $ cat .gitconfig [user] email = 1546893728@qq.com name = LiuBin
然后就需要去注册一个github账号啦~ 这里就不在敖述~~~~~
git-ssh配置和使用
生成密钥
$ ssh-keygen -t rsa -b 4096 -C "1546893728@qq.com"
Enter file in which to save the key (/c/Users/liubi/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/liubi/.ssh/id_rsa.
Your public key has been saved in /c/Users/liubi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Au44y7WZnG13GQgrfRMCvLXezRpDfuT8E5NQgw6Ssa8 1546893728@qq.com
The key‘s randomart image is:
+---[RSA 4096]----+
| . .o . |
| o +.. . o |
| .+.o o . . |
| ...+.o + |
| .o.BSO . . |
| o. +oO B + |
| o o.E. * + o |
| . = *. o o o |
| o *... . . |
+----[SHA256]-----+
然后连续3个回车,出现这些泡泡就代表你成功了。
然后就会得到一些文件:
登录Github,添加ssh
将 id_rsa.pub的内容全部复制到以下:
两个区域和四个状态
Git把管理的文件分为两个区域和四个状态
工作区:
当前开发程序所在目录称为工作区,即:工作开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,如果程序中文件做任何操作(增、删、改),文件状态均会被检测到,可以使用 【git status】命令查看。
liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ ls index.html README.md liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ git status On branch master Your branch is behind ‘origin/master‘ by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) nothing to commit, working tree clean liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ touch hello.md liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ git status On branch master Your branch is behind ‘origin/master‘ by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) Untracked files: (use "git add <file>..." to include in what will be committed) hello.md nothing added to commit but untracked files present (use "git add" to track) liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master)
版本库:
工作区检测到有文件发生变化,那么意味着较上一个版本之后对程序进行了修改,修改完成之后,可以当做下一版本进行提交,那么就是执行 【git add .】 将所有文件提交到暂存区,然后再执行【git commit -m ‘又一个版本‘】提交到版本库的分支即可,之后可以使用【git log】命令查看版本记录。
liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ git status On branch master Your branch is behind ‘origin/master‘ by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) Untracked files: (use "git add <file>..." to include in what will be committed) hello.md nothing added to commit but untracked files present (use "git add" to track) liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ git add . liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ git status On branch master Your branch is behind ‘origin/master‘ by 1 commit, and can be fast-forwarded. (use "git pull" to update your local branch) Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: hello.md liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ git commit -m "second commit" [master b123c2e] second commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 hello.md liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master) $ git log commit b123c2ee3071f1142468b2ba63f23ea4df06125b (HEAD -> master) Author: liubin <1546893728@qq.com> Date: Fri Mar 16 00:24:40 2018 +0800 second commit commit bd9be8890fbd283adb8d1c43120006cb47c33baf Author: liubin <1546893728@qq.com> Date: Thu Mar 15 23:36:00 2018 +0800 新增index commit 6db481f7247bcf81353cefefb50054a329aaba9a Author: liubin <1546893728@qq.com> Date: Thu Mar 15 23:25:57 2018 +0800 first commit liubi@DESKTOP-9HC44IV MINGW64 /e/项目/grg/blog (master)
GIT常用的基础命令
- git init:初始化,表示即将对当前文件夹进行版本控制。
- git status:查看Git当前状态,如:那些文件被修改过、那些文件还未提交到版本库等。
- git add filename:将指定文件添加到版本库的暂存状态。
- git commit -m ‘提交信息‘:将暂存区的文件提交到版本库的分支。
- git log:查看提交记录。
基础入门就到这里了,关于更多的git的知识,请见以后的博客或者参考官网的book: https://git-scm.com/book/zh/v2