目录:
- 1 首先
- 2 管理历史数据的数据库
- 3 修改记录的提交
- 4 工作树和索引
- 5 安装git
- 6 初期设定
- 7 新建数据库
- 8 提交文件
- 9 push到远程数据库
- 10 clone远程数据库
- 11 从远程数据库pull
- 12 在贝格乐上建立数据库
- 13 push到远程数据库
- 14 克隆远程数据库
- 15 从克隆的数据库进行push
- 16 从远程数据库pull
- 17 合并修改记录
- 18 解决冲突
- 19 push冲突的状态
- 20 解决冲突
首先
- 什么是git:版本管理系统
- 有什么用:
1 把文档还原到编辑前的状态
2 解决多人写代码出现的代码覆盖问题 - git是一个分布式版本管理系统
- 是为了更好的管理Linux内核开发创立的
- 可以把文档的状态作为更新记录保存起来
- 可以把编辑过的文档复原到以前的状态
- 可以显示编辑前后的内容差异
- 覆盖时会有警告
二 管理历史记录的数据库
- 数据库(也可以叫仓库吧,是的)
- 从标题看来,数据库是用来管理历史记录的
- 数据库(Repository)是记录文件或目录状态的地方,存储着内容修改的历史记录
- 数据库的分类
1 远程数据库:配有专用的服务器,多人共享而建立的
2 本地数据库:方便个人使用 - 创建数据库:
1 创建全新的数据库
2 复制远程的数据库
三 修改记录的提交
- 这里的提交是一个名词吗?
- 提交:把文件/目录的添加和变更保存到数据库
- 提交后,数据库中会生成上次提交的状态与当前状态的差异记录(revision)
- 提交是以时间顺序排列状态被保存到数据库中的,凭借该提交和最新的文件状态,就可以知道过去的修改记录以及内容
- 系统会给提交命名,指定这个命名,就可以在数据库中找到对应的提交
- 提交要分开:不同类别的修改(bug,功能添加)要尽量分开提交,方便以后从历史记录里查找特定的修改内容
- 提交时一定要输入提交的信息:
格式:
第一行:提交修改内容的摘要
第二行:空行
第三行:修改的理由
四 工作树和索引
- 索引就是暂存区吧
- 工作树:实际操作的目录
- 工作树—–》索引—–》数据库
- 在数据库和工作树之间有索引,索引是为了向数据库提交做准备的区域
- 没有被加入索引档案不能被提交
- 凭借中间的索引,可以避免工作树中不必要的文件提交,还可以将文件修改内容的一部分加入索引区域并提交
五 安装git
- 选择用命令行
- git –version//两个杠杠
执行version,如果出现版本就成功了
六 初期设定
- 输入用户名和电子邮件
安装git后设置一次就够了
这些信息将作为提交者信息显示在更新历史中
$ git config --global user.name "<用户名>"
$ git config --global user.email "<电子邮件>"
- 以下命令能让Git以彩色显示。
$ git config --global color.ui auto
- 您可以为Git命令设定别名。例如:把「checkout」缩略为「co」,然后就使用「co」来执行命令。
$ git config --global alias.co checkout
- 在win下使用git,含有非ASCII字符的文件会乱码,所以要设置一下
$ git config --global core.quotepath off
- -
九 push到远程数据库
- 如何在远程数据库上共享本地数据库的修改记录
- push:上传本地数据库中存储的修改记录,将本地数据库的修改记录共享到远程数据库,所以远程数据库的修改记录就会和本地数据库的修改记录保持同步
十 克隆远程数据库
- clone:复制远程数据库
- 将远程数据库的全部内容都down下拉
十一 从远程数据库pull
- pull:远程到本地
- pull==下载
十二 在贝格乐建立远程数据库(我们公司用的是什么??)
- 假设公司服务器地址是https://shj
十三 push到远程数据库
- 给远程数据库取别名
目的:下次推送就不需要输入长串的数据库地址了
命令:git remote add <name> <url>
name:服务器的别名
url :服务器的地址
ex:
//origin是服务器的别名
$ git remote add origin https://[your_space_id].backlogtool.com/git/[your_project_key]/tutorial.git
- pull或者push的时候,如果省略了数据库的名称,默认是origin的远程数据库
- 使用push向数据库推送更新的内容:
//repository是目标地址
//refspec指定推送的分支
git push <repository> <refspec>
ex:
//origin是服务器的别名
//master是分支
//向origin推送
//-u:如果指定-u,那么下次推送就可以省略分支名称了,但是第一次运行指令向空的远程数据库推送时,必须指定 远程数据库的名称和分支名称
//用户名,密码,公司给吗??
$ git push -u origin master
- 命令总结:
//1 给服务器起别名
git remote add <name> <url>
2 //向服务器推送
git push <repository> <refspec>
3//推送
$ git push -u origin master
4 -u:如果指定-u,下次推送时就可以省略分支名称了
十四 克隆远程数据库
- -
合并修改内容
- 合并:在pull之后,进行下一次push之前,如果其他人进行了推送内容到远程数据库,你的push会被拒绝
解决冲突
- 执行合并即可自动合并git修改的部分
- 如果远程数据库和本地的同一个地方都发生了修改的情况下,因无法自动判断要选用哪一个修改,所以就发生冲突
<<<<<<<<<<<<<<
本地
=============
远程数据库
<<<<<<<<<<<<<<
push冲突的状态
- -
解决冲突