Git & GitHub学习笔记
1 版本控制1.1 版本控制工具应该具备的功能协同修改(多人并行不悖的修改服务器端的同一个文件)数据备份(不仅保存目录和文件的当前状态,还能保存每一个提交过的历史状态)版本管理(在保存每一个版本的文件信息的时候要做到不保存重复的数据,以节约存储空间,提高运行效率。这方面SVN采用的是增量式管理的方式,而Git采取了文件系统快照的方式。)权限控制(对团队中参与开发的人员进行权限控制;对团队外开发者贡
1 版本控制
1.1 版本控制工具应该具备的功能
- 协同修改(多人并行不悖的修改服务器端的同一个文件)
- 数据备份(不仅保存目录和文件的当前状态,还能保存每一个提交过的历史状态)
- 版本管理(在保存每一个版本的文件信息的时候要做到不保存重复的数据,以节约存储空间,提高运行效率。这方面SVN采用的是增量式管理的方式,而Git采取了文件系统快照的方式。)
- 权限控制(对团队中参与开发的人员进行权限控制;对团队外开发者贡献的代码进行审核--Git独有。)
- 历史记录(查看修改人、修改时间、修改内容、日志信息;将本地文件恢复到某一个历史状态。)
- 分支管理(允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。)
1.2 版本控制简介
1.2.1 版本控制
工程设计领域中使用版本控制管理工程制作蓝图的设计过程。在 IT 开发过程中也可以适用版本控制思想管理代码的版本迭代。
1.2.2 版本控制工具
集中式版本控制工具:CVS、SVN、VSS.....(缺点:服务器损坏的话,历史数据会丢失)
分布式版本控制工具:Git、Mercurial、Bazaar、Darcs.....(在本地就可以进行版本控制,本地就会有完整的历史记录,避免单点故障)
2 Git简介
2.1 Git的优势
- 大部分操作在本地完成,不需要联网
- 完整性保证
- 尽可能添加数据而不是删除或修改数据
- 分支操作非常快捷流畅
- 与Linux命令全面兼容
2.2 Git的结构
工作区(写代码)—git add—>暂存区(临时存储)—git commit—> 本地库(历史版本)
2.3 Git和托管中心
代码托管中心的任务:维护远程库
局域网环境下:GitLab 服务器
外网环境下:GitHub 、码云
2.4 本地库和远程库
团队内协作:
跨团队协作:
3 Git命令行操作
3.1 本地库操作
3.1.1 本地库初始化
(打开 git 命令行窗口:在目录文件夹下右键选择 Git Bash Here)
- 命令:git init
- 效果:会在当前目录生成.git目录(隐藏的)
- 注意:.git 目录里存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改。
3.1.2 设置用户名和邮箱
3.1.3 基本操作
- 状态查看操作:git status (查看工作区、暂存区状态)
- 添加操作:git add [file name] (将工作区的“新建/修改”添加到暂存区)
- 提交操作:git commit -m "commit message" [file name](将暂存的内容提交到本地库)
- 查看历史纪录:git log (多屏显示控制方式:空格向下翻页、b向上翻页、q退出)
- git log --pretty=oneline (一行显示)或 git log --oneline
- git reflog (HEAD@{移动到当前版本需要多少步})(HEAD相当于一个指针,指向当前所在的索引)
- 前进后退:git reset --hard [局部索引值](基于索引值操作)
- reset 命令的三个参数对比:
- --soft 参数(仅在本地库移动HEAD指针);
- --mixed 参数(在本地库移动HEAD指针、重置暂存区);
- --hard 参数(在本地库移动HEAD指针、重置暂存区、重置工作区)
- 删除文件并找回:
- 【前提】删除前,文件存在是的状态提交到了本地库。
- 【操作】git reset --hard [指针位置]
- 删除操作已经提交到本地库:指针位置指向历史记录
- 删除操作尚未提交到本地库:指针位置使用HEAD
- 比较文件差异:
- git diff [文件名] (将工作区中的文件和暂存区进行比较)
- git diff [本地库中历史版本][文件名] (将工作区中的文件和本地库历史记录比较)
- 不带文件名比较多个文件
3.1.4 分支管理
3.1.4.1 什么是分支?
在版本控制过程中,使用多线条同时推进多个任务。
3.1.4.2 分支的好处?
同时并行推进多个功能开发,提高开发效率;
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3.1.4.3 分支操作
- 创建分支:git branch [分支名]
- 查看分支:git branch -v
- 切换分支:git checkout [分支名]
- 合并分支:
- 【第一步】git checkout [被合并分支名] 切换到接受修改的分支(被合并,增加新内容)上
- 【第二步】git merge [要合并的分支名] (执行merge命令)
- 解决冲突:
- 冲突的表现:
- 冲突的解决:
- 【第一步】编辑文件,删除特殊符号
- 【第二步】把文件修改到满意的程度,保存退出
- 【第三步】git add [文件名]
- 【第三步】git commit -m "日志信息"
3.2 远程库操作
3.2.1 GitHub
1. 账号信息:GitHub首页就是注册页面
2.创建远程库:New repository
3. 创建远程库地址别名
git remote -v 查看当前所有远程地址别名
git remote add [别名 origin] [远程地址]
4.推送
git push [别名] [分支名] (eg: git push origin master)
5.克隆
git clone [远程地址]
克隆效果:
完整的把远程库下载到本地
创建origin远程地址别名 (git remote -v 查看远程库别名)
初始化本地库(即:git init)
6.团队成员邀请(邀请用户才能提交)
settings ——> manage access ——> Invite a collaborator ——> 输入Github账号
邀请者 把 邀请链接 发送给 被邀请者, 被邀请者登录自己的GitHub账号,访问邀请链接。
然后点击接受 再执行推送(git push origin master)
7.拉取
pull = fetch + merge
git fetch [远程库地址别名(origin)] [远程分支名(master)] // 抓取下来
git checkout origin/master //切换到链接地址的master (可查看抓取下来的内容
git merge [远程库地址别名(origin)] [远程分支名(master)] //合并
git pull [远程库地址别名(origin)] [远程分支名(master)] // 等于上面的步骤
8.解决冲突
如果不是基于GitHub远程库的最新版所做的修改,在推送(push)之前必须先进行拉取(pull)操作
拉取下来后如果进入冲突状态,则按照 “分支冲突解决” 操作解决即可
9.跨团队协作
1)先复制当前库地址,发送给第三方,然后由第三方登录访问这个地址,然后fork
2)第三方进行本地修改,然后推送到远程(git push origin master)
3)第三方在远程库中选择 Pull Request ——> New pull request ——> Create pull request
4)可进行对话
5)审核代码
6)合并代码(回到对话 conversation 进行操作)
Merge pull request (合并)——> Confirm merge(填写本次操作的日志信息)
操作完成后 远程库 就有了合并的内容, 然后将远程库修改拉取到本地
本文基于 尚硅谷 Git&GitHub 视频记录笔记,如有错误还请提出,将进行更改。
原视频链接:
更多推荐
所有评论(0)