Git 是一个开源的分布式版本控制软件,用以有效、高速的处理从很小到很是大的项目版本管理。 Git 最初是由Linus Torvalds设计开发的,用于管理Linux内核开发。Git 是根据GNU通用公共许可证版本2的条款分发的自由/免费软件,官网:http://git-scm.com/。python
Git是目前世界上最早进的分布式版本控制系统(没有之一)。linux
GitHub是一个基于Git的远程文件托管平台(同GitCafe、BitBucket和GitLab等)。git
Git自己彻底能够作到版本控制,但其全部内容以及版本记录只能保存在本机,若是想要将文件内容以及版本记录同时保存在远程,则须要结合GitHub来使用。使用场景:github
- 无GitHub:在本地 .git 文件夹内维护历时文件;vim
- 有GitHub:在本地 .git 文件夹内维护历时文件,同时也将历史文件托管在远程仓库;bash
集中式和分布式:服务器
- 集中式:远程服务器保存全部版本,用户客户端有某个版本dom
- 分布式:远程服务器保存全部版本,用户客户端有全部版本ssh
Git下载地址:https://git-scm.com/downloads分布式
1)下载安装包,以下图:
2)双击安装应用程序,如下是安装过程当中须要注意的几步:
3)点击下一步,以下图:
4)点击下一步,以下图:
5)点击下一步,以下图:
6)点击下一步,以下图:
7)点击下一步,以下图:
8)点击安装,以下图:
9)安装完成后,“开始”菜单会新增一个Git文件夹,以下图:
10)点击“Git Bash”(Git Bash是一个黑屏终端,仿linux的窗口,可以使用linux命令),以下图:
打开Git Bash终端,按照以下命令配置用户名和邮箱,注意,没有提示表示配置成功。
配置用户名:$ git config --global user.name "你本身GitHub的用户名"
配置邮箱:$ git config --global user.email "你本身GitHub的邮箱"
什么是版本库?
版本库又名仓库,能够理解成一个目录,这个目录里面的全部文件均可以被Git管理起来,每一个文件的修改、删除,Git都能跟踪,以便任什么时候刻都有一个追踪历史,或者在未来某个时刻能够还原。
建立版本库并使用命令管理版本:
1)在一个合适的地方建立一个空目录,好比wllgit;
2)在终端中使用cd命令进入刚建立的空目录(将文件夹拖入终端可快速输入文件夹目录),以下:
3)使用git init命令把这个目录变成Git能够管理的仓库
4)把文件添加到版本库(本地仓库)
在上面建立的目录中建立一个文件(如demo.py),内容为print("hello world!")
把文件添加到仓库,命令为:$ git add domo.py
把文件提交到仓库,命令为:$ git commit -m "这里写注释"
至此,咱们已经在电脑上建好了本地仓库wllgit目录,接下来学习如何使用仓库管理版本。
5)git status
该命令可让咱们时刻掌握仓库当前状态,以下图:
6)git diff
该命令能够查看修改内容,以下图:
当本地和仓库文件内容不一致时,将文件再次提交便可,以下图:
7)git log或者git log --pretty=oneline(显示从最近到最远的提交日志)
以上步骤主要是将不一样版本文件提交到仓库,而且记录每次提交日志,接下来学习如何回退到以前的版本。
8)版本回退
$ git reset --hard HEAD^ $ git reset --hard HEAD^^ $ git reset --hard HEAD~100 $ git reset --hard 具体版本号
HEAD至关于一个指针,指向当前版本,以下图:
9)git reflog
该命令记录每一次的命令,以下图:
10)git checkout -- filename
若是文件filename已经被放到暂存区(执行git add filename,但未执行commit)后,又作了修改,此时,执行此撤销命令,就会回到添加至暂存区的状态。
若是文件filename自修改后尚未被放到暂存区(执行git add filename),此时,执行此撤销命令,就会回到和版本库如出一辙的状态。
总之,该命令就是让文件filename回到最后一次git add或这git commit时的状态。
11)掌握了上述管理仓库的操做,下面来了解相关概念,即工做区和版本库。
Git把管理的文件分为了两个区域四个状态,以下图:
工做区:当前开发程序所在目录称为工做区,即:工做开发都是在该目录,该区域的文件会有状态的变化且状态由git自动检测,若是程序中文件作任何操做(增、删、改),文件状态均会被检测到,可使用【git status】命令查看。
版本库:工做区检测到有文件发生变化,那么意味着较上一个版本以后对程序进行了修改,修改完成以后,能够当作下一版本进行提交,那么就是执行【git add .】 将全部文件提交到暂存区,而后再执行【git commit -m '又一个版本'】提交到版本库的分支便可,以后可使用【git log】命令查看版本记录。
GitHub是一个基于Git实现的代码托管的平台,能够将内容以及版本记录在远程也保存一份,这样就不用U盘来回拷了。PS: 相似GitHub的产品还有许多,如:GitLab、Bitbucket、码云等。
简而言之,就是将咱们的代码放在GitHub的服务器上,这样,不论在哪里,只要有网,就能够将远程仓库(GitHub上)的代码拉取下来,写完代码再同步上去。接下来介绍如何配置远程仓库。
1)注册GitHub
2)建立ssh key
打开Git bash黑屏终端,输入命令 ssh-keygen -t rsa -C "GitHub中绑定的邮箱"
查看公钥内容,以下图:
在GitHub(我的中心 -> Settings ->SSH and GPG keys)中添加公有密钥,以下图:
填写完成后以下图:
测试密钥是否经过,在Git Bash的黑终端输入命令 ssh -T git@github.com
测试经过后,再看github中的ssh是绿色钥匙,以下图:
3)建立远程仓库
点击新建仓库按钮,以下图:
填写仓库信息,以下图:
建立完成后以下图:
4)使电脑关联远程仓库
复制GitHub中的SSH地址,以下图:
在电脑的Git Bash终端输入命令 git remote add origin 远程仓库SSH地址
删除关联命令(知道便可,此处没必要执行)是 git remote rm origin
推送本地库内容到远程库命令 git push origin master
拉取远程库内容到本地库命令 git pull origin master
注意:由于本篇先是创建了本地库wllgit目录,而且使用git init命令产生了.git文件,而后又将此本地库关联了远程仓库,所以,本库库和远程仓库是两个版本,所以要先执行拉取远程库的命令,且加上容许版本不一致的参数,即 git pull origin master --allow-unrelated-histories
注意,执行命令后会进入一个vim的模式,使用你掌握的linux命令退出编辑便可!
执行成功后,本地仓库会多了一个README.md文件,以下:
拉取完成后再执行推送的命令,以下:
执行命令后,远程仓库中就与本地仓库文件一致,以下:
此时,你就能够在电脑上对文件进行修改,而后再执行如下命令推送到远程仓库:
git add filename 将修改文件添加到暂存区 git commit -m "修改内容注释" 将暂存区内容提交到本地仓库 git push origin master 将本地仓库内容推送到远程仓库
5)实际开发中使用Git的步骤
上面创建本地仓库,使用git init只是为了演示本地仓库配置,实际开发中,是应该先有远程仓库,再把远程仓库克隆到本地,克隆时就会自动生成管理本地仓库的隐藏文件.git。
假设已经在GitHub上创建是远程仓库,如今电脑上没有本地仓库,咱们须要将远程仓库内容克隆到本地,进入到合适的目录执行克隆命令 git clone 远程仓库SSH地址
命令执行后,会在当前执行命令的目录下产生一个文件夹,其中包含远程仓库的文件内容,且还有一个隐藏文件.git,以下图:
此时,你就能够在电脑上对文件进行修改,而后再执行如下命令推送到远程仓库:
git add filename 将修改文件添加到暂存区 git commit -m "修改内容注释" 将暂存区内容提交到本地仓库 git push origin master 将本地仓库内容推送到远程仓库
注意:若是项目中有.gitignore文件时,.gitignore文件中定义的文件夹不会被推送到远程仓库中。