计算机基础(二)——Git的底层原理,reverse和reset的区别,rebase作用

5 篇文章 0 订阅
订阅专栏

目录

1、分区

2、对象

3、对象实例演示

4、branch和tag

5、reset和reverse区别

6、rebase作用

7、rebase再探究竟,rebase和merge区别


这一篇其实不属于计算机基础的,但是随着大家平时工作还有开源一些项目的版本控制的使用,使用叫多的git。
回过头来,有时在思考reverse和rebase区别,回归到底层的一些原理的时候,就有茅塞顿开的感觉了。

1、分区

首先Git有分三个区,工作区,暂存区和版本库。

2、对象

Git当中一共有3种主要的对象:blob,tree,commit


git add 多一个blob文件,repository的一个文件,内容为文件内容
git add 再多一个blob文件
git commit后 会有两个tree 一个commit
tree,存储blob对象和子tree对象,这类型的对象在Git里面代表的就是一个文件夹,而这个对象的内容就是面向它所包含的文件夹和文件的指针。
commit对象,包含了一个面向根目录tree对象的指针,而且还包含了committer的个人信息还有commit的注释。

三个对象之间关系。总结就是
commit 指向 tree 指向 tree 或者 blob

3、对象实例演示

查看对象内容可以参考官方文档, Git - git-cat-file Documentation
git cat-file --batch-check --batch-all-objects
the SHA-1, type, and size of each object is printed on stdout
sha1跟md5类似是一个摘要值,然后就是对象类型,大小
 

#查看git版本
C:\Users>git --version
git version 2.20.1.windows.1

#创建测试目录
D:\>mkdir gittest

D:\>cd gittest

#git 初始化
D:\gittest>git init
Initialized empty Git repository in D:/gittest/.git/

#创建文件index.txt
D:\gittest>echo "version 1" > index.txt

# index.txt加入暂存区
D:\gittest>git add index.txt

# 查看所有对象内容
D:\gittest> git cat-file --batch-check --batch-all-objects
6c58b76a52188643965f3a6704166e8e0424b7fe blob 13

# 查询sha-1对应的文件内容,该对象对应的内容就是index.txt内容
D:\gittest>git cat-file -p 6c58b76a52188643965f3a6704166e8e0424b7fe
"version 1"

# 创建文件index2.txt
D:\gittest>echo "version 2" > index2.txt
# index2.txt加入暂存区
D:\gittest>git add index2.txt
# 查看所有对象内容
D:\gittest> git cat-file --batch-check --batch-all-objects
6c58b76a52188643965f3a6704166e8e0424b7fe blob 13
8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 blob 13

# 查询sha-1对应的文件内容,该对象对应的内容就是index2.txt内容
D:\gittest>git cat-file -p 8231f0fdc862f06b2bd7b7bfd2f42082d3086b71
"version 2"

#创建新文件夹
D:\gittest>mkdir dir

#创建新文件夹中的新文件
D:\gittest>echo "version 1, inside" > ./dir/inside.txt
 
# inside.txt加入暂存区
D:\gittest>git add ./dir/inside.txt

# 查看所有对象内容
D:\gittest> git cat-file --batch-check --batch-all-objects
6c58b76a52188643965f3a6704166e8e0424b7fe blob 13
8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 blob 13
bf97e71de76bcff2bd8aba44710aa5e665eacb99 blob 21

# 查询sha-1对应的文件内容,该对象对应的内容就是inside.txt内容
D:\gittest>git cat-file -p bf97e71de76bcff2bd8aba44710aa5e665eacb99
"version 1, inside"

#提交到本地仓库
D:\gittest>git commit


D:\gittest> git cat-file --batch-check --batch-all-objects
39bdea2300491cc90f47551887bfe9503cd4a9d9 tree 38
6c58b76a52188643965f3a6704166e8e0424b7fe blob 13
8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 blob 13
bf97e71de76bcff2bd8aba44710aa5e665eacb99 blob 21
d5c2b878425995af5ddc5202f7058a1ff372b3f3 tree 105



D:\gittest>git commit
[master (root-commit) 629a4cf] commit 1
 3 files changed, 3 insertions(+)
 create mode 100644 dir/inside.txt
 create mode 100644 index.txt
 create mode 100644 index2.txt

# 查看所有对象内容,commit之后多了两个tree和一个commit
D:\gittest> git cat-file --batch-check --batch-all-objects
39bdea2300491cc90f47551887bfe9503cd4a9d9 tree 38
629a4cf0fdb33390ad5774b10244512e3d400407 commit 169
6c58b76a52188643965f3a6704166e8e0424b7fe blob 13
8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 blob 13
bf97e71de76bcff2bd8aba44710aa5e665eacb99 blob 21
d5c2b878425995af5ddc5202f7058a1ff372b3f3 tree 105

#查看一个commit
D:\gittest>git cat-file -p 629a4cf0fdb33390ad5774b10244512e3d400407
tree d5c2b878425995af5ddc5202f7058a1ff372b3f3
author  iaiti<xx@qq.com> 1617247696 +0800
committer  iaiti<xx@qq.com> 1617247696 +0800

# 查看其中一个tree
D:\gittest>git cat-file -p d5c2b878425995af5ddc5202f7058a1ff372b3f3
040000 tree 39bdea2300491cc90f47551887bfe9503cd4a9d9    dir
100644 blob 6c58b76a52188643965f3a6704166e8e0424b7fe    index.txt
100644 blob 8231f0fdc862f06b2bd7b7bfd2f42082d3086b71    index2.txt


# 更改文件内容
D:\gittest>echo "version 2" > index.txt

D:\gittest>git add index.txt

D:\gittest>echo "version 1 new" > index.txt

D:\gittest>git add index.txt

D:\gittest> git cat-file --batch-check --batch-all-objects
0b596a83945ca790976a10bbf005262f1cefe4cc blob 17   		(version 1 new)
39bdea2300491cc90f47551887bfe9503cd4a9d9 tree 38   		(inside.txt)
629a4cf0fdb33390ad5774b10244512e3d400407 commit 169 	(commit)
6c58b76a52188643965f3a6704166e8e0424b7fe blob 13   		(version 1)
8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 blob 13   		(version 2)
bf97e71de76bcff2bd8aba44710aa5e665eacb99 blob 21   		(version 1, inside)
d5c2b878425995af5ddc5202f7058a1ff372b3f3 tree 105  		(dir index.txt  index2.txt)

D:\gittest>git cat-file -p 0b596a83945ca790976a10bbf005262f1cefe4cc
"version 1 new"


#提交第二次
D:\gittest>git cat-file -p beaeb2b94a88d6cf03c096f667859239065d1ba8
tree 4fca214cabbc6f8c6a7243f9ea780b66ee895993
parent 629a4cf0fdb33390ad5774b10244512e3d400407
author iaiti <xx@git.com> 1617247963 +0800 
committer iaiti <git@xx.com> 1617247963 +0800

Commit 2

多次更改和提交两次后,所有对象的对应关系

4、branch和tag

branch 其实就是一个指向某个commit的指针文件,一般被存放在./.git/refs/heads里面,所以branch只是跨commit而已,按照上图所指示出来的,指向的其实就是master分支
head指向最新commit
tag相当于是静态的 branch ,被存储在./.git/refs/tags里面的文件中。它并不跟随HEAD移动。通常用于标记一个特定的commit,例如某个版本的代码,以方便checkout。

5、reset和reverse区别

reset是记录重设,有三种模式

git reset 17cf9ea15f6c63ec04f232c5cd72e0c1b3f657fd
--hard  commit记录重设,但是如果远程仓库已经commit,可以使用git push --force
--mixed commit记录重设,工作区文件修改,暂存区的记录会重置,相当于没到git add阶段,相当于撤销add
--soft   commit记录重设,工作区文件修改和暂存区的记录都会保存

三种模式总结来说就是,相当于做了版本回退,并控制文件是否回退到暂存区前

而reverse,也是回退,但是不是重置commit,而是多出一条commit ,提醒其他的开发者或者公司同事,这里有恢复操作。可以
和reset对比结合看。

问题来了,reverse还有commit,reset的话中间的commit就不见了, 我要回滚怎么操作?

git reflog记录操作,回滚回之前重置的commit记录。

D:\gittest>git ls-files --stage
100644 bf97e71de76bcff2bd8aba44710aa5e665eacb99 0       dir/inside.txt
100644 0b596a83945ca790976a10bbf005262f1cefe4cc 0       index.txt
100644 8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 0       index2.txt
D:\gittest>
D:\gittest>echo "version test index" > index.txt
D:\gittest>
D:\gittest>git ls-files --stage
100644 bf97e71de76bcff2bd8aba44710aa5e665eacb99 0       dir/inside.txt
100644 0b596a83945ca790976a10bbf005262f1cefe4cc 0       index.txt
100644 8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 0       index2.txt

D:\gittest>git add index.txt

D:\gittest>git ls-files --stage
100644 bf97e71de76bcff2bd8aba44710aa5e665eacb99 0       dir/inside.txt
100644 be06e3be42f6a2955d61750c86646b7869177f47 0       index.txt
100644 8231f0fdc862f06b2bd7b7bfd2f42082d3086b71 0       index2.txt
D:\gittest>


D:\gittest>echo "version test index" > index.txt

D:\gittest>git add index.txt

git commit -m comit3

D:\gittest>git log
commit b3a0d90be0da1862b4c82fb6beafffaf4113148e (HEAD -> master)
Author: <E8><94><A1><E5><9D><A4><E6><89><BF> <xx.com>
Date:   Thu Apr 29 19:51:51 2021 +0800

    Revert "comit3"

    This reverts commit 6fccca25df481aa1d53ad60075bb37d5e87d8593.

commit 6fccca25df481aa1d53ad60075bb37d5e87d8593
Author: <E8><94><A1><E5><9D><A4><E6><89><BF> <xx.com>
Date:   Thu Apr 29 19:51:21 2021 +0800

    comit3

6、rebase作用

变基, Git - git-rebase Documentation 可以查看相关指令信息,

git rebase -i  [startpoint]  [endpoint] 给用户交互界面进行操作

挑选变基的commit

git rebase -i 674c40b

然后移除多余的commit信息,s的话是合并前面的提交

从这里可以看到,变基可以合并我前面提交无用的记录。让整个提交的历史更加的简洁,之前有网友举例,vue作者尤雨溪就有这样的处理。

rebase分支不要使用在公共分支上。

7、rebase再探究竟,rebase和merge区别

除了合并提交信息,让其更简洁外,是不是还有其他作用,都是合并,那和merge区别是什么,需要这样思考。

假如我有一条功能分支比较久没同步线上代码,或者主分支其实多人合作合并频繁的时候,按照平时的操作都是拉一条分支,然后将master merge到自己分支

结果是这样的


而变基能让自己的一条分支形成直线,不受其他的干扰。

总结来说,merge是当前开发分支领先于要合并的分支,那就merge过去,比如开发功能和测试完毕想合并到线上,就是用merge。

如果当前分支许久没拉下来,落后master的,就用rebase,就只把当前的内容合并到自己分支上,而不用理会是什么分支合并过来的。master主分支才需要查看谁合了什么上去。

Git 分支 5- 变基
u_my_heart的博客
08-14 929
电子书链接: 变基Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase。 在本节中我们将学习什么是“变基”,怎样使用“变基”,并将展示该操作的惊艳之处,以及指出在何种情况下你应避免使用它。 变基的基本操作 请回顾之前在 分支的合并 中的一个例子,你会看到开发任务分叉到两个不同分支,又各自提交了更新。 之前介绍过,整合分支最容易的方法是 merge 命令。 它会把两个分支的最新快照(C3 和 C4)以及者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的快照(并提交
gitgit操作命令和相关脚本
小鱼菜鸟的博客
07-22 697
目录 git clone git checkout git diff git add git pull --rebase git pull git fetch git reset gitstash git clean git cherry-pick git merge git log git tag git...
Gitrebase作用
LiZhen314的博客
06-01 2831
Gitrebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态。要搞清楚这个东西,要先看看版本库状态切换的两种情况: 我们知道,在某个分支上,我们可以通过git reset,实现将当前分支切换到本分支以前的任何一个版本状态,即所谓的“回溯”。即实现了本分支的“后悔药”。也即版本控制系统的初衷。 还有另一种情况,当我们的项目有多个分支的时候。我们除了在本地开发的时候可能会“回溯”外,也常常会将和自己并行开发的别人的分支修改添加到自 己本地来。这种情况下很常见。作为项.
Git恢复之前版本的两种方法reset、revert(图文详解)_git回退到某个版本
最新发布
2401_87299743的博客
09-21 1120
git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本、 版本三),突然发现版本不行(如:有bug),想要撤销版本,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本的东西。这个时候我们不需要text.txt这个文件了,那就是说不想要“add text.txt”那个版本的操作,那可以通过反做“add text.txt”这个版本来实现。
git rebase作用
lgz0921的博客
08-06 2449
rebase操作可以把本地未push的分叉提交历史整理成直线,就是说可以合并多次commit,这样我们在查看历史提交的变化时更容易。 什么是把提交历史整理成直线? 举一个例子:它就是ide里面的这个: 大家都懂吧~~~ 可以看出有交叉的地方,使用rebase可以整理成直线~~~ 我一般不用rebase~~~~哈哈哈~~~~,想使用的小伙伴可以了解一下哦~~ 如果大家看完本文后还是不理解rebase能干啥,请看廖雪峰的官方网站https://www.liaoxuefeng.com/wiki/8
git | rebase用法
Willian的博客屋
02-19 872
博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导): rebase 用法小结 rebasegit中是一个非常有魅力的命令,使用得当会极大提高自己的工作效率;相反,如果乱用,会给团队中其他人带来麻烦。它的作用简要概括为:可以对某一段线性提交历史进行编辑、删除、复制、粘贴;因此,合理使用rebase命令可以使我们的提交历史干净、简洁! 前提:不要通过rebase对任何已经提...
revert与reset
xue258521的博客
11-14 489
1、场景 错误的将不该和并的分支合并了上去   2、例 test为正在测试的新功能分支,操作人错误的将test分支合并到了主分支master,此时希望将test的分支提交回滚   3、策略 撤销此次的提交 reset 提交一次新的提交反向撤销本次提交 revert 4、问题 reset 可能因在发现之前,mater上已执行了多次的提交,如下所示: . . . commit1 c...
GITgit个人笔记
小鱼菜鸟的博客
07-22 743
GIT个人手册 版本 日期 修订内容 作者 V01 2019-06-25 初稿 备注: 使用中不断迭代完善,其他人使用中有其他总结的,可以补充。 目录 第一章说明 一.1.1GIT 中文手册 一.1.2git仓库说明(工作区、暂存区、本地仓、远程仓)1 一.1.3git仓库说明(工作区、暂存区、本地仓、远程仓)2...
Git 基础知识
一只IT小小鸟
07-19 924
概述 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。 Git 与 SVN 区别 GIT不仅仅是个版本控制系统,它也是个内容管...
git】创建仓库、克隆、拉取、上传、历史等常见操作集锦
qq_40940771的博客
03-22 1485
git add .
Git-2.21.0-64-bit.zip
10-22
Git-2.21.0-64 for windows Git 2.23 Release Notes ====================== Updates since v2.22 ------------------- Backward compatibility note * The "--base" option of "format-patch" computed the ...
Gitresetrebase命令,最透彻、最详细、最简单的教程,学习完对resetrebase清清楚楚明明白白
户伟伟的博客
08-15 1992
我们提交代码的时候不小心提交错了怎么办? 提交的message不小心漏掉了字母?提交的代码好像忘改了一个拼错的单词?提交了好几次了有点乱,能不能合在一起?master分支更新了,更我切出的时候不一样怎么办???诸如此类等等情况,我们的resetrebase闪亮登场~~人生不可以重来,但是commit可以。
Git恢复之前版本的两种方法reset、revert(图文详解)
zmjames2000 Just record
09-26 1190
方法一:git reset 原理: git reset作用是修改HEAD的位置,即将HEAD指向的位置改变为之前存在的某个版本,如下图所示,假设我们要回退到版本一: 适用场景: 如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法。 具体操作: 查看版本号: 可以使用命令“git log”查看: 使用“git reset --hard 目标版本号”命令将版本回...
高级 Git 指南:Git Stash、ResetRebase
Meta.Qing的博客
12-09 1601
每个开发人员都应该对版本控制有很好的了解,而 Git 已经成为软件开发中版本控制的事实标准。但是,开发人员通常只学习一些简单的命令,而忽略了 Git 历史的强大功能以及 Git 可以使您更有效率的其他事情。例如,使用 Git 使用.我参加了 Git 在线高级课程(通过 Github),并继续与 Github 一起教授初学者的 Git 课程。当我注意到关于我最喜欢的 Git 功能的技术文章不多时,我抓住机会与我的开发人员分享它。在本文中,您将学习如何利用以下高级 Git 功能:Git stash 使您无需提交
git reset详解
weixin_33721344的博客
06-05 312
HEAD HEAD也是很多初学者会搞不清楚的一个概念 说穿了也很简单 就是 你的目前branch的最新的commit 所以今天你下了git checkout b1 但有个例外 因为checkout并不只可以指定branch 还可以指定一个commit 所以当你checkout <commit> 他的意思是说 嘿 既然你指定的是...
git 删除历史commit
u011803304的专栏
02-01 9805
“没有commit错代码的人,不足以称为高级工程师。——凯天” 你不认识凯天没事,你只用知道代码提交错分支有救就行了。废话不多说,我们进入正题——怎么删除最后一次提交的记录。 删除最后一次提交 命令很简单,但是不能马虎,不能多回滚或者少回滚,不然就麻烦不断了。 主要命令: 第一步:回滚上一次提交 git reset --hard HEAD^ 就很简单,回滚master分支的上一次提交。 ...
gitrebasereset、revert区别
study_way的博客
01-14 2586
rebase用于修改提交历史的顺序,将一系列提交重新应用到新的基底上。reset用于移动 HEAD 指针,可以用来撤销提交、取消暂存区的更改或者彻底丢弃更改。revert用于创建新的提交,撤销之前的提交,不改变历史。选择使用哪个命令取决于你的需求和工作流程。在共享的分支上使用rebasereset时要小心,因为它们会改变提交历史,可能引发冲突。
git rebase有何用处
u800820的专栏
03-27 262
大家在使用git的过程中是否也经常遇到某些空的merge提交记录,导致分叉混乱,这是怎么回事呢?今天带大家来看看。 问题描述: 我们在本地git commit后执行git push,这时如果有其他人先往代码库push了代码,我们需要先pull代码,并在本地生成一次merge的记录才能push成功。 而正是本地的这次合并,会导致分支出现不必要的分叉。 解决方案: 为了使分支看起来更直观,在push前可以使用git rebase指令将分叉的分支合并为一条直线。其原理也很简单,执行指令后会将提交记录重新按时.
git resetrebase
08-18
git resetrebasegit版本控制中的两个重要命令,用于管理代码提交和修改历史。 git reset命令用于将当前分支的HEAD指针移动到指定的提交,同时可选择性地修改工作目录和暂存区的文件状态。它有三种常用的模式: 1. Soft Reset:使用`git reset --soft <commit>`可以将HEAD指针移动到指定提交,但不修改工作目录和暂存区的文件。这意味着之前的提交会被撤销,但相应的更改会保留在暂存区,可以重新提交。 2. Mixed Reset:使用`git reset --mixed <commit>`是默认的reset模式,它将HEAD指针移动到指定提交,并且重置暂存区,但不修改工作目录的文件。这意味着之前的提交和相应的更改都会被撤销,并且文件状态会回到最近一次提交的状态。 3. Hard Reset:使用`git reset --hard <commit>`会彻底重置当前分支的HEAD指针、暂存区和工作目录到指定提交。这意味着之前的提交和相应的更改都会被彻底删除,请谨慎使用。 git rebase命令用于在当前分支上应用另一个分支上的提交,并将其追加到当前分支的提交历史中。它可以实现分支合并的效果,但是与git merge命令不同,rebase会修改提交历史,使得分支合并后的提交看起来更加线性和整洁。 使用`git rebase <branch>`可以将当前分支的提交应用到指定的分支上,也可以使用交互式(rebase -i)的方式对提交进行修改、合并或删除。 需要注意的是,使用git resetrebase命令都会修改提交历史,所以在公共分支上使用时要谨慎,以免影响其他开发者的工作。
写文章

热门文章

  • Java数据结构和算法(一)——开篇 132707
  • AJAX问题之XMLHttpRequest status = 0 129956
  • Eclipse运行C++问题Launch failed,Binary not found 85054
  • 万恶的一天——vbe6ext.olb不能被加载 79638
  • 微信公众平台开发问题——token验证失败 66918

分类专栏

  • 数据结构与算法 付费 12篇
  • 疑难杂症 付费 1篇
  • 自动化测试 1篇
  • Java 44篇
  • Spring家族系列 10篇
  • Docker和Kubernetes系列 5篇
  • Java编程思想 19篇
  • 计算机基础 5篇
  • Maven构建工具相关 4篇
  • JVM 3篇
  • Git版本控制工具相关 5篇
  • 第三方软件问题 2篇
  • Tomcat容器相关 1篇
  • 程序员人生 12篇
  • C/C++ 4篇
  • 操作系统 8篇
  • Java框架 16篇
  • 个人作品 11篇
  • Android 8篇
  • 设计模式 3篇
  • 数字图像处理 5篇
  • 计算机网络 2篇
  • 笔试面试 2篇
  • 其他语言——Python/Perl/汇编/VBA/PHP/ 14篇
  • RDBMS/Redis 4篇
  • 前端 15篇
  • Redis/Memcached 2篇

最新评论

  • Android SDK Manager安装Google Play Intel x86 Atom_64 System Image依赖问题

    zj_studynow: 找了一大堆,还是博主这里靠谱呀 啊哈哈

  • Yapi 1.10.3迁移踩坑记

    今天不抽烟8.: 超时问题github上有大神解决了 https://github.com/Salty-salt/yapi/commit/a926035c08149715804d71acf438e4e1fe248d66 [code=javascript] // script += "; return this;"; script += `; return { Function: this.Function, eval: this.eval, header: this.header, query: this.query, body: this.body, mockJson: this.mockJson, params: this.params, resHeader: this.resHeader, httpCode: this.httpCode, delay: this.delay, Random: this.Random, cookie: this.cookie }`; [/code]

  • Android SDK Manager安装Google Play Intel x86 Atom_64 System Image依赖问题

    普通网友: 干货满满,细节很到位!【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • Android SDK Manager安装Google Play Intel x86 Atom_64 System Image依赖问题

    普通网友: 干货满满,实用性强,博主的写作风格简洁明了,让人一目了然。文章涵盖了很多实用的知识点。【我也写了一些相关领域的文章,希望能够得到博主的指导,共同进步!】

  • SQLYog停止运行和卡死在还原会话问题解决

    开心码农1号: C:\Documents and Settings\Administrator\Application Data\SQLyog 将该目录下的所有文件删掉 如果需要历史连接数据的话 sqlyog.ini将该文件备份 能正常启动后还原到原始位置 我的是win7系统

最新文章

  • 腾讯企点点击网址系统默认Google浏览器无法打开
  • Android SDK Manager安装Google Play Intel x86 Atom_64 System Image依赖问题
  • Yapi 1.10.3迁移踩坑记
2024年2篇
2022年4篇
2021年13篇
2020年21篇
2019年5篇
2018年6篇
2017年3篇
2016年22篇
2015年23篇
2014年50篇
2013年43篇
2012年2篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iaiti

赏顿早餐钱~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玉溪玻璃钢卡通雕塑深圳主题商场美陈怎么样瑞金玻璃钢卡通雕塑厂北京玻璃钢雕塑性价比高东莞哪里有玻璃钢雕塑厂呢郑州锻铜玻璃钢景观雕塑生产陕西石雕雕塑玻璃钢抗战人物泡沫玻璃钢雕塑武汉玻璃钢农耕人物雕塑玻璃钢西瓜雕塑哪里好雄鹰雕塑玻璃钢图片大全玻璃钢浮雕人物雕塑图玻璃钢雕塑拼接视频高档玻璃钢花盆生产广东玻璃钢玻璃钢雕塑公司深圳周边商场美陈批发定西动物玻璃钢雕塑价格仙桃玻璃钢雕塑熊猫哪家好不锈钢仿古校园玻璃钢雕塑小品南岗玻璃钢雕塑厂家主题公园玻璃钢雕塑工厂扬州玻璃钢人物雕塑厂家直销佛像玻璃钢彩绘雕塑制造龙岗玻璃钢雕塑制品怒江玻璃钢座椅雕塑造价山东玻璃钢广场雕塑四川大型商场美陈哪里有浙江商场创意商业美陈作品阳春玻璃钢花盆花器定西仿真人物玻璃钢雕塑多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化