git 快速上手请看这篇博客 Git 快速上手
1. 什么是 Git
Git 是如今最主流的一个版本控制器,而且是分布式版本控制体系,可以控制电脑上全部格式的文档
版本控制器:记载每次修改以及版本迭代的管理体系
- 对于文本文件,可以记载每次对这个文件的内容举行了怎样的修改
- 对于二进制文件,具体内容举行了怎样的修改,他没法管理,但可以知道文件巨细等方面的变革
2. 安装
常用下令
- windows 安装
下载安装包直接安装即可,在这里下载
安装过程中除了安装路径须要修改之外,其他都用默认的即可
要用 Git 来管理文件,必须将文件放在 Git 堆栈中,只有堆栈中的文件才会被 Git 管理
3. 创建当地堆栈
此下令实行乐成之后会在当前目次中天生一个 .git 潜伏目次(版本库),用来追踪管理堆栈,注意不要手动修改这个目次中的文件
- 设置当地堆栈的 name 和 email
全局设置的添加和删除须要加上 --global
- git config user.name "ly"
- git config user.email "361@163.com"
复制代码
- 查察刚才的设置
- 删除某一项设置
- git config --unset user.name
复制代码 4. 使用 Git 管理
工作区:并未被 Git 管理
暂存区(stage,/index):临时存放工作区中修改的内容(git 对象的索引)
objects 对象库:修改的工作区内容会写入对象库中一个新的 git 对象中,通过对这些 git 对象的管理维护便可实现对文件的版本管理,故每次 Add 使用都会在版本库中新增一个 git 对象
HEAD:指针,指向某个分支,如 master 分支,存储的也是 git 对象的索引
假如只是单纯将文件置于 mystore 目次下(工作区),Git 是不会举行管理的,须要举行 Add 以及 Commit 使用将要管理的内容置于版本库中之后才会被 Git 管理
4.1 将工作区中的文件使用 Git 举行管理
4.1.1 Add
将工作区中全部的修改内容添加到版本库的暂存区中
- git add .
- git add 指定某个要添加的修改文件,多个文件用空格分隔
复制代码 . 表现全部修改的内容
4.1.2 Commit
将暂存区中的目次树写入 HEAD 指向的相应分支下,即将暂存区中的内容提交到相应分支下
颠末 commit 使用之后才算真正意义上写入到了版本库
- git commit -m "这里对本次提交的内容进行描述,如:普通用户提交个人信息功能完成"
复制代码 每次提交都会有一个 commit id,可以在 git 中看到
- git log
- git log --pretty=oneline # 每次提交打印一行
复制代码 refs/head/master 中存放的是近来一次提交的 commit id
commit id:是一个索引,指向一个 git 对象,前两位表现 objects 中的目次名,之后的内容表现目次名中的文件名
查察 objects 中某个文件:git cat-file -p commit-id
注意:Git 管理的不是文件,而是文件的修改
- 查察堆栈状态
查察从前次提交到如今是否对文件举行过修改,暂存区是否尚有修改未提交,工作区是否尚有修改未添加到暂存区。但不能看到对文件举行了怎样的修改
- 查察暂存区和工作区差别
- 查察版本库和工作区的差别
- 查察某次提交的代码修改
4.2 版本回退
本质回退的是版本库中的内容
- git reset [--soft | --mixed | --hard] [HEAD]
复制代码
- –soft:只回退版本库中的内容
- –mixed(默认选项):版本库和暂存区中的内容都举行回退
- –hard:工作区、暂存区、版本库中的内容都举行回退
版本库中维护了多个 git 对象,版本回退本质上是将 HEAD -> master 的指向举行了改变,原来指向近来一次修改的 git 对象,回退到上一个提交,就只须要将 master 指向前一个 提交的 git 对象即可
4.3 取消修改
对工作区中的文件举行修改之后想要取消,将工作区的修改回退到近来一次 add 或 commit 之后的状态
分别处于一下状态时,怎样回退
工作区暂存区版本库使用√git checkout – filename√√1. git reset --hard HEAD^
2. git reset --mixed HEAD; git checkout – filename√√√git reset --hard HEAD^(条件是代码未举行 push)
- 删除文件
会直接在工作区和暂存区中都删撤除,只须要再实行 commit 即可删除
4.4 和长途堆栈创建关联
- git remote add origin 远程仓库链接
复制代码 5. 分支管理
5.1 为什么要分支
以软件开辟为例,通常环境下一个产物最少有一个生产环境和开辟环境,通常在开辟环境中颠末测试没有标题后将步伐摆设到生产环境,而不会直接在生产环境乱搞,由于一旦生产环境出现标题,将会造成严肃丧失。
我们可以通太过支,将 master 分支(稳固代码)作为生产环境的代码,在 dev 分支举行新功能的开辟,颠末测试没有标题之后再归并到 master 分支,如许对 master 分支代码的影响就会低沉
固然,也可以通太过支来更好的举行协同开辟,以 master 作为主分支,多人协同开辟时,每个人都在本身的分支上举行开辟,测试没有标题之后再归并到 master 分支上
5.2 分支管理
- 查察当前堆栈有哪些分支
HEAD 指向的分支就是工作分支,工作分支名字前面有 * 标记
- 创建分支
乐成创建分支之后,当前分支也指向近来一次提交的 git 对象
- 切换工作分支
git checkout -b 新分支名 可同时实现创建新分支和切换到新分支的使用
- 归并分支
在 master 分支中归并 abc 分支
当归并分支有辩论时,须要手动办理辩论,并再次提交(Add,Commit)(no fast-forward)
- no ff:可以在提交分支中显着看到归并使用
- ff:不能区分出来是 maser 提交的照旧分支归并的
可以使用 git merge --no-ff -m "归并分支" 分支名 来实现,如许在分支图中就可以清晰的辨别
- 删除分支
若在分支未被归并之前就要删除分支,则这里的 d 须要改为大写,表现强行删除
- 可视化分支及提交记载
- git log --graph --abbrev-commit
复制代码 5.3 bug 分支
当 master 分付出现 bug 时,不能直接在 master 分支上举行修改,由于有大概会由于此次修改而引入其他 bug
假如在 dev 分支上开辟的过程中,发现 master 分支存在 bug,一样平常不会直接在 dev 分支上举行 bug 修复,而是基于 master 分支新建分支来专门处置惩罚这个 bug
- 在 dev 分支上的已被 git 管理而未举行 add 的修改内容,可以通过 git stash 来将工作区中的内容举行存储,否则切换到 master 分支中,也能看到在 dev 分支中对工作区中内容的修改。
- 基于 master 分支创建新分支举行 bug 修复,并将其归并到 master 分支,删除这个用于修复 bug 的分支
- 切换到 dev 分支,将存储区中的内容规复 git stash pop,继承举行开辟,然后提交
- 将 dev 分支归并 master 分支并测试,如许纵然归并有辩论,也不会影响 master 分支的代码,若归并之后有辩论,在 dev 分支上举行修改测试,办理标题之后再提交,然后归并到 master 上,就不消再 master 分支上再办理辩论了
6. 当地堆栈与长途堆栈的交互
6.1 克隆
- 克隆长途堆栈到当地
- HTTP 方式
直接克隆
- SSH 方式
SSH 黑白对称加密,须要将当地的公钥设置到 git 服务器上
起首在用户主目次查察是否有 .ssh 目次,如有,进入查察是否有 id_rsa、id_rsa.pub 这两个文件,如有,则直接将 id_rsa.pub 中的内容在 git 服务器上举行设置,即可通过 SSH 方式克隆堆栈。若没有这两个文件,则实行以下下令天生 SSH 密钥文件,然后在 git 服务器上设置。设置完成后即可举行克隆
- ssh-keygen -t rsa -C "邮箱地址"
复制代码
- 查察长途堆栈
6.2 推送
将当地的修改推送到长途堆栈
- git push origin 本地分支:远程分支
复制代码 push 使用是长途分支和当地分支之间的交互,要让两个分支创建链接,才华推送乐成。克隆时,git 会自动对 master 分支创建链接
6.3 拉取
长途堆栈的代码大概被其他用户修改了,须要将长途堆栈代码拉取到当地
- git pull origin 远程分支:本地分支
复制代码 这里本质上是两个使用,1. 拉取;2. 归并
- 拉取分支内的内容,须要创建毗连,大概指定分支
- 拉取堆栈内容,无需创建毗连或指定分支
6.4 .gitignore 文件
有的文件不须要被 git 追踪管理,可以将其添加到 .gitignore 文件中(存在于工作区根目次),在举行 add、commit、push 等使用时,就会忽略这些文件。
- # 忽略 .idea 文件以及以 .out 结尾的文件
- .idea
- *.out
- # 不忽略 today.out 文件
- !today.out
复制代码
- 假如有的文件添加到了 .gitignore 中,又想上传上去,则可使用以下下令欺凌上传
当 .ignore 文件特殊多,有的时间上传文件,被忽略,已经不知道哪一项设置导致的,可以使用 git check-ignore -v 文件名 来得知
给下令设置别名
- git config --global alias.con config
复制代码 7. 标签管理
通过标签,来对某个 commit id 举行标记,相称于 commit id 的别名,可以通过标签来标记紧张的版本以及对 commit id 的语义化
在 .git 目次中管理了 tags
- 为近来一次提交打标签
- 查察全部标签
- 为之前的某次提交打标签
- 打标签带上形貌信息
- git tag
- -a 标署名 -m "形貌信息" commitid
复制代码 - 查察某个标签
- 删除标签
要删除长途堆栈的标签,须要在当地删除之后,举行 push
- 推送当地标签到长途堆栈
- 推送全部标签
8. 其他
- 创建当地分支并和长途分支创建链接
- git checkout -b 分支名 origin/分支名
复制代码- git branch
- –-set-upstream-to=长途堆栈名/长途分支名 当地分支名
复制代码 - 查察链接
8.1 同一分支上多人协作开辟
- 开辟完毕后举行 push
- 如有辩论,无法 push,则先辈行 pull
- 当地办理辩论,重新提交并 push
- 归并分支,删除开辟分支
8.2 多人多分支协作
让某个功能私有某一个分支
8.3 归并分支
分支的归并可以在当地举行也可以在长途堆栈举行(PR)
PR:开辟职员在完成某个功能的开辟之后,填写 PR 申请单,向管理员发起分支归并的申请,由管理员考核并决定是否要归并,管理员考核通过之后即可自动在长途堆栈归并
8.4 环境隔离
为了使终极发布上线的代码的更稳固,须要摆设稳固的代码到服务器上,而不会直接在用户直接访问到的服务器上举行开辟和测试。因此须要有多个环境来分别举行开辟、测试、摆设等。也就有了开辟环境、测试环境、预发布环境、灰度环境、生产环境等。
8.5 Git Flow 模子
Git Flow 是一个非经常见的分支模子。
分支名称实用环境表明master主分支生产环境develop开辟分支开辟环境release预发布分支预发布 / 测试环境feature需求开辟分支当地hotfix告急修复分支当地8.5.1 master 分支
只读。用于摆设生产环境,一样平常由归并 release 分支得到。全部的 master 分支的推送都要打标签记载,便于追溯,且 master 分支不能删除。
8.5.2 feature 分支
基于 develop 分支创建,用于新功能或新特性的开辟,开辟完成之后,将 feature 分支归并到 develop 分支,后删除。
- 定名规则:feature/user_createtime_feature(功能形貌)
8.5.3 develop 分支
基于 master 分支创建,只读,记载开辟提交,始终保持最新完成以及 bug 修复后的代码
8.5.4 release 分支
预发布分支,在 feature 分支归并到 develop 分支之后,基于 develop 分支创建 用于提交给测试职员举行测试。若测试有标题,则须要开辟者在 develop 分支上看看是否存在标题,然后在 feature 分支上举行修复。release 分支属于临时分支,代码上线后可删除
- 定名规则:release/version_publishtime
8.5.5 hotfix 分支
用于对 master 分支的 bug 举行修复(告急修复),基于 master 分支创建,然后修复 bug,之后将该分支归并到 master 分支以及 develop 分支
8.6 git 干系图标无法表现的标题
在注册表的以下目次中将 Max Cached Icons 改为 2000,并将 ShellIconOverlayIdentifiers 目次下和 git 干系的目次通过缩进排到最前面即可
HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\Explorer\
git pull 与 git push 下令 是否和所在分支干系
试。若测试有标题,则须要开辟者在 develop 分支上看看是否存在标题,然后在 feature 分支上举行修复。release 分支属于临时分支,代码上线后可删除
- 定名规则:release/version_publishtime
8.5.5 hotfix 分支
用于对 master 分支的 bug 举行修复(告急修复),基于 master 分支创建,然后修复 bug,之后将该分支归并到 master 分支以及 develop 分支
8.6 git 干系图标无法表现的标题
在注册表的以下目次中将 Max Cached Icons 改为 2000,并将 ShellIconOverlayIdentifiers 目次下和 git 干系的目次通过缩进排到最前面即可
HKEY_LOCAL_MACHINE\Software\Microsoft\windows\CurrentVersion\Explorer\
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |