资料均来自网络整理,若有侵权,请联系删除。 此文章主要为B站git教程视频笔记整理
一、git
(一)、git介绍
-
git是一款分布式版本控制工具(软件) -
发展历程 ① 文件复制 ② 本地版本控制 ③ 集中式版本控制(SVN) ④ 分布式版本控制(git)
(二)、安装和配置
Ⅰ、安装
-
说明:只能在本地进行安装,且版本控制只在本地,中心是在仓库 -
从git官网进行下载安装 git官网
Ⅱ、配置
-
三种个人信息配置方式 ①当前项目配置(.git/config)
②全局配置(~/.gitconfig)
-
说明:是在用户名所在(~/.gitconfig),配置好后对所有git项目都通用 -
配置指令(将上面的配置指令中的local改为global就行) git config --global user.name 'name'
git config --global user.email 'xxx@xx.com'
-
进入编辑指令:进入对应目录编辑文件即可
vim ~/.g
vim ~/.gitconfig
③系统配置(etc/.gitconfig)
Ⅲ、应用场景
git config --local user.name 'name'
git config --local user.email 'xxx@xx.com'
git config --local merge.tool bc3
git config --local mergetool.path '安装路径'
git config --local mergetool.keepBackup false
git remote add origin 地址
Ⅳ、指令小结
git config --local user.name 'name'
git config --local user.email 'xxx@xx.com'
git config --global user.name 'name'
git config --global user.email 'xxx@xx.com'
git config --system user.name 'name'
git config --system user.email 'xxx@xx.com'
vim .
vim .git/config
vim ~/.g
vim ~/.gitconfig
(三)、gitignore忽略文件设置
-
说明:让git不再管理名单里面的某些文件,支持正则表达式。可以忽略管理文件夹和自身,也可以加“!”表示要管理的文件或文件夹 -
例子:
vim .gitignore
*.h
!a.h
.gitignore
files/
*.py[a|c|d]
-
github提供了各种语言的gitignore文件,拷贝到本地文件即可 github提供的gitignore参考
二、git管理
(一)、git简单管理流程
-
流程:进入所要管理的文件夹->进行指令初始化->进行管理->生成版本 -
所需要用到的指令 git init
git status
git tag -a v1 -m "标签信息"
git log
(二)、git三大区和转化
Ⅰ、三大分区
-
git分为三大区域:工作区、暂存区、版本库
- 工作区又分为两个部分:已经管理的、新增或修改的(红色)
- 暂存区(绿色):数据缓冲作用
- 版本库(无色)
-
操作过程中
- 先由工作区提交到暂存区(将文件管理起来)——
a
d
d
add
add 指令(变成绿色)
- 确定后,由暂存区提交到版本库(增加版本信息)——
c
o
m
m
i
t
commit
commit 指令
-
三大分区示意图
Ⅱ、各分区转化
-
工作区回退 git checkout - - 文件名.后缀名 -
由暂存区恢复到工作区 git reset HEAD 文件名.后缀名 -
版本回滚常用指令 git reset - - hard +(commit后面数值,版本号——哈希值)
git reflog
-
等等
(三)、指令小结
git init
git add
git commit -m '描述信息'
git log
git reflog
git reset --hard 版本号
git checkout -- 文件名
git reset HEAD 文件名
三、分支
(一)、分支作用
-
作用:便于同一项目,不同版本同时开发,避免代码产生分歧。 -
意义:
- 不同的任务组在不同的分支上开发,互不影响
- 比如说,需要向项目中添加一个新功能,一般的团队都不会直接在主分支上修改,都会新建一个分支,在上面更改代码。这样做的好处就是保证主线代码的完整性和可用性,也就是说,主线上都是稳定的代码,可以直接拿来发布的。
-
经常会使用的分支
(二)、分支合并
- 合并过程:先切换到要合并到的分支,再使用merge指令进行合并,若有需要可以删除不要分支
git checkout 分支名
git merge 分支名
git branch -d 分支名
-
一般工作流
-
例子示意图
(三)、常用指令小结
git branch
git branch 分支名
git checkout 分支名
git merge 分支名
git branch -d 分支名
四、远程仓库(以github为例)
(一)、github介绍
-
github是一个代码托管平台; -
gitlab是一个软件,可以自己搭建一个仓库
(二)、基于github做代码托管
Ⅰ、托管准备
- 准备:
Ⅱ、代码托管
-
新项目代码推送:在github创建仓库后,在本地进行代码推送指令 git init
git add README.md
git commit -m "fist commit"
git remote add origin https://github.com/XXXX/仓库名.git
git push -u origin master
-
从github下载代码
- 指令:
git?clone?仓库地址
\text{git clone 仓库地址}
git?clone?仓库地址 ;(内部己实现
git?remote?add?origin?远程仓库地址
\text{git remote add origin 远程仓库地址}
git?remote?add?origin?远程仓库地址)
- 所有代码和分支都拿下来了,可以通过
c
h
e
c
k
o
u
t
checkout
checkout 直接切换分支
(三)、指令小结
git init
git add README.md
git commit -m "fist commit"
git remote add origin https://github.com/XXXX/仓库名.git
git push -u origin master
git clone 仓库地址
git push origin 分支名
git pull origin 分支名
git pull origin(地址别名) 分支名=git fetch origin 分支名+ git merge origin/分支名
五、rebase应用
(一)、记录合并
-
作用:使git记录变的更加简洁 -
第一种应用方式:将多个记录整合成一个记录。多用于本地仓库记录合并,不适合己放远程仓库的版本。 注意:合并记录时,不要和提交push到远程仓库记录进行合并 -
指令:
git rebase -i 版本号
git rebase -i HEAD~n
-
合并过程的注意事项
- 编辑过程中,采用vim编辑器
- 将“pick”改为“s”。“s”的含义为:将所在版本向上一个版本进行合并
- 进行保存退出:先按esc键,再输入英文:,最后wq回车保存(w 是保存,q 是退出vim)
- 写合并后版本的提交信息,然后保存退出
(二)、分支合并(变基)
-
说明:可以将分支合并成一条线 -
所用指令 git checkout 分支名
git rebase 分支名
git merge 分支名
-
操作流程例子:
- 此时处于master分支,先切回dev分支
- 然后执行rebase指令(变基:相当于把dev分支变成基本的枝干),类似于把master分支拿下来到dev分支,变成一条枝干
- 最后切回master分支,再使用merge指令。把dev分支合并到master分支。最后会变成一条线
-
查看记录(图像显示指令)
git rebase 分支名 //将指定分支合并到所处分支
git log --graph //记录图像形显示
git log --graph --pretty=format:"%h %s" //简洁形记录图像显示,只显示版本号(哈希值)和版本信息(注释信息)
(三)、拉取代码分支合并
-
说明:从远程仓库拉取最近版本与本地版本合并时会产生分叉 -
所用到的指令
git fetch origin 分支名
git rebase origin/分支名
git add .
git commit -m 'xxxx'
git rebase --continue
(四)、指令小结
git rebase -i 版本号
git rebase -i HEAD~n
git checkout 分支名
git rebase 分支名
git merge 分支名
git log --graph
git log --graph --pretty=format:"%h %s"
git fetch origin 分支名
git rebase origin/分支名
git add .
git commit -m 'xxxx'
git rebase --continue
六、多人协同开发(以github代码为例)
(一)、工作流思路
- 从master主分支分出dev,然后每个人再建立自己对应的分支,在自己所在的分支进行编写代码;完成后再进行测试,测试完成后再合并到master分支
(二)、开发流程
-
开发流程 -
在github中多人协同开发:
- 先建立一个组织,并邀请成员设置权限
- 再创建仓库,由leader创建不同分支用于不同功能开发
- 开发完成后,提交review(pull request)
- 然后测试,测试通过后再合并到release(预发版本)中
- 最后再合并到master分支(主分支),进行上线
(三)、任务管理
- isses:文档及任务管理
- 提交问题(可以设置被提问的人,打问题标签)
- 可以查看状态和指派人信息
- wiki项目文档
(四)、指令小结
git tag -a v1 -m "标签信息"
git push origin - -tags
git clone -b v1 地址
git checkout -b dev
git push origin dev
七、给开发源贡献代码
-
fork源代码 将别人源代码拷贝到自己的github仓库 -
给源代码作者提交 申请(pull request)
八、学习参考资料
-
B站视频教程 git实战课程 -
Git merge 和rebase的区别 Git merge 和rebase的区别 -
Git知识总览(一) 从 git clone 和 git status 谈起 - 青玉伏案 - 博客园 Git知识总览(一) -
Git知识总览(二) git常用命令概览 - 青玉伏案 - 博客园 Git知识总览(二) -
Git知识总览(三) 分支的创建、删除、切换、合并以及冲突解决 - 青玉伏案 - 博客园 Git知识总览(三) -
Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作 - 青玉伏案 - 博客园 Git知识总览(四) -
Git知识总览(五) Git中的merge、rebase、cherry-pick以及交互式rebase - 青玉伏案 - 博客园 Git知识总览(五) -
git merge实际流程 git merge实际流程 -
git rebase实际流程 git rebase实际流程
|