选题背景
在开发中,每次对文件的修改都会衍生出新的版本,多人协作时也会产生不同版本,不停的修改会产生大量文件,此时可以引入版本控制工具,帮助版本迭代与合并,管理修改历史。 下面是版本控制的好处:
- 实现跨区域多人协同开发
- 追踪和记载一个或者多个文件的历史记录
- 组织和保护你的源代码和文档
- 统计工作量
- 并行开发、提高开发效率
- 跟踪记录整个软件的开发过
- 减轻开发人员的负担,节省时间,同时降低人为错误
分布式版本控制 Git
分布式管理可以让每个人都可以下载所有的代码,防止服务器崩溃导致无法更新代码。
与SVN的区别
- SVN是集中式版本控制系统 版本库是集中放在中央服务器的 而工作的时候 用的都是自己的电脑 所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作 ,对网络带宽要求较高
- Git是分布式版本控制系统 没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网
Git可以直接看到修改的文件内容
Git使用方式
Git Bash:Unix与Linux风格的命令行,使用最多,推荐最多
Git CMD:Windows风格的命令行
Git GUI:图形界面的Git
一般使用git bush
基本linux命令
cd改变目录cd ..切换到上一级目录(cd后面跟空格
pwd显示当前所在目录,是Print Working Directory的缩写
4.
clear 清屏
5. ls 列出目录下所有文件(绿色代表程序,蓝色代表目录,白色代表文件
6. 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件
7. rm 删除一个文件(remove 如rm index.js
8. mkdir 新建一个目录 mkdir src
9. rm -r 删除目录 例如rm -r src 删除src目录
r代表递归(recursive)的意思。递归删除意味着它将删除指定的目录及其所有子目录和文件f代表force 强制删除
mv移动文件mv index.js src将index.js移动到src目录下reset重新初始化终端,约等于清屏history查看命令历史,查看用过的所有命令help帮助exit退出- #表示注释
Git配置
所有的配置文件,其实都保存在本地
查看配置 git config -l
-l其实就是--list
#查看系统config
git config --system --list
#查看当前用户(global)配置
git config --global --list
设置用户名与邮箱(用户标识,必要)
当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:
git config --global user.name "xxxx" #名称
git config --global user.email xxx@qq.com # 邮箱
本质是存到了本地文档.gitconfig中
Git原理
-
Workspace:工作区,就是平时存放项目代码的地方
-
Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
-
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
-
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
工作流程
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将需要进行版本管理的文件放入暂存区域; 如git add .( **.**的意思是所有文件)
3、将暂存区域的文件提交到git仓库。
如 git commit
4、提交到远程git push
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
Git项目搭建
工作目录(WorkSpace)一般就是希望Git管理的文件夹,可以是项目目录,也可以是一个空目录,建议使用全英文。
本地仓库搭建
创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。
1、创建全新的仓库,需要用GIT管理的项目的根目录执行:
# 在当前目录新建一个Git代码库
git init
此时关于版本等的所有信息都在.git文件内。
克隆远程仓库
1、另一种方式是克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地
# 克隆一个项目和它的整个代码历史(版本信息)
git clone [url] # https://gitee.com/cicadasmile/model-arithmetic-parent.git
我在gitee上克隆了一个文件并存到相应目录下,如下
Git文件操作
文件的四种状态
-
未跟踪(Untracked):表示该文件在git仓库中不存在,git无法跟踪对其的更改。可以通过使用
git add命令将文件添加到git仓库中。 -
已修改(Modified):表示该文件已存在于git仓库中,但在工作目录中发生了更改。这意味着在下一次提交之前需要将更改的内容通过
git add命令添加到暂存区。 -
已暂存(Staged):表示已修改的文件已经通过
git add命令添加到暂存区。这意味着文件的更改已经准备好被提交到git仓库中。 -
已提交(Committed):表示已暂存的文件已经通过
git commit命令提交到git仓库中。文件的更改已经永久保存在git仓库中,并且可以通过git checkout命令回滚到该提交的版本。
具体操作
git status:查看所有文件状态
git status filename 查看指定文件状态
git add .将所有文件添加到缓存区
git commit -m "message"指定注释内容并提交暂存区的内容到本地仓库 m:message
文件的忽略规则
在主目录下新建.gitignore
忽略规则:
可以使用通配符*、?、[]、{} !代表例外
/filename 代表忽略此目录下的子目录
filename/ 代表忽略上级目录
如
此时将忽略以上内容
遇到的问题
在删除已提交的文件时提示无法删除
此时可以关闭
git并重启
引申:
.git目录下生成的是一个仓库,没必要删除