代码管理器顾名思义就是管理代码的工具。。帮助我们解决工作中的问题。
开发过程中常见问题:
- 代码回滚:返回到先前的某一特定的状态!
- 代码合并:多人开发中,将各自开发的功能模块进行合并。
- 版本备份:项目开发到某一可运行阶段后,进行备份。
- 权限控制:限制不同用户访问或操作不同的文件。(小白不能碰核心代码吗- -)
- 追究责任:项目出现了Bug后,可以快速定位到Bug是谁造成的。(防止甩锅。。)
源代码管理工具的作用?
- 能追踪一个项目从诞生一直到定案的过程
- 记录一个项目的所有内容变化,无限制返回
- 查看特定版本的修订情况
常见的代码管理工具有:
- CVS 老祖宗
- SVN - 全称是Subversion,集中式版本控制之王者
- git
- clearcase 收费的代码管理工具,价格贵速度慢但十分稳定。
git 简介:
git是一款开源的分布式版本控制工具
在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
作者是Linux之父:Linus Benedict Torvalds
当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)
git svn对比:
虽然没有用过svn 但是看到网上和老师说:
- 在很多情况下,git的速度远远比SVN快
- SVN是集中式管理,git是分布式管理
- SVN使用分支比较笨拙,git可以轻松拥有无限个分支
- SVN必须联网才能正常工作,git支持本地版本控制工作
集中式的特点:
所有的代码都集中在一块, 统一进行管理,效果如图:
分布式特点
在每个客户端都有一份完整的代码仓库, 可以在每个客户端自行管理,效果如图
图中应该有6个箭头将所有内容连接起来 …
简单来说集中式版本控制需要将代码统一在一起,分布式版本控制每个人在本地会有一片空间,可将写好的代码放在本地,需要统一时再进行上传
工作中的流程大概是:
git clone git 会连同代码仓库一起下载下来
git commit git commit 中是提交到本地仓库
git push git push才能提交到服务器
git pull 从服务器下载最新被修改的代码
入职后, 关于代码的第一件事就是要账号密码,登录服务器, 下载代码, 开始熟悉,每天走之前, 提交一份没有问题的代码到服务器,每天早上来之前, 从服务器拉一份最新的代码到本地再进行开发
git的使用分为:
命令行和图形化软件 , 命令行就是类似黑客一样咔咔咔写代码,图形化软件就是类似webstrom类的软件 鼠标点点点即可。
实战前的知识储备(重要):
软件安装地址:https://git-scm.com/download/win
Shell&bash :
Shell俗称壳,用来区别于Kernel(核),是指“提供使用者使用界面”的软件(命令解析器)
命令行进入shell,windows系统:cmd.exe 、 Linux系统 Bourne shell
我们安装的git软件, 内置了bash,但他是阉割版本有些命令并不支持。
我考这一段我自己也有点蒙蔽了。。。。。。。。
-
必学命令
help [子命令] : 查看某一个具体的子命令的使用方法 -
常用命令
- cd path : 将当前路径切换到path路径
- pwd :查看当前所在路径
- ls (-a / -l / -G) : 查看当前文件夹下所有文件及文件夹
- touch filename1 filename2 : 创建一个或者多个文件
- rm filename : 删除文件
- cat filename :查看文件内容
- less filename :分页查看文件内容
- mkdir 文件夹名称 :创建一个文件夹
- rmdir 文件夹名称 :删除一个文件夹
- mv oldFilePath newFilePath :移动文件(可借助此命令给文件重命名)
-
了解命令
wc
字数信息统计
换行个数 单词数 字节数 文件名
0 3 7 a.txt
history
查看操作历史
head
查看文件前几行,如 head -5 index.html
tail
查看文件后几行
ssh
远程登录
ssh root@139.129.236.5
curl
网络请求
curl http://www.baidu.com
whoami
查看当前用户 -
补充
. 代表当前文件路径
… 代表上级目录
以 .开头的文件,代表隐藏文件
* 显示隐藏文件(Mac)
defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder
* 不显示隐藏文件(Mac)
defaults write com.apple.finder AppleShowAllFiles No && killall Finder
vi编辑器
三种模式
1.命令模式
输入的内容, 会被当做命令来处理
2.插入模式
想要给文件添加内容, 必须是这个模式
3.底行模式
想要保存文件, 或退出编辑器, 必须在这个模式输入指令
wq
保存并退出
q!
强制退出
模式切换图解
进阶补充(了解)
命令行模式命令
ZZ(大写)保存并退出
u辙销操作,可多次使用
dd删除当前行
yy复制当前行
p 粘贴内容
ctrl+f向前翻页
ctrl+b向后翻页
i进入编辑模式,当前光标处插入
a进入编辑模式,当前光标后插入
A进入编辑模式,光标移动到行尾
o进入编辑模式,当前行下面插入新行
O进入编辑模式,当前行上面插入新行
底行模式命令
:w保存,:w filenme另存为
:q退出
:wq保存并退出
:e! 撤销更改,返回到上一次保存的状态
:q! 不保存强制退出
:set nu 设置行号
未完待续。。。
04-(掌握) Git 的使用
1. git工作原理
1. 概念理解
- 工作区
> 与.git文件夹同级的其他文件夹或者子文件夹
- 版本控制库
> 暂缓区
> 分支
(Git不像SVN那样有主干和分支的概念. 仅仅存在分支,其中master分支为默认被创建的分支,类似于SVN中的主干)
切换分支:
通过控制HEAD指针指向不同的分支,就可以切换*
2. 操作原则:
所有新添加/删除/修改的文件 必须先添加到暂缓区,然后才能提交到HEAD指向的当前分支中
图解
2. git使用环境
1. 单人开发只需要一个本地库
原因:不需要与他人共享代码,只负责管理自己代码即可;例如提交代码,删除代码,版本控制等等
2. 多人开发时需要一个共享版本库
共享版本库的形式:
本地共享库:文件夹/U盘/硬盘
远程共享库:自己搭建git服务器/ 托管到第三方平台(例如github, oschina)
3. 客户端使用环境
** 无论是单人开发还是多人开发,客户端都可以使用命令行或者图形界面使用git**
> SourceTree
- 下载地址:http://www.sourcetreeapp.com/download/
PHPStorm/WebStorm
内置有git相关操作
3. 学习网站
http://backlogtool.com/git-guide/cn/intro/intro1_1.html
操作步骤
新建code文件夹
git init
初始化git仓库
画图
05-(掌握)Git命令行演练-个人开发
05-01 (掌握)Git命令行演练-个人开发-搭建本地仓库
0. 如何学习git指令
> git help [子命令]
1. 初始化一个本地仓库
> 原因: 管理本地代码,修改上传,版本回退
> 命令: git init
2. 配置仓库
> 告诉git你是谁?
原因: 追踪修改记录
命令: git config user.name “11”
> 告诉git怎样联系你?
原因: 多人合作开发时, 沟通交流
命令: git config user.email "1@qq.com"
> 查看配置信息(.git -> config打开)
命令: git config -l
05-02 (掌握)Git命令行演练-个人开发-基本使用
> 创建文件并提交
命令:
touch index.html
git add .
git commit -m “注释”
> 修改文件并提交
命令:
git add .
git commit -m “注释”
> 删除文件并提交
命令:
git rm index.html
git commit -m “注释”
> 日志查看
命令:
git log
git reflog
理论支持
1. 文件状态(git status)
> 颜色含义
红色: 代表被添加或者修改的文件没有被添加到暂缓区
绿色: 代表文件在暂缓区,等待提交
nothing to commit, working directory clean
表示没有东西需要提交
2. 版本号的含义
版本号是一个由SHA1生成的40位哈希值
这样做的目的是保证版本号的唯一
05-03 (掌握)Git命令行演练-个人开发-版本回退
修改了没有提交-版本回退
命令:
git reset --hard HEAD 重置到当前版本
修改了,已经提交-版本回退
命令:
git reset --hard HEAD^^ 重置到上上个版本
git reset --hard HEAD~2 重置到往上2个版本
git reset --hard 七位版本号 重置到指定版本::
然后再使用git push --force将本次变更强行推送至服务器。这样在服务器上的对应版本的错误提交也彻底消失了。
慎用: 会把别人提交的代码也撤销
05-04 (掌握)Git命令行演练-个人开发-备注补充
1. 配置别名
git config alias.st “status”
git config alias.ci “commit -m”
2. --global的作用
可以进行全局配置,所有的版本库共享此配置
查看全局配置(个人文件夹->.gitconfig
** 个人电脑上建议使用全局配置**
3. 日志查看配置
命令如下:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)\<%an\>%Creset' --abbrev-commit"
使用方式:
git lg
操作步骤1
git help init
C:\Program Files\Git\mingw64\share\doc\git-doc
git config user.name 'yejianhua'
git config user.email '756863517@qq.com'
删除.git
git init
touch a.txt
git status
查看当前状态
红色的在工作区
git add .
. 当前目录下所有文件
* 通配符
git status
存入暂缓区
变成绿色
git commit
提交到master分支
进入vi编辑器
esc
ZZ
操作步骤2
修改a.txt文件
git status
git add .
git commit -m '往a.txt文件中加入内容'
git status
操作3-删除
手动删除a.txt
git status
git add .
git commit -m '手动删除'
git status
touch b.txt
ls
git status
git add.
git commit -m '添加b.txt'
git rm b.txt
git status
git commit -m '删除b.txt'
git status
操作4-查看日志
git log
git reflog
用于版本回退
操作5-版本唯一
画图演示
操作6-版本回退
创建
touch index.js
git status
git add .
git commit -m '创建了index.js文件'
git status
用vi进入index.js
修改好后保存退出
git status
git add .
git commit -m '修改1'
git status
用vi进入index.js
修改好后保存退出
git status
git add .
git commit -m '修改2'
git status
用vi进入index.js
修改好后保存退出
git status
git add .
git commit -m '修改3'
git status
用vi进入index.js
修改好后保存退出
git status
git add .
git commit -m '修改4'
git status
用vi进入index.js
修改好后, 保存退出
不提交进行版本回退
git reset --hard HEAD
git status
index.js文件中添加文件
修改好后, 保存退出
提交到版本库
git reset --hard HEAD
git status
不行
回退到上一个版本
git reset --hard HEAD^
回退两个版本
git reset --hard HEAD^^
回退多个版本
git reset --hard HEAD~版本号
想回去
git reflog
git reset --hard 对应版本号
操作7-别名
演示
git st
报错
git config alias.st 'status'
git st
本地config文件中查看
不建议使用别名
操作8-全局配置
git config --global user.name 'yjh'
C:\Users\yejianhua
命令如下:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)\<%an\>%Creset' --abbrev-commit"
使用方式:
git lg
https://www.cnblogs.com/yiduobaozhiblog1/p/9125465.html
https://www.jianshu.com/p/5ae8d1f1170e