版本控制系统(Version Control System):是一种记录一个或若干文件内容变化,以便未来查阅特定版本修订状况的系统。css
在本地记录文件内容变化状况。html
缺点:不能进行多人协做git
有一个中央服务器,专门用于管理代码,全部人经过中央服务器,进行代码同步。【表明:SVN 版本控制】github
优势:解决了多人协做问题安全
缺点:太过于依赖中央服务器,与网络。bash
分布式版本控制系统就是一个专门用于管理代码的远程仓库,每一个人本地都有一个远程仓库的完整镜像。服务器
优势:解决多人协做开发问题,不是特别依赖远程仓库,不是特别依赖网络。【也不是不依赖】网络
注意 git 的安装:(1)不能安装在中文目录(2)最好不使用桌面管理软件【360,百度杀毒等等】ssh
工做区:咱们写代码的地方编辑器
暂存区:暂时存储的区域,git 中的代码不能直接从工做区存储到仓库中,须要现将其添加到暂存区,再从暂存区添加到仓库【目的是为了不错误操做】
仓库区:将暂存区的代码转存到 git 仓库中,生成版本号。
【2.1】git status:查看文件状态【红色表示再工做区,绿色表示再暂存区 】
【2.2】git status -s: 简化日志输出格式
【3.1】git add 文件名/目录名:将文件从工做区添加到暂存区
【3.2】git add . :将当前目录下全部文件一次性提交到暂存区 【git add -A 或 git add -all】
# 将index.html添加到暂存区 git add index.html # 将css目录下全部的文件添加到暂存区 git add css # 将当前目录下全部的js文件添加到暂存区 git add *.js # 添加当前目录下全部的文件 git add . git add -A git add --all
【4.1】git commit -m "提交说明":将文件从暂存区添加到仓库区,生成版本号。
【4.2]git commit -a -m "提交说明"(快速提交,以前有提交过文件)
【4.3】git commit --amend -m "提交说明":若是提交说明输入错了,修改使用命令。
# 将文件从暂存区提交到仓库 git commit -m "提交说明" # 若是不写提交说明,会进入vi编辑器,没有写提交说明,是提交不成功的。 git commit # 须要使用vi输入内容 # 若是是一个已经暂存过的文件,能够快速提交,若是是未追踪的文件,那么命令将不生效。 git commit -a -m '提交说明' # 修改最近的一次提交说明, 若是提交说明不当心输错了,可使用这个命令 git commit --amend -m "提交说明"
【5】git config(配置)
【5.1】第一次提交配置:
git config user.name 你的目标用户名
git config user.email 你的目标邮箱名
【5.2】 使用--global 参数,配置全局的用户名和邮箱,只须要配置一次便可。推荐配置 github 的用户名和密码
git config --global user.name *****
git config --global user.email ****
【5.3】git config --list:查看配置信息
【6.1】git log:查看提交的日志
【6.2】git log --oneline:查看简洁的日志
【1】git diff:查看工做区与暂存区提交内容的不一样
【2】git diff --cached:查看暂存区与仓库区内容的不一样
【3】git diff HEAD:查看工做区与仓库区内容的不一样(HEAD 表示最新一次的提交)
【4】git diff 版本 1 版本 2:查看两个版本之间的不一样
【1】git reset:版本回退,将代码恢复到提交过得某一个版本中
【2】git reset --hard 版本号:将代码回退到某一个指定的版本(置三个区)
【3】git reset --soft 版本号:只重置仓库区
【4】git reset --mixed 版本号:重置仓库区与暂存区(默认)
【5】git reflog:查看全部版本信息(使用git log
只能看到当前版本以前的信息)
【6】git reset --hard head~1:将版本回退到上一次提交状态
【忽视文件建立须要在编译器中建立,否则会报错】
在仓库中,有一部分文件是不想被 git 管理的,好比数据的配置密码,写代码的一些思路等等,git 能够经过配置忽略一些文件,这样文件就不用提交了。
【1】方法:注意:该文件是能够将本身忽视的
在仓库根目录下建立一个.gitignore 文件,文件名固定。将不须要被 git 管理的文件路径添加到.gitignore 中。
【忽视.gitignore 文件 (.gitignore)】
# 忽视idea.txt文件 idea.txt # 忽视.gitignore文件 .gitignore # 忽视css下的index.js文件 css/index.js # 忽视css下的全部的js文件 css/*.js # 忽视css下的全部文件 css/*.* # 忽视css文件夹 css
在 git 中,分支实质上就是一个指针,每次代码提交后,这个分支指针就会向后移动,保证一直指向最后一次提交的版本。git 中使用 HEAD 指向当前分支。
【1】每次 commit 提交,都会在仓库区生成一个新的版本
【2】在第一次生成版本后,会自动建立一个 master 分支,指向当前版本
【3】全部的分支,本质上就是指针
【4】默认有一个 HEAD 指针永远指向当前分支
【1】git branch 分支名称:建立分支。
【2】git branch:查看全部分支。
【3】git checkout 分支名称:切换分支(HEAD 指针指向另外一个分支)
当前分支任何操做不会影响其余分支。除非进行分支合并
提交代码时,会产生版本号,当前分支会指向最新的版本号。
【4】git checkout -b 分支名称:建立并切换分支(建立一个新分支,将 HEAD 指针指向当前分支)
【5】git branch -d 分支名称:删除分支(注意:不能在当前分支删除当前分支,须要切换到其余分支,才能够删除)。
【6】git merge 分支名称:将其余分支内容合并到当前分支。
【1】对于同一个文件,若是有多个分支要合并,容易出现冲突。
【2】合并分支时,出现冲突须要手动处理,在进行提交。(通常将本身代码放在冲突代码以后便可)。
git 与 github 没有直接的关系。
git 是一个版本控制工具。
github 是一个代码托管平台,开源社区,是 git 的一个远程代码仓库。
注意: 建立 git 项目时,不能有中文。
git clone [远程仓库地址] [本地项目名]
git push 仓库地址 master
在代码提交到远程仓库,注意 master 分支必须写,不能省略做用:将远程的代码下载到本地
一般在 push 前,须要先 pull 一次。
# 获取远程仓库的更新,而且与本地的分支进行合并 git pull
每次 push 操做都须要带上远程仓库的地址,很是的麻烦,咱们能够给仓库地址设置一个别名
# 给远程仓库设置一个别名 git remote add 仓库别名 仓库地址 git remote add jepson git@github.com:jepsongithub/test.git #删除jepson这个别名 git remote remove jepson #git clone的仓库默认有一个origin的别名
git 支持多种数据传输协议:
https://github.com/jepsongithub/test.git
须要输入用户名和密码git@github.com:jepsongithub/test.git
能够配置免密码登陆每次 push 或者 pull 代码,若是使用 https 协议,那么都须要输入用户名和密码进行身份的确认,很是麻烦。
注意:这些命令须要在 bash 中敲
ssh-keygen -t rsa
C:\用户\当前用户名\
找到 .ssh
文件夹id_rsa
id_rsa.pub
github -> settings -> SSH and GPG keys
页面中,新建立 SSH keyid_rsa.pub
内容到对应文本框中git@github.com:用户名/仓库名.git