赞
踩
Git官方在线中文文档:
Git - Bookhttps://git-scm.com/book/zh/v2权威的资料来自官方,以下为个人整理和图文形式呈现,便于理解。
名称 | 代码版块控制管理工具 | 是否收费 | 搭建环境 | 联网/ |
github | git | 公有仓库免费 私有仓库收费(鼓励代码共享) | 企业私有需要搭建 | 可离线(分布式) |
gitee | git | 个人免费 企业免费 按团队人数、仓库容量收费 | 否 | 可离线(分布式) |
gitlab | git | 私有仓库免费 | 是 | 可离线(分布式) |
svn | Subversion/TortoiseSvn | 免费 | 是 | 是(集中式)那得有个SVN服务器 |
名词 | 说明 | 举例 |
仓库(Repository) | 产品代码仓库,保存了所有文件的修改历史。 | 开发者A、B、C、D代码就相当于不同的货物不管是成品还是半成品 往这个仓库送 |
本地仓库(local Repository) | 本地仓库,分布式特点,这样本地就能提交版本,进行代码版本控制,也就是离线状态也能用 | 开发者A、B、C、D自己的小仓库,即便通往仓库(Repository)的断了,也能保证货物的生产记录 |
暂存区(Staging area) | 暂存区是暂存工作区的文件变化。 | 见下方【git图解】 |
索引(Index) | 索引是暂存区的另一种术语,也是暂存区概念 | |
签入(Checkin) | 将新版本复制回仓库 | |
签出(Checkout) | 从仓库中将文件的最新修订版本复制到工作区 简单来说就是版本库的覆盖本地文件,本地的修改会丢,慎用!! | 场景: ②开发者A把文件手动删除/git rm删了,想还原回来 |
提交(Commit) | 将暂存区的文件提交到仓库 | 见下方【git图解】 |
冲突(Conflict) | 多人对同一文件的同一部分进行了修改,导致了冲突的发生。 | 开发者A、B、C、D做了修改了同一个,导致了冲突的发生。 |
合并(Merge) | 将指定分支合并到当前分支 | |
头(HEAD) | 指向当前选择的分支。 | |
修订(Revision) | 表示代码的一个版本状态。Git通过用SHA1 hash算法表示的ID来标识不同的版本。 | |
标记(Tags) | 标记某个分支的某一个版本,方便检索和查看。 | |
推送(Push) | 向远程仓库推送当前分支 | |
拉取(Pull) | 从远程仓库拉取文件,并合并入当前分支。 | 见下方【git图解】这两个尿性相同 |
拷贝(clone) | 复制远程仓库到本地 | |
master(默认分支) | 供所有团队成员修改,按我的理解,它是“主干”更贴切 可设置由谁来推送,谁来合并规则,删除规则,则表示谁都可以操作 默认为保护分支:自定义保护策略,默认仓库管理员才能管理(推送)被保护的分支 | 产品底图(相当于最终稳定呈现版) |
常规分支 | 常规分支可通过gitee管理后台可视化创建,可以通过git命令创建 就是团队成员用的分支,如果不创建,那就是默认master分支 仓库成员(开发者权限及以上)可推送分支 | 基于底图画出来的草稿,开发者A、B、C、D都可以可以画 |
只读分支 | 任何人都无法推送代码(包括管理员和所有者),需要推送代码时应设为“常规”或“保护”分支 |
稍微瞄一眼这图,几乎git常用的命令都基于这个图!!!
为了便于理解,什么时候用clone、add、commit、pull、push、reset、fetch、diff 这个图就有思路
当然,
svn --help
git --help 命令都能看到
svn命令 | git命令 |
仓库和项目先后创建都没关系,都可以相互关联上
成功后,仓库信息如下:
仓库和项目先后创建都没关系,都可以相互关联上
Windows安装方式有两种:
①手动安装,官网下载对应的版本,执行安装
②【社区维护】的 Chocolatey 自动安装
官方地址:
Git - Downloading Packagehttps://git-scm.com/download/win
MacOS安装方式也有两种:
①命令行开发者工具(Xcode Command Line Tools)在Terminal里首次运行git命令即可。
②【官方维护】的macOS Git 安装
官方地址:
Git - Downloading Packagehttps://git-scm.com/download/mac
本文以Windows安装git为例
安装到底,验证成功如下图:
gitee首页→代码 → ··· → 功能设置 → 基础信息
或者:
gitee首页→代码 → 仓库 → 任意一个仓库 → 概览
如demo-vue-master
进目录下右击,如下图:
第一次需全局配置,第二次就不需要这一步(毕竟我这用户都登录了git)
- git config --global user.name "Gitee账号的姓名"
- git config --global user.email "Gitee账号的邮箱"
初始化
git init
如下图:如果没有说明是.开头的文件被操作系统隐藏了,可以用ls -ah
命令就可以看到
测试下新建测试文件,并提交gitee仓库如下:
touch README.md
题外话:这个命令为啥没有git 呢,因为是linux命令的创建文件(好歹git是Linux开发用于管理Linux系统开源代码管理版本的初衷,linux用了2周开发了git,完善至今)so,git工具支持linux的命令。最后附图《linux命令附图》
效果如下图:
把README.md提交至暂存区
- git add README.md
- git commit -m "任意备注,不写也行,必须得引号 这句才把暂存的版本提交到远程gitee创的仓库"
- git remote add origin https://gitee.com/gitee自动生成的名称/repositoryname.git #本地关联远程仓库,#后的不要写
- git push -u origin master #推送到默认分支master,可新加分支
结合“git、svn图解”git add 只是到暂存区(表示加入版块控制了,但还没提交到仓库)
需要git commit -m ""
因为是add 和 commit 分两步,也可以这样用:
- git add file1.htm
- git add file2.htm file3.htm
- git commit -m '提交了三个文件'
本地操作如下图:
验证gitee仓库有没文件:
gitee首页→右侧 → 添加人员 (这个是先加人员)
gitee首页→代码 → ··· → 仓库列表 功能设置 → 成员管理(选择上面加入的人员,加入到这个项目的仓库代码同步工作)
这个会保存在
- git config --global user.name "你的名字"
- git config --global user.email "你的邮箱"
查看git配置
git config --list
git config 有比较多的属性,如颜色配置、忽略文件设置、强制添加被忽略文件、添加例外规则、全局配置 --global,用户配置等
第一次拉取:
- git init #第一次用初始化,后续不用
- git clone 仓库地址 #第一次要这个
- git pull 仓库地址 master #指定仓库的哪一个分支,默认master
或者用第一次拉取:
- git init #第一次用初始化,后续不用
- git remote add origin https://....
- git pull origin master #此处拉取得是master分支的代码
很多帖子用clone,原理是 首次用git 需登录、 初始化(init)、用git把本地仓库连接远程仓库、然后拉代码或提交代码的操作
后面的每次拉取就是:
git pull
- git add 文件名 #若添加当前目录的全部文件 git add .
- git commit -m "备注"
-
git log #这个如果很多条,看这累,可以加参数 --pretty=oneline
git diff 文件名
git reset --hard HEAD^ #HEAD当前版本 上一个版本HEAD^ 上上个版本 HEAD^^ 上1000个版本 HEAD~1000
- git fetch --all #拉到本地仓库
-
- git reset --hard origin/master #本地仓库拉到本地
-
- git pull #拉
分支特性,分支的创建和切换瞬间完成。是git在各版本控制工具脱颖而出。
分支的创建和合并,只是主分支master和其他分支指针变化,这个就是和引用数据类型类似的概念,没有创建销毁再创建的弯弯绕绕,就是指向不同就达到效果了。
场景:
①单人开发或者多人开发某些功能,使用分支,用完即删,安全便捷。创建分支开发和使用master开发效果是一样的,git建议使用创建分支开发,更安全。
②修bug,如开发这A开发的分支是develop,要改个bug,手头上的功能做了一半,临时紧急要修个bug,需要等手头上功能做完或者隐藏已做的功能,才能把bug改了提交develop的工作(svn就有这毛病)。
毕竟:master是稳定的,用于最终发布版本的,正常不能在这个上面干活(不正常使用的才在这里直接干活 O(∩_∩)O哈哈~)
8.1.1创建分支
git branch develop #开发分支名:develop
8.1.2切换分支
git checkout develop #这个是覆盖本地 切换,见头部《git名词术语解释》中介绍
!!!覆盖本地修改,如果是开发一半的功能,不能用checkout,而是用switch切换分支
以上创建切换可合并如下:(这里新建的肯定还没代码,用checkout)
git checkout -b develop # -b 表示创建branch 分支名称为develop,checkout检出
效果图如下:*为当前分支
①首先看下
在develop分支工作目录 新建提交了一个文件,版本库是有了新记录
②切回master分支查看,git checkout master
合并分支命令:
git merge develop #把代码成果develop 合并到当前master分支中
如下图:
8.2中,develop分支成果已拿到master,develop可以删除
删除分支命令:
git branch -d develop
强制删除分支:(未合并,用这个)
git branch -D develop
效果如下,分支只剩下master了
完整步骤:
①当前开发一半的功能在develop分支上
②修临时紧急bug,那需要把develop一半的功能隐藏(git stash)
③切换需要修复的分支,如master (git check master)
④创建bug分支,同分支创建,修改某文件后git add、git commit
⑤删除bug分支 git
⑥切回develop继续做功能 git switch develop(这里不用checkout 切换,不然一半的功能就丢了)
一周可能会不定期开发几个新的小功能,又不想把分支搞乱,可以用这个分支
完整步骤:
①创建并切换分支 git switch -c feature1
②提交 分分钟写好了demo.txt,git add demo.txt 、git commit -m ‘搞定了’
③切回develop,git switch develop
④合并
⑤删除分支
开发者A和开发者B同时修改同一个文件,同一个行代码分别提交,合并基本会冲突
合并如下图:
本地打开文件/或者git工具用linux命令打开文件/瞅瞅:
冲突解决 !(不发布也行)
标签官方是指用于里程碑类型有重要意义的版本,发布稳定版,如v1.0,v2.0
8.7.1 标签创建
- git tag #标签查看
- git tag v1.0 #轻量标签 创建标签名为v1.0
- git tag -l "v1*" #查看版本含‘v1’的所以标签,如v1.0,v1.1.1等
- git tag -a v1.2 -m "version 1.2" #有备注的标签
- git show v1.0 #查看对应标签对应的提交信息
- git tag -a v1.3 9fceb02 #给提交的历史版本中的一个打标签,9fceb02是日志 缩略形式出来的
- git tag -d v1.0 #删除v1.0的标签
- git push origin v1.0 #共享标签,就是本地和远程共享,也就是默认设置的是本地,提交标签的设置
- git push origin --tags #提交本地所有标签到远程
- git push origin --delete v1.0 #删除远程标签
- git checkout v1.0 #检出标签v1.0所对应的提交版本
-
-
-
-
支持在git工具中使用linux命令
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。