Git(6)-Git配置文件、底层操作命令

Git基本命令

  • 1. 常用(迷糊)命令-冷知识
  • 2. git 配置
    • 2.1 设置 配置文件
    • 2.2 查看 配置文件--git config -l
    • 2.3 移除 配置文件设置--unset
    • 2.3 命令别名 --alias
  • 3.git 对象 (git底层操作命令)
    • 3.1 初始化一个版本库
    • 3.2 新建一个简单的blob 对象
    • 3.3 基于散列值查看文件内容 git cat-file -p xxx
    • 3.4 查看文件关联-git ls-files -s
    • 3.5 树对象创建git write-tree
    • 3.6创建提交对象 git commit-tree
    • 3.7创建标签git tag
  • 3.文件操作
    • 3.1 文件状态 git status
    • 3.2 从add 列表中删除暂存文件git rm --cached
    • 3.3查看整个历史记录

1. 常用(迷糊)命令-冷知识

  1. git commit 不加-m 自助打开编辑器,用于输入改次提交的注释。
  2. git diff commit1 commit2 (commit1 是基准)
  3. git show-branch --more=10 (查看当前分支简洁单行commit 摘要信息)
  4. git show 对象名 # 查看对象的信息
  5. git mv 实现文件重命名
  6. git clone public_repo my_repo (命令在本地也能创建原始库public_repo的完整副本)
  7. git rev-parse 3b18e512 # 依据(前缀、标签、相对名)查看对象的完整散列值
  8. git add 暂存一个文件,也叫缓存一个文件,或者叫,把文件放进索引。
  9. git hash-object file 直接计算一个文件的hash值
    10.没有填提信息,不会产生新的提交Aborting commit due to empty commit message.

2. git 配置

2.1 设置 配置文件

git配置文件采用.ini文本文件。配置文件的位置不同,文件的优先级不同,导致实际的作用域不同。(这些配置文件可能不存在,需要自己创建)

.git/config #(工作目录)版本库特定配置,–file 修改改配置文件,优先级最高。
~/.gitconfig #(用户根目录)用户特定的配置,–global 选项修改配置文件。
/etc/gitconfig # 系统范围的配置文件, --system 修改配置文件。(优先级最低)

例如:要创建一个作者名和email 地址,用于所有版本库的所有提交。相应的配置文件修改命令。

git config --global user.name “cyy”
git config --global user.email “cyy@163.com”

又如:为一个版本库设置特定的名字和email地址, 覆盖–global设置。

git config user.name “cyy1”
git config user.email “cyy1@163.com”

2.2 查看 配置文件–git config -l

git config -l # 列出配置文件的内容
cat .get/config # 直接查看相应配置文件的内容

2.3 移除 配置文件设置–unset

git config --unset --global user.email # 移除全局的email 设置。

2.3 命令别名 --alias

经常输入一条常用而且负责的Git 命令,可以考虑为它设置一个别名。(通过修改配置文件)

git commit --global alias show-graph ‘log --graph --abbrev-commit --pretty=oneline’
#how-graph 为 log --graph --abbrev-commit --pretty=oneline 命令的别名。两者作用一致

3.git 对象 (git底层操作命令)

对象库是git 实现版本控制的核心。git 对象库中包含4类对象:块(blob), 目录树(tree),提交(commit), 标签(tag)。
初始化版本库后,创建了一些git必须的模版目录。一般情况下不需要操作或者查看.git 目录下的文件。

3.1 初始化一个版本库

chenyingying01@cyy git-test % mkdir hello
chenyingying01@cyy git-test % cd hello
chenyingying01@cyy hello % git init
chenyingying01@cyy hello % find .
.
./.git
./.git/config
./.git/objects            # 本目录存放所有Git对象的目录
./.git/objects/pack
./.git/objects/info
./.git/HEAD
./.git/info
./.git/info/exclude
# .......

3.2 新建一个简单的blob 对象

chenyingying01@cyy hello % echo "hello world" > hello.txt
chenyingying01@cyy hello % ls -hl
total 8
-rw-r--r--  1 chenyingying01  staff    12B  8 28 11:35 hello.txt
chenyingying01@cyy hello % git add hello.txt
chenyingying01@cyy hello % find .git/objects
.git/objects
.git/objects/3b   	# 散列值的第一个字节成为一个目录,可以提高文件系统的效率
.git/objects/3b/18e512dba79e4c8300dd08aeb37f8e728b8dad   # 基于hello.txt内容计算的十六进制文件名放入对象库
.git/objects/pack
.git/objects/info

3.3 基于散列值查看文件内容 git cat-file -p xxx

chenyingying01@cyy hello % git cat-file -p 3b18e512dba79e4c8300dd08aeb37f8e728b8dad
hello world
chenyingying01@cyy hello % git rev-parse 3b18e512     # 依据前缀查看对象的完整散列值
3b18e512dba79e4c8300dd08aeb37f8e728b8dad

3.4 查看文件关联-git ls-files -s

chenyingying01@cyy hello % git ls-files -s
100644 3b18e512dba79e4c8300dd08aeb37f8e728b8dad 0	hello.txt

3.5 树对象创建git write-tree

创建 文件散列值-文件真实名 的对应列表(构成一棵结构树)树的散列值和文件列表的内容相关。

chenyingying01@cyy hello % git write-tree
68aba62e560c0ebc3396e8ae9335232cd93a3f60
chenyingying01@cyy hello % find .git/objects
.git/objects
.git/objects/68
.git/objects/68/aba62e560c0ebc3396e8ae9335232cd93a3f60
.git/objects/3b
.git/objects/3b/18e512dba79e4c8300dd08aeb37f8e728b8dad
.git/objects/pack
.git/objects/info
chenyingying01@cyy hello % git cat-file -p 68aba6
100644 blob 3b18e512dba79e4c8300dd08aeb37f8e728b8dad	hello.txt

3.6创建提交对象 git commit-tree

chenyingying01@cyy hello % echo -n "commit a file that says hello\n" | git commit-tree 492413269
ff88f59f431c62619b961be4c27efb08506869de
chenyingying01@cyy hello % git cat-file -p ff88f5
tree 492413269336d21fac079d4a4672e55d5d2147ac
author chenyingying01 <chenyingying01@cyy.local> 1630212176 +0800
committer chenyingying01 <chenyingying01@cyy.local> 1630212176 +0800commit a file that says hello

3.7创建标签git tag

(不知道标签有啥作用) 给某个提创建一个tag。

chenyingying01@cyy hello % git tag -m "Tag version 1.0" V1.0 49241326    # 带注释的标签
chenyingying01@cyy hello % git rev-parse v1.0     # 标签的散列值
a0f511a7c20b6ab5e6040dbc1e581b5c232bf3d6
chenyingying01@cyy hello % git cat-file -p a0f511    # 查看散列值对应的内容
object 492413269336d21fac079d4a4672e55d5d2147ac
type tree
tag V1.0
tagger chenyingying01 <chenyingying01@cyy.local> 1630212527 +0800Tag version 1.0
chenyingying01@cyy hello %

在实际使用时,应该跳过底层git write-tree 和 git coomit-tree 步骤,只使用git commit 命令

块(blob)–文件存储,文件名为散列值
目录树(tree)–文件散列值-文件真实名的对应列表(构成一棵结构树)
提交(commit)–
标签(tag)–不知道有啥用,且往下看。

3.文件操作

3.1 文件状态 git status

 changes to be committed      # add 后无更改changed but not updated      # add 后又更改了untracked files              # 没有add 过的文件。

3.2 从add 列表中删除暂存文件git rm --cached

git rm --cached file
git ls-files --stage # 查看暂存列表

3.3查看整个历史记录

git log --follow file

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【软考中级】网络工程师:8.网络安全

本章考察内容比较广泛&#xff0c;考题对知识点都会有所涉及。 8.1 网络安全的基本概念 8.1.1 网络安全威胁的类型 窃听 这种情况发生在广播式网络系统中&#xff0c;每个节点都可以读取数据&#xff0c;实现搭线窃听、安装通信监视器和读取网上的信息等。 假冒 当一个实体…

leetcode9 回文数

判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个…

caffe各层参数详解

在prototxt文件中,层都是用layer{}的结构表示,而里面包含的层的参数可以在caffe.proto文件中找到,比如说Data类型的结构由message DataParameter所定义,Convolution类型的结构由message ConvolutionParameter所定义。 具体说明下: name表示该层的名称type表示该层的类型,…

caffe网络结构图绘制

绘制网络图通常有两种方法&#xff1a; 一种是利用python自带的draw_net.py&#xff0c;首先安装两个库&#xff1a; sudo apt-get install graphviz sudo pip install pydot 接下来就可以用python自带的draw_net.py文件来绘制网络图了。 draw_net.py执行时带三个参数&…

Git(7)-Git commit

Git提交1.识别不同的提交1.1绝对提交名-ID1.2 引用和符号引用--HEAD2.查看提交的历史记录-git log3.提交图-gitk4.提交的范围4.1 X..Y4.1 X...Y5.查找bad 提交--git bisect6.查看代码修改者-git blame命令概览git commit -a # 直接提交修改和删除文件有效加了-a&#xff0c;在 …

leetcode111. 二叉树的最小深度

给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 思路&#xff1a…

Caffe将图像数据转换成leveldb/lmdb

Caffe中convert_imageset projrct将图像数据转换成Caffe能读取的数据格式leveldb/lmdb -gray=true //whether read gray image -shuffle=true //whether mix order -resize_height=28 -resize_width=28 -backend=lmdb …

leetcode155. 最小栈

设计一个支持 push&#xff0c;pop&#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: MinStack minStack new MinStack()…

理解Caffe的网络模型

目录 1. 初见LeNet原始模型2. Caffe LeNet的网络结构3. 逐层理解Caffe LeNet 3.1 Data Layer3.2 Conv1 Layer3.3 Pool1 Layer3.4 Conv2 Layer3.5 Pool2 Layer3.6 Ip1 Layer3.7 Relu1 Layer3.8 Ip2 Layer3.9 Loss Layer 1. 初见LeNet原始模型 Fig.1. Architecture of original …

Git(8)-分支

分支1. 分支名2. 创建分支-git branch3. 查看分支-git show-branch4. 检出分支4.1 有未提交的修改时进行检出4.2 合并变更到不同的分支git checkout -m5. 分离HEAD 分支6.删除分支分支操作命令概览 git branch # 列出版本库中的分支 git branch -r # 列出远程跟踪分支…

caffe开始训练自己的模型(转载并验证过)

学习caffe中踩了不少坑&#xff0c;这里我参考了此博主的文章&#xff0c;并体会到了如何训练自己的模型&#xff1a;http://www.cnblogs.com/denny402/p/5083300.html 学习caffe的目的&#xff0c;不是简单的做几个练习&#xff0c;最终还是要用到自己的实际项目或科研中。因…

leetcode169. 多数元素

给定一个大小为 n 的数组&#xff0c;找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [3,2,3] 输出: 3 示例 2: 输入: [2,2,1,1,1,2,2] 输出: 2 思路&…

Git(9)-diff

分支1. diff in Linux/Unix2. diff in Git3. git diff 两点语法Linux/Unix 系统中存在diff 命令&#xff0c;可以用来显示两个文本/工作路径的差异。Git diff 在此基础上进行的扩展。 1. diff in Linux/Unix Linux 系统中的diff 命令&#xff1a;提供了一个文件如何转化为另一…

图像拼接(一):柱面投影+模板匹配+渐入渐出融合

这种拼接方法的假设前提是&#xff1a;待拼接的两幅图像之间的变换模型是平移模型&#xff0c;即两幅图像同名点位置之间只相差两个未知量&#xff1a;ΔxΔx 和ΔyΔy&#xff0c;自由度为2&#xff0c;模型收得最紧。所以只有所有图像都是用同一水平线或者同一已知倾斜角的摄…

图像拼接(二):OpenCV同时打开两个摄像头捕获视频

使用OpenCV实现同时打开两个USB摄像头&#xff0c;并实时显示视频。如果未检测有两个摄像头&#xff0c;程序会结束并发出“摄像头未安装好”的警告。这里推荐一个小巧的摄像头视频捕捉软件&#xff1a;amcap&#xff0c;使用它可以方便的检查每个摄像头是否能正常工作。 捕获…

Git(10)-merge

Merge1. 无冲突合并2. 有冲突合并-手动解决3. git diff in merge4. 废弃合并5. 合并策略merge相关的操作的命令 git checkout master git merge alternate # 解决冲突 ..... git add file_1 git commit -m "Add slternate line 5, 6" git reset --hard HEAD # b…

elasticsearch的Linux下安装报错问题解决

1.启动报错如下: vim /etc/security/limits.conf 然后修改如下 * soft nofile 65536 * hard nofile 65536sudo vi /etc/pam.d/common-session 添加 session required pam_limits.so sudo vi /etc/pam.d/common-session-noninteractive 添加 session required pam_limits.so…

leetcode120. 三角形最小路径和

给定一个三角形&#xff0c;找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如&#xff0c;给定三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11&#xff08;即&#xff0c;2 3 5 1 11&#xff0…

Elasticsearchan相关插件和工具安装

1、下载elasticsearch-head的源码包 地址&#xff1a;https://github.com/mobz/elasticsearch-head/releases 2、安装node运行环境 地址&#xff1a;https://nodejs.org/en/download/ 3、安装完node之后编译elasticsearch-head 执行npm install -g grunt-cli编译源码 执行…

Git(11)-cherry-pick、reset、rebase

更改提交&#xff0c;版本回退1.get reset 重置HEAD指针的指向2.git cherry-pick3.git revert4.git commit --amend修改提交5.git rebase 变基提交5.1 git rebase --onto5.2rebase 产生冲突&#xff0c;解决冲突/终止变基5.3git rebase -i6. rebase Vs mergegit 提供了【修改】…