版本控制
什么是版本控制?就是版本管理器
版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。 作用:
- 实现跨区域多人协同开发
- 追踪和记载一个或者多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发、提高开发效率
- 跟踪记录整个软件的开发过程
- 减轻开发人员的负担,节省时间,同时降低人为错误
 如上
常见的版本控制器
主流的如下:
- Git
- SVN
- CVS
- VSS
- TFS
启动Git

简单配置Git
所有的配置文件都保存在本地!
任意文件夹下右键打开Git bash ,然后输入 git config -l  查看系统配置
git config --system --list
 查看本地配置,这里是笔者自己还没有配置,并且还给我报错了 查看:git config --global --list 解决报错:git config --global --edit 切记,输入上面的命令会打开默认的编辑器,也就是你安装时候指定的编辑器,如果当时没有更改,那么就是vim  切记,用户名和邮件是必须要配置的,而且是最低配置要求 可以在本地查找git配置文件 进入安装目录/Git/etc/里即可 至于用户目录,是在C:/里,自己搜索一下
Git基本理论
Git本地有三个工作区域:
- 工作区:平时存放项目代码的地方
- 暂存区:用于临时存放你改动的地方,事实上它只是一个文件,报错即将提交到文件列 表心里
- 版本库:又称之为本地仓库,这个不算工作区,而是Git的版本库,里面有你提交所有版本的数据
- 远程仓库:托管代码的平台
加粗文本 加粗文本

工作流程
一般是这样的:
- 在工作目录中添加、修改文件;
- 将需要进行版本管理的文件放入暂存区域;
- 将暂存区域的文件提交到git仓库。
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed) 
简单命令
shell里,# 是注释 初始化当前所在项目,用于项目已有的情况: git init 用于没有的情况: git init your_project 查看文件状态 git status 提交所有文件到暂存区 git add . 提交暂存区中的内容到本地仓库: git commit -m "消息内容" #分号里是你想批注的话,一般是简单概括
忽略文件配置
显然我们并不想提交全部文件,所以需要学习如何只提交部分文件 只需要在项目文件夹下新建.gitignore 即可,切记,名字只能.gitignore 然后简单配置一下
#为注释 *.txt #忽略所有.txt文件 !test.txt #但不忽略test.txt folder/ #folder文件夹下的都不纳入
萌新错误(是我了)
错误一:  以上的意思是说,README.md 还没有被git管控,所有要先git add your_file_name 如:  以上的意思是说,README.md 文件已经被git 管控而且被存到了unstage 那么就可以继续commit 了,以下:  以上的意思是说,README.md 已经被创建出来了,可以使用git log 确认一下,以下:  小规则:local 用户commit时,优先级大于global 用户
关于Git log
查看所有日志
查看head 指向的分支(也就是当前分支) git log  查看所有分支 这里因为笔者只有一个所以只显示了一个:HEAD -> master ,hhh git log --all 
图形化
git log --graph  图形了,但是没有完全图形,hhh
速览:
git log --oneline 
查看最近n 次
git log -n 
组合使用
当然,以上的选项都可以组合使用,例如: 查看最近几次和速览可以结合使用,如: 
git 三个对象
一个commit 对应一个树 
消息修改
修改最新的消息
git commit --amend 接下来会打开默认的编辑器  如图,第一行就是消息,修改即可
修改历史
git rebase -i id 这个id有点讲究,因为要修改信息要找到对应的一次的commit ,既然修改了commit 那么当前这次commit 也会被修改,所以要再上一级的id才行 界面如下: 
连接远程仓库(Github和Gitee)
创建公私钥
- 先检查是否已有公私钥
cd ~/.ssh ls -al - 创建
ssh-keygen -t rsa -b 4096 -C "your_email@" 然后一路回车即可  创建成功  如此添加到github即可
远程仓库
在gitee和github上创建仓库是非常简单的,下面介绍另一种情况,将本地项目和远程仓库连接
- 先复制自己项目的链接(就是你经常白嫖的那个链接)
- 在项目文件夹下,
git init git remote add origin your_stage 以上,便成功将本地仓库和远程仓库关联
校验是否关联成功 git remote -v 
上传文件
git push -u origin master #这个origin可以自定义git push origin master 由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这条即可
|