CVS(始祖,集中式1985年)–>SVN(集大成者,集中式2000年)–>git(geek主流,分布式2005年)–>github(geek社区,托管网站2008年)
Git是目前世界上最先进的分布式版本控制系统.
SVN 是集中式版本控制系统,版本库是放在中央服务器的,而干活的时候,用的都是自己的电脑,
所以首先要从中央服务器那里得到最新的版本,然后干活,干完后需要把自己做完的活推送到中央服务器.
集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了.
> Git是分布式控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样工作的时候就不需要联网了,因为版本都是在自己的电脑上.
既然每个人的电脑都是一个完整的版本库,那多个人之间如何协作呢?比如自己在电脑上改了A文件,其他人也在电脑上改了A文件,
这时你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了!
msysgit是windows 版的Git.安装完成后,在开始菜单里面找到”Git ->Git Bash”,因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识.
git config --global user.name "***"
git config --global user.email "******@163.com"
注意:git config –global 参数
,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。
一: 创建版本库
什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解为一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来的某个时刻还可以将文件”还原”.
1. 通过命令git init
把这个目录变成git 可以管理的仓库
这时候你当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录下的文件,否则会把git仓库给破坏了.
2. 把文件添加到版本库中
首先明确下,所有的版本控制系统,只能跟踪文本文件的改动,比如txt文件,网页,所有程序的代码,Git也不例外,版本控制系统可以告诉你每次的改动,但是图片,视频这些二进制文件,虽然也能用版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是知道图片从1KB变成2KB,但是到底改了啥,版本控制也不知道.
下面是demo演示:
在版本库testgit 目录下新建一个记事本文件 readme.txt 内容如下:11111111;
第一步:使用git 命令: ```git add readme.txt``` 添加到暂存区里面去.如果没有任何提示,说明已经添加成功了
第二步:用命令 ```git commit -m "可添加提交注释"``` 告诉Git,把文件提交到仓库.
(提交修改和提交文件是一样的两步:第一步是git add
,第二步是git commit -m "注释"
)
命令 ```git status``` 查看状态
命令 ```git diff readme.txt``` 查看文件改了什么内容
命令 ```git log``` 查看历史记录,显示从最近到最远的日志,简化版:```git log --pretty=oneline```
二: 版本回退
回退到上一个版本:git reset --hard HEAD^
上上个版本:git reset --hard HEAD^^
回退到前100个版本:git reset --hard HEAD~100
回退后要知道前一个版本号:git reflog
回退后再恢复:git reset -hard
版本号
三: 理解工作区与暂存区的区别
。。。。。。
mkdir: XX (创建一个空目录 XX指目录名)。
pwd: 显示当前目录的路径。
git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件。
git add XX /git add .(添加所有文件) 把xx文件添加到暂存区去。
git commit –m “XX” 提交文件 –m 后面的是注释。
git status 查看仓库状态。
git diff XX 查看XX文件修改了那些内容。
git log 查看历史记录。
git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一个版本(如果想回退到100个版本,使用git reset –hard HEAD~100 )。
cat XX 查看XX文件内容。
git reflog 查看历史记录的版本号id。
git checkout — XX 把XX文件在工作区的修改全部撤销。
git rm XX 删除XX文件。
git remote add origin https://github.com/tugenhua0707/testgit 关联一个远程库;
git push –u(第一次要用-u 以后不需要) origin master 把当前master分支推送到远程库;
git clone https://github.com/tugenhua0707/testgit 从远程库中克隆。
git checkout –b dev 创建dev分支 并切换到dev分支上。
git branch 查看当前所有的分支。
git checkout master 切换回master分支。
git merge dev 在当前的分支上合并dev分支。
git branch –d dev 删除dev分支。
git branch name 创建分支。
git stash 把当前的工作隐藏起来 等以后恢复现场后继续工作。
git stash list 查看所有被隐藏的文件列表。
git stash apply 恢复被隐藏的文件,但是内容不删除。
git stash drop 删除文件。
git stash pop 恢复文件的同时 也删除文件。
git remote 查看远程库的信息。
git remote –v 查看远程库的详细信息。
git push origin master Git会把master分支推送到远程库对应的远程分支上。
勾选initialize this repository with a README: 当在文件中作一些修改,写一些项目介绍的时候可以在整个项目的主页里看的到。