1、一直都有听说Git,但因为看起来很难用就一直没接触
2、找工作被虐了之后为了以后的发展,觉得必须要好好看看了。
3、找到了
廖雪峰老师的网站,感觉条理清晰又简单易懂,非常受用
4、以下是今天所学到的内容
- 分布式版本控制系统与集中式的区别
以前在同学的介绍下使用的SVN,最后也没怎么用明白。接触Git的时候听说了SVN是集中式版本控制系统,与分布式的Git有区别。简而言之,多个用户从同一个服务器上下载文件,每次更改后再提交到服务器上,服务器更新修改。保证所有人从服务器上下载到的文件都是同一版本,此为集中式。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。Github就是一个免费的提供“中央服务器”的网站。 - 安装
Gitmsysgit是Windows版的Git,从https://git-for-windows.github.io下载(国内镜像),然后按默认选项安装即可。
安装完成之后 运行Git Bash
接着输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
- 创建仓库
使用命令行进入你需要创建仓库的文件夹,然后输入$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/ - 工作区、暂存区、版本库
Git有如上三个分区。工作区就是仓库文件夹,也就是可以直观在电脑上看到的,暂存区是使用add命令之后的文件临时储存的位置,版本库是使用commit提交暂存区的文件修改之后的。当工作区的修改提交到了暂存区(add)没有commit,显示绿色,仅仅修改了工作区,没有add,显示红色。 - 常用命令:
$ git add xxx.txt //提交到暂存区
$ git commit -m "备注" //提交暂存区到版本库
$ git diff xxx.txt //检查工作区和版本库文件的不同
$ git status //查看状态
$ git reset --hard HEAD^ //回退当前一个版本 --hard代表同时更新当前版本库
$ git reset --hard 版本号 //回退到指定版本号
$ git reflog //查看历史修改
$ git checkout -- xxx.txt //将暂存区中的xxx.txt内容覆盖到工作区,若暂存区中没有修改,则将版本库中的内容覆盖到工作区。
$ git reset HEAD xxx.txt// 将版本库中最新xxx.txt内容覆盖到暂存区
$ rm test.txt //删除文件
$ git remote add origin git@github.com:derekshonen/learngit.git //将本地库使用ssh方式关联到远程库 origin就是远程库
$
git remote add origin https://github.com/XXXX/learngit.git //将本地库使用https方式关联到远程库 (比较慢)
$ git push origin master //将本地最新master分支更新到远程库
$ git clone git@github.com:derekshonen/gitskills.git //从远程库clone一个到本地
$ git checkout -b dev //创建一个dev的分支并跳转到该分支
$ git checkout dev //跳转到dev分支
$ git branch //查看所有分支 当前分支前有*号
$ git merge dev //将dev分支合并到当前分支
若dev是在当前分支基础上修改的,则会Fast-forward,直接合并。
若当前分支另外修改了,会在当前分支的文件上标出两者的不同,处于merging状态,用户手动修改之后,再add、commit,完成合并。
Git鼓励大量使用分支$ git branch -d dev //删除dev分支 如果dev分支的修改没有合并过,则应使用大写的-D