一、玩转Git三剑客-Git基础
时间:2022-07-23
本文章向大家介绍一、玩转Git三剑客-Git基础,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Git的优点
- 最优的存储能力
- 非凡的性能
- 开源
- 很容易做备份
- 支持离线操作
- 很容易定制工作流程
git的安装
参考官方安装git
在终端输入git --version
可以看到git的版本信息,以此代表安装成功。
使用git之前要做的最小配置
配置user.name和user.email
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
config的三个作用域
缺省等同于local
git config --local ## local只对某个仓库有效
git config --global ## global对当前用户所有仓库有效
git config --system ## system对系统所有登录的用户有效
显示config的配置,加--list
git config --list --local ## local只对某个仓库有效
git config --list --global ## global对当前用户所有仓库有效
git config --list --system ## system对系统所有登录的用户有效
创建第一个仓库并配置local用户信息
- 把已有的项目代码纳入git管理 cd 项目代码所在的文件夹 git init
- 新建的项目直接用Git管理 cd 某个文件夹 git init your_project #会在当前路径创建和项目同名的文件夹 cd your_project
进入git项目目录,配置local用户信息
git config --local user.name "Your Name"
git config --local user.email "email@example.com"
如果在一个仓库中存在local用户与全局用户,那么local用户的优先级高于全局用户信息。
工作区和暂存区
git add filename #将文件添加到暂存区
git commit -m'message' #为提交添加信息
通过git add -u
命令可以将纳入git管理的文件所有更新文件进行添加。
给文件重命名的简便方法
通过git mv oldName newName
即可快速变更文件名,并且会自动添加到暂存区,直接通过commit即可提交。
查看git log
- 只看变更列表 git log --oneline
- 之查看最近的几次commit git log -n2 --oneline
n2表示所有分支最近两个。
- 只看当前分支的历史 git log
- 查看全部分支 git log --all
- 图形化展示 git log --all graph
通过gitk查看版本历史
在项目目录输入gitk
即可。
探秘.git
-
config
文件 配置文件,存放一些配置信息。 -
HEAD
文件 引用文件,引用当前分支 -
refs
文件夹-
heads
分支文件夹, 存放各个分支,其中内容表示commit的哈希值。 -
tags
标签或里程碑
-
-
objects
文件夹 文件夹的名称与该文件夹内文件名拼成一个哈希值,表示一个树。 其内容为文件变动信息。
commit、tree和blob三个对象之间的关系
一个commit对应一颗树,树里边包含树(文件夹)。树中的文件为blob,文件夹则为另一个树,在这个文件夹中同理。叶子节点到文件。
git的设计,只要文件内容相同,就是一个东西。
分离头指针情况下的注意事项
分离头指针指的是没有基于某个分支来做修改。
- 好处 用于测试,如果测试结果不佳,则可以直接丢弃。
- 坏处 如果不跟分支挂钩,当切换分支时,如果不为刚才修改的commit创建分支,那么基于commit分支修改的内容会当作垃圾清理。
进一步理解HEAD和branch
head不仅可以指代新分支的最后一次提交,也可以指代具体commit。当作分支切换时,head会指向这个切换的分支。分支(commit)最后也要落脚于commit。
HEAD可以指代当前分支。例如比较每次commit的差异:
#比较当前commit与上一次commit的差异
#两种写法都可以
git diff HEAD HEAD^
git diff HEAD HEAD~
#比较当前commit与上次commit的差异
#两种写法都可以
git diff HEAD HEAD^^
git diff HEAD HEAD~2
- 开源组件photoView学习
- ViewPagerIndicator+viewpager指示器详解
- 实现去哪儿来回机票选择的view
- 解决水平ListView在ScrollView中出现的滑动冲突
- Android逆向分析(2) APK的打包与安装背后的故事
- Activity之间传递大数据问题
- React Native入门(二)Atom+Nuclide安装、配置与调试
- React Native入门(一)环境搭建与Hello World
- android 自定义Viewpager实现无限循环
- Android内存优化(二)DVM和ART的GC日志分析
- Android Material Design之Toolbar与Palette实践
- android-async-http框架源码分析
- 使用Buck构建Android工程
- android 实现淘宝收益图的折线
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 实现将Bitmap 保存到本地
- Android Gradle依赖管理、去除重复依赖、忽略的方式
- Andriod Studio实现保存QQ密码功能(案例代码详解)
- Android Studio编写微信页面提交功能
- android 实现按钮浮动在键盘上方的实例代码
- 创建Android守护进程实例(底层服务)
- android studio xml文件实现添加注释
- 解决Android studio xml界面无法预览问题
- Android Studio通过Artifactory搭建本地仓库优化编译速度的方法
- Android实现向本地写入一个XML文件和解析XML文件
- Android自定义View实现带4圆角或者2圆角的效果
- Android 在 res/layout 文件夹 下创建一个 子文件夹实例
- Android开发实现TextView超链接5种方式源码实例
- Android根据包名停止其他应用程序的方法
- Android APP存活检测方式