Git基础和入门
一、Git基础概念
Git功能简单概述
- 可以随时回滚到之前的代码版本(
git reset --hard
); - 协同开发时不会覆盖别人的代码(分支);
- 留下修改记录(
git log
); - 发版时可以方便的管理不同的版本;
1、Git工作模式
操作
- 90%以上的操作在个人计算机上
- 添加文件、修改文件、提交变更、查看版本历史等
- 版本库同步
- 将本地修改推送到版本服务器
版本控制系统:
2、Git文件存储
注意文件存储和SVN不同:
Git 不按照SVN那样对待或保存数据。 反之,Git 更像是把数据看作是对小型文件系统的一组快照。 每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个 快照流。
总结特点:
- 直接记录快照
snapshoot
。而并非比较差异; - 近乎所有操作都在本地执行;
- 时刻保持数据完整性;
- 多数操作仅添加数据;
- 文件的三种状态(只会处于这三种状态)
- 已修改(
modified
) - 已暂存(
staged
) - 已提交(
committed
)
3、Git文件状态
- Git文件: 已被版本库管理的文件;
- 已修改: 在工作目录(
working directory
)修改Git文件; - 已暂存: 对已修改的文件执行Git暂存操作,将文件存入暂存区(
staging area
); (注意SVN中没有暂存区这个概念) - 已提交: 将已暂存的文件执行Git提交操作,将文件存入版本库(
git directory
);
Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作‘索引’,不过一般说法还是叫暂存区域。
基本的 Git 工作流程如下:
- 在工作目录中修改文件。
- 暂存文件,将文件的快照放入暂存区域
git add
。 - 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录
git commit
。
git add 放到暂存区;
git commit 从暂存区放到版本仓库中;
4、本地版本库与服务器版本库
Git是分布式的。
二、Git常用命令
1、config和email
关于配置user.name
和user.email
:
可以有三个地方配置:
比如输入git config
命令, 会出现下面三个信息,即系统级别system
,全局global
,和局部local
。其中优先级不断升高。
zxzxin@zxzxin:~/Git/gitlearn$ git config
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
这里展示一下配置我们局部的gitlearn
仓库:
git 提交的id(
commit id
)是一个摘要值,这个摘要值实际上是一个sha1
计算出来的。
2、git rm 和rm的区别
git rm :
- 1、删除了一个文件
- 2、将被删除的文件纳入到了暂存区(stage);(可以直接调用
git commit
来提交)
若想恢复被删除的文件,需要进行两个动作:
- 1、
git reset HEAD test2.txt
,将待删除的文件从暂存区恢复到工作区; - 2、
git checkout -- test2.txt
, 将工作区的修改丢弃掉;
**rm **:
- 只是将文件删除;注意: 这时,被删除的文件并未纳入到暂存区当中。
- 这时是提交(
git commit
)不了的。要想纳入暂存区,必须要再调用一次git add
。
实战对比:
3、git mv 和 mv的对比
git mv(和git rm
类似):
- 先完成重命名;
- 然后提交到暂存区;
git mv
演示:
而 mv:
- 只是完成重命名;
- 需要自己调用
git add
提交到暂存区;
使用技巧: 可以通过
git commit --amend -m '修正内容'
更改上次错误的提交消息。(就是-m ''
)后面的提交信息写错了。
4、git log查看日志
git log -n
可以查看最近的n
条日志。
git log --pretty=oneline
以一行一行的方式显示出来。
查看git命令帮助:
5、.gitignore
文件
在开发中,如果我们不想将所有的文件都放到git当中,而是要忽略少数一些文件(比如jar
包、配置文件等),我们可以在我们的目录创建一个.gitignore
文件,git就不会将这些文件放入暂存区,也不会提交(不会加入版本控制系统)。
此时我们可以创建一个.gitignore
文件:
简而言之,放在.gitignore
中的文件会直接被git
无视。
其中,放在
.gitignore
中的文件也支持正则表达式。
例如:
*.a
,会忽略所有.a
结尾的文件;!lib.a
,不要忽略lib.a
(排除这个忽略);/test.txt
,仅仅忽略项目根目录下的TODO
文件,不包括子目录下的test.txt
文件;dir1/
,忽略dir1/
目录下的所有文件;dir1/*.txt
,会忽略dir1/a.txt
但不会包括dir1/dir2/a.txt
。- 例如
dir1/*.txt
会忽略dir1
下的所有.txt
文件,dir1/*/*.txt
会忽略dir1
下所有层下的.txt
,而dir1/**/*.txt
会忽略dir1/
下的任意层的.txt
文件。
在.gitignore
中用#
表示注释。
原文:Java架构笔记
免费Java高级资料需要自己领取,涵盖了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo高并发分布式等教程,一共30G。
传送门:https://mp.weixin.qq.com/s/JzddfH-7yNudmkjT0IRL8Q
Git基础和入门的更多相关文章
- Git 快速入门--Git 基础
Git 快速入门 Git 基础 那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余. 在开始学习 G ...
- Git与Repo入门(转载)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAykAAADuCAIAAACyDd+sAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4Xu ...
- 【转】Git与Repo入门----不错
原文网址:http://www.cnblogs.com/angeldevil/p/3238470.html Git与Repo入门 版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工 ...
- ###Git 基础图解、分支图解、全面教程、常用命令###
一.Git 基础图解 转自:http://www.cnblogs.com/yaozhongxiao/p/3811130.html Git 图解剖析 git中文件内容并没有真正存储在索引(.git/in ...
- Git基础教程(二)
继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 配置命令:git config --global * 版本库初始化:git init 向版本库添加文件:git add * 提交 ...
- 版本控制工具Git工具快速入门-Windows篇
版本控制工具Git工具快速入门-Windows篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近在学习Golang语言,之前的开发环境在linux上开发的,后来由于办公用的是w ...
- [转帖]linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习)
linux常用命令大全(linux基础命令入门到精通+实例讲解+持续更新+命令备忘录+面试复习) https://www.cnblogs.com/caozy/p/9261224.html 总结的挺好的 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates]
[易学易懂系列|rustlang语言|零基础|快速入门|(17)|装箱crates] 实用知识 装箱crates 我们今天来讲讲装箱技术crates. 什么是crates? 英语翻译是: 英 [kre ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(15)|Unit Testing单元测试]
[易学易懂系列|rustlang语言|零基础|快速入门|(15)] 实用知识 Unit Testing单元测试 我们知道,在现代软件开发的过程中,单元测试对软件的质量极及重要. 今天我们来看看Rust ...
随机推荐
- 【Mysql】了解Mysql中的启动参数和系统变量
一.启动参数 在程序启动时指定的设置项也称之为启动选项(startup options),这些选项控制着程序启动后的行为. 1)在命令行上使用选项 启动服务器程序的命令行后边指定启动选项的通用格式就是 ...
- odoo10学习笔记十一:视图综述
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/11189322.html 一:视图标签等公共结构 name (必选) 用于通过名字查找标签 model: 与v ...
- Shell脚本批量启停Docker
目录 启动docker 停止docker Python调用脚本 最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,另外该脚本,也可以通过Python ...
- 【面试题】java基础(一)
面试准备的时候遇到很多问题,在网上找的答案都是说的一大堆,这里总结归纳一下,方便之后查看. 1.谈谈final.finally.finalize的区别. final : 修饰类,则该类不能被 ...
- 源码详解Pytorch的state_dict和load_state_dict
在 Pytorch 中一种模型保存和加载的方式如下: # save torch.save(model.state_dict(), PATH) # load model = MyModel(*args, ...
- jmeter压测学习3-提取json数据里面的token参数关联
前言 现在很多接口的登录是返回一个json数据,token值在返回的json里面,在jmeter里面也可以直接提取json里面的值. 上一个接口返回的token作为下个接口的入参. 案例场景 我现在有 ...
- JS高阶---作用域面试
面试题1: ,答案为10 有一点需要明确:作用域是在定义编写代码时已经决定好的 面试题2: 结果1: 结果2: 首先在内部作用域找,没有 然后在全局作用域找,window没有,所以会报错 如果想找对象 ...
- 【OI备忘录】dalao博文收藏夹
[dalao学习笔记总览] [数学] 数论分块:数论分块 矩阵树定理Matrix_Tree:矩阵树Matrix-Tree定理与行列式 杨氏矩阵:杨氏矩阵和钩子公式 Hall定理:Hall定理学习小记 ...
- LoadRunner Controller集合点策略灰色问题 解决
1.脚本里已经添加了集合点,但是在Controller里集合点策略是灰色的无法点击 2.问题解决: 将下图的勾选项去掉即可(系统默认是勾选上的) 去掉勾选后可以选择了:
- JDOJ 1044 Span
JDOJ 1044 Span https://neooj.com/oldoj/problem.php?id=1044 Description 某国有N个村子,M条道路,为了实现“村村通工程”现在要”油 ...