版本控制工具应该有的功能
- 协同修改
多人并行不悖的修改服务器端的同一个文件。 - 数据备份
不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。 - 版本管理
在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。 - 权限控制
对团队中参与开发的人员进行权限控制。对团队外开发者贡献的代码进行审核——Git 独有。 - 历史记录
查看修改人、修改时间、修改内容、日志信息。将本地文件恢复到某一个历史状态。 - 分支管理
允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。
版本控制简介
版本控制工程设计领域中使用版本控制管理工程蓝图的设计过程。在 IT 开发过程中也可以使用版本控制思想管理代码的版本迭代。
常见的版本控制工具
svn
容易单点故障git
分布式管理,不能单点故障
git相关
git简介
git的优势
- 大部分操作在本地完成,不需要联网
- 完整性保证(提交每条数据进行hash运算)
- 尽可能添加数据而不是删除或修改数据
- 分支操作非常快捷流畅(1因为用快照,2每个分支只是创建一个指针)
- 与 Linux 命令全面兼容
git的下载和安装
然后就可以完成该操作
git的结构
git的命令操作
- 初始化git本地仓库
git init
- 进行git的签名
git config --global user.name test
如果只是设置该项目的签名删除global参数,还可以使用user.email
进行邮箱的设置。 - 进行git的文件跟踪
git add 文件名
,此时将项目下的文件加入到了暂存区 - 暂存区的加入到本地仓库
git commit -m "提交的注释信息" 文件名
,如果不加注释信息,此时后弹出vim编辑器进行操作注释信息 - 查看该仓库下文件和暂存区的状态
git status
- 查看版本的信息情况
git log oneline
将版本信息显示一行git reflog
可以查看到索引的情况,便于版本信息前进和后退。 - git版本的前进回退
- 基于索引值操作[推荐]
git reset --hard 索引值
例如git reset --hard b868b26
- 使用^符号:只能后退
git reset --hard HEAD^^
注:一个^表示后退一步,n 个^表示后退 n 步 - 使用~符号:只能后退
git reset --hard HEAD~n
注:表示后退 n 步
后面两种均不常使用
reset 命令的三个参数对比
–soft 参数
仅仅在本地库移动 HEAD 指针 (查看状态时,绿色提示,本地库和暂存区不同步)
–mixed 参数
在本地库移动 HEAD 指针
重置暂存区
–hard 参数
在本地库移动 HEAD 指针
重置暂存区
重置工作区
hard最常用,其余作为了解。
- 删除文件找回
前提:删除前,文件存在时的状态提交到了本地库。
进入的文件目录> rm 文件名(rm aaa.txt)删除本地文件>然后提交到暂存区git add aaa.txt >然后提交到本地仓库git commit -m ”delete aaa” aaa.txt (删除完成)
找回操作:git reset --hard
[指针位置]
删除操作已经提交到本地库:指针位置指向历史记录(回到之前未删除版本)
删除操作尚未提交到本地库:指针位置使用HEAD(git reset --hard HEAD)
,这种操作会重置暂存区和工作区。 - 比较文件的差异
git diff 文件名
是将文件工作区与暂存区进行比较。git diff [本地库中历史版本] [文件名]
可以用HEAD或者版本索引值不带文件名比较多个文件
git的分支操作
- git的分支查看
git branch -v
查看当前的分支 - git的分支新建
git branch 分支名
新建分支 - git的分支切换
git checkout 分支名
切换分支 - 合并分支
- 切换到接受修改的分支上
git checkout [被合并分支名master]
git merge [有新内容分支名]
进行分支的合并
- 冲突的解决
冲突原因: 2个分支,修改同一文件,同一位置,修改内容不一样时,进入该文件后可以看到添加了特殊的标记
- 编辑文件,删除特殊符号
- 把文件修改到满意的程度,保存退出
- git add [文件名]
- git commit -m “日志信息”
- 此时 commit 一定不能带具体文件名
GitHub相关
- 注册GitHub账号
- 创建远程仓库
- 创建远程仓库地址别名。
git remote -v
查看当前所有远程地址别名 ,
git remote add [别名origin] [远程地址]
进行远程地址的添加。 - 进行响应的项目推送。
git push origin 分支名
- 进行项目的克隆
git clone [远程地址]
展示效果:
- 完整的把远程库下载到本地
- 创建 origin 远程地址别名 (git remote -v查看远程库别名)
- 初始化本地库(就是:git init)
git的pull命令
pull=fetch+merge
git fetch [远程库地址别名origin] [远程分支名master] /抓取下来
git checkout origin/master 切换到链接地址(别名)的master(可查看抓取下来内容
切换回 git checkout master
git merge [远程库地址别名origin/master远程分支名] /*合并
git pull [远程库地址别名] [远程分支名]
以上资料来自b站尚硅谷git