linux系统git常规操作

news/2024/7/7 5:54:03 标签: linux, git, elasticsearch

Git命令常规操作

      • 常用命令说明
        • 常用操作示意图
        • 文件的状态变化周期
      • 添加文件跟踪
        • 文件会添加到.git的隐藏目录
        • 由工作区提交到本地仓库
        • 查看git的状态
        • 提交后的git目录状态
      • 删除文件
      • 重命名暂存区数据
      • 查看历史记录
      • 还原历史数据
      • 还原未来数据
      • 标签使用
      • 对比数据

常用命令说明

命令命令说明
add添加文件内容至索引,暂存区
bisect通过二分法查找定位引入 bug 的变更。二分法:每次截取总数的一半寻找bug
branch列出、创建或删除分支
checkout检出一个分支或路径到工作区,-b 切换分支,分支不存在就创建
clone克隆一个版本库到一个新目录
commit暂存区上传到本地仓库
diff显示提交之间、提交和工作区之间等的差异,对比本地仓库和远程仓库差异
fetch从另外一个版本库下载对象和引用
grep输出和模式匹配的行,查找内容
init创建一个空的仓库
log显示提交日志,reflog
merge合并两个或更多开发历史
mv移动或重命名一个文件、目录或符号链接
pull获取并合并另外的版本库或一个本地分支,本地仓库拉去远程仓库代码
push更新远程引用和相关的对象
rebase本地提交转移至更新后的上游分支中
reset重置当前HEAD到指定状态 ,git reset --hard commit的值
rm从工作区和索引中删除文件,–cached 只从索引区删除,-f 删除暂存区和本地文件
show显示各种类型的对象
status显示工作区状态
tag创建、列出、删除或校验一个GPG签名的 tag 对象
常用操作示意图

1190037-20171130170959948-2117269594.png

文件的状态变化周期

1190037-20171130171009651-1964332055.png

添加文件跟踪

git add .

git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#    新文件:    README
#
---
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#       new file:   README
#

git_76">文件会添加到.git的隐藏目录
[root@gitlab git_data]# tree  .git/
.git/
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── objects
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
└── refs
    ├── heads
    └── tags
由工作区提交到本地仓库
[root@gitlab git_data]# git commit  -m 'first commit'  
[master(根提交) bb963eb] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README
git_121">查看git的状态
[root@gitlab git_data]# git status
# 位于分支 master
无文件要提交,干净的工作区

# On branch master
nothing to commit, working directory clean
git_134">提交后的git目录状态
[root@gitlab git_data]# tree  .git/
.git/
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       └── heads
│           └── master
├── objects
│   ├── 54
│   │   └── 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
│   ├── bb
│   │   └── 963eb32ad93a72d9ce93e4bb55105087f1227d
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
└── refs
    ├── heads
    │   └── master
    └── tags

删除文件

git rm --cached 文件名   //只从索引区删除

git rm -f 文件名     //删除暂存区和本地文件

重命名暂存区数据

没有添加到暂存区的数据直接mv/rename改名即可。

已经添加到暂存区数据

git mv 原名 新名字

查看历史记录

git log   #→查看提交历史记录

git log -2   #→查看最近几条记录

git log -p -1  #→-p显示每次提交的内容差异,例如仅查看最近一次差异

git log --stat -2 #→--stat简要显示数据增改行数,这样能够看到提交中修改过的内容,对文件添加或移动的行数,并在最后列出所有增减行的概要信息

git log --pretty=oneline #→--pretty根据不同的格式展示提交的历史信息

git log --pretty=fuller -2 #→以更详细的模式输出提交的历史记录

git log --pretty=fomat:"%h %cn"  #→查看当前所有提交记录的简短SHA-1哈希字串与提交着的姓名。

使用format参数来指定具体的输出格式

格式说明
%s提交说明。
%cd提交日期。
%an作者的名字。
%cn提交者的姓名。
%ce提交者的电子邮件。
%H提交对象的完整SHA-1哈希字串。
%h提交对象的简短SHA-1哈希字串。
%T树对象的完整SHA-1哈希字串。
%t树对象的简短SHA-1哈希字串。
%P父对象的完整SHA-1哈希字串。
%p父对象的简短SHA-1哈希字串。
%ad作者的修订时间。

还原历史数据

Git服务程序中有一个叫做HEAD的版本指针,当用户申请还原数据时,其实就是将HEAD指针指向到某个特定的提交版本,但是因为Git是分布式版本控制系统,为了避免历史记录冲突,故使用了SHA-1计算出十六进制的哈希字串来区分每个提交版本,另外默认的HEAD版本指针会指向到最近的一次提交版本记录,而上一个提交版本会叫HEAD,上一个版本则会叫做HEAD,当然一般会用HEAD~5来表示往上数第五个提交版本。
git log        //查看历史提交数据的commit数值

git reset --hard commit数值

还原未来数据

git reflog    //查看未来历史更新点
git reset --hard commit数值

标签使用

git push 之前打标签即可
git tag v1.0      //当前提交内容打一个标签(方便快速回滚),每次提交都可以打个tag。

git tag           //查看当前所有的标签

git show v1.0     //查看当前1.0版本的详细信息

git tag v1.2 -m "version 1.2 release is test"  //创建带有说明的标签,-a指定标签名字,-m指定说明文字

git tag -d v1.0    //我们为同一个提交版本设置了两次标签,删除之前的v1.0
git reset --hard HEAD^ //回滚到上一个版本

git reset --hard HEAD^^  //回滚到上两个版本

git reset --hard HEAD~5   //回滚到五个版本之前

git reset --hard e9ed8b38a    //使用commit值回滚

git reset --hard V1.0    //使用标签回滚

对比数据

git diff可以对比当前文件与仓库已保存文件的区别,知道了对README作了什么修改后,再把它提交到仓库就放⼼多了。
git diff README
git diff --name-only HEAD HEAD^
git diff --name-only head_id head_id2

http://www.niftyadmin.cn/n/5392781.html

相关文章

与web3.0有关的科技热词的提问和SmartChat给出的回答

Q1. 请解释热词&#xff1a;元宇宙、web3.0、区块链、去中心化、比特币、以太坊、智能合约、NFT、EOS、DAO、Defi、Gamefi、Altcoin 当代科技领域出现了许多热门词汇&#xff0c;以下是这些词汇的解释&#xff1a; 元宇宙&#xff08;Metaverse&#xff09;&#xff1a;元宇…

linux ubuntu 开发环境搭建 opencv fftw openvino

OpenCV 下载 opencv 源码&#xff1a;Releases - OpenCV 官方安装文档&#xff1a;https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html 详细的安装过程可以参考文章&#xff1a; 在 Linux 系统中编译安装 OpenCV - 知乎 安装依赖项&#xff1a; sudo apt-get …

蓝桥杯备战刷题(自用)

1.被污染的支票 #include <iostream> #include <vector> #include <map> #include <algorithm> using namespace std; int main() {int n;cin>>n;vector<int>L;map<int,int>mp;bool ok0;int num;for(int i1;i<n;i){cin>>nu…

Qt QWidget 简约美观的加载动画 第四季

&#x1f60a; 第四季来啦 &#x1f60a; 效果如下: 只有三个文件,可以直接编译运行的 //main.cpp #include "LoadingAnimWidget.h" #include <QApplication> #include <QVBoxLayout> #include <QGridLayout> int main(int argc, char *argv[]) …

Vue3中的事件监听与处理机制深度解析

随着Vue3的发布&#xff0c;其在性能、灵活性和易用性上都实现了显著提升。其中&#xff0c;事件监听和处理机制作为Vue框架中的重要组成部分&#xff0c;也进行了相应的优化与升级。本文将深入探讨Vue3中如何进行事件监听与处理。 一、Vue3事件绑定 在Vue3中&#xff0c;我们…

istio实战:springboot项目在istio中服务调用

目录 一、前言二、准备工作三、问题排查四、总结参考资料 一、前言 在经过前面几天k8s和Istio的安装之后&#xff0c;开始进入最核心的阶段。微服务在抛弃传统的服务注册和服务发现之后&#xff0c;是怎么在istio怎么做服务间的调用的呢&#xff1f;本次实战花费了我2-3天的时…

Leetcode刷题笔记题解(C++):6. Z 字形变换

思路&#xff1a;遍历时候需要更新步进长度 到达0行的时候步进长度为1&#xff1b;到达最后一行numRows-1行的时候步进长度为-1&#xff1b;代码如下所示&#xff1a; class Solution { public:string convert(string s, int numRows) {//如果字符串长度为1或者所给行数为1 …

软件工程复习笔记

一、软件工程概述 软件 = 程序 + 数据 + 相关文档 软件危机(Software Crisis) 指由于落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 软件工程三要素 方法、工具、过程 软件工程目标 在给定成本、进度的…