GIT命令使用手册(详细实用版)

 一、git常用操作参考

第一次提交完整步骤:
1.git init;
2.git add .
3.git commit -m "初始化"
4.git remote add origin https://github.com/githubusername/demo.git
5.git pull origin master
6.git push -u origin master(使用-u选项可以将本地的主分支与远程主分支关联起来,这样以后就可以直接使用git push和git pull而不需要指定远程仓库和分支。)

git config --list列出所有的Git配置选项
git config --global user.name "xxxxxxxxxxxxxx"
git config --global user.email "xxxxxxxxxxxxxx"

新增连接的远程仓库:git remote add origin <远程仓库URL>
修改连接的远程仓库:git remote set-url origin <远程仓库URL>
删除连接的远程仓库:git remote remove origin <远程仓库URL>

二、git常用命令参照表

序号命令描述样例
1git init初始化一个新的Git仓库
2git clone将远程库克隆到本地git clone -b <想要克隆的远程仓库的分支名> <远程仓库地址>
3git add将修改或新增的文件添加到Git暂存区
4git commit将暂存区的文件提交到本地仓库
5git push

将本地的分支推送到远程仓库的分支(如果分支不存在则自动创建)

将本地指定分支推送到远程指定分支

git push <远程仓库名称> <远程仓库分支名称>

git push origin <本地指定分支名称>:<远程指定分支名称>

6git pull将远程仓库的文件拉取到本地仓库
7git branch查看当前本地分支
8git branch -b创建一个新的本地分支
9git branch -a列出所有本地和远程分支
10git branch -m修改本地分支的名称git branch -m <旧分支名称> <新分支名称>
11git merge将两个或多个分支合并到一起
12git checkout切换到另一个分支或者恢复之前的提交git checkout <本地分支名称>
13git checkout -b创建并切换到一个新的本地分支git checkout -b <新建本地分支名称>
14git cherry-pick应用一个提交到当前分支git cherry-pick <commit id>
15git remote管理远程仓库
16git remote -v显示所有远程仓库的信息
17git remote set-url设置或修改远程仓库的URL
18git remote remove移除一个远程仓库git remote rm <仓库名称>
19git tag创建、列出或删除标签
20git cz使用commitzen这样的工具,它提供了交互式的提交信息输入方式,有助于生成格式化良好的提交消息
21git status显示当前分支的文件状态,包括未跟踪文件、未提交的更改和冲突
22git diff显示暂存区和工作目录之间的差异
23git log显示提交日志,包括提交历史和每次提交的详细信息
24git reset重置当前分支到指定的状态,可以是到某个提交、某个标签或某个commit的哈希值
25git revert创建一个新的提交,这个提交的内容是撤销某个指定提交的更改
26git branch -d/-D删除一个分支,-D选项用于强制删除(即当分支有未合并的提交时)
27git checkout -- <file>丢弃工作目录中指定文件的所有本地更改
28git rm从工作目录和暂存区中删除文件
29git mv重命名文件,同时更新工作目录和暂存区
30git show显示某个提交的详细信息,包括提交的日志、差异和文件内容
31git stash保存当前的工作状态到一个栈,然后清空工作目录和暂存区
32git stash apply应用以前保存的工作状态
33git stash list列出所有保存的工作状态
34git stash pop应用并移除最近保存的工作状态
35git bisect帮助我们找到引入错误的提交
36git grep在提交历史或当前分支中搜索文本
37git gc执行垃圾回收,清理不再使用的对象
38git reflog显示对引用(分支、标签等)所做的所有更改的历史记录
39git fetch拉取最新的代码和分支信息,将远程分支拉取到本地新建的分支

git fetch <远程仓库名称> <远程分支名称>:<本地分支名称>

 三、常见问题及解决方案:

问题一:拉取报错

$ git pull origin master
From gitee.com:loris-liu/ncn* branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

本地仓库和远程仓库是独立的,它们没有共同的提交历史。你的本地分支是新创建的,并且没有提交历史。
在命令后面使用 --allow-unrelated-histories 标志来允许合并不相关的历史。

问题二:历史提交中单个文件过大解决

// 第一步查到该文件:
git rev-list --objects --all | grep 438f2335a16ab8239d709089b8463d2069a1
// 或者:
git rev-list --all | xargs -I{} git ls-tree --full-tree -r {} | grep 438f2335a16ab8239d709089b8463d2069a17637
// 第二步重写:
git filter-repo --path screen.zip --path-rename '' --invert-paths
// 或者:
git filter-branch --tree-filter 'rm -f screen.zip' HEAD 

问题三:撤销上一次合并

1.回滚到之前的提交

第一步:使用 git reflog 查看历史记录,找到合并操作之前的提交哈希值:git reflog
找到您想要回滚到的提交前的提交哈希值。
第二步:git reset 命令回滚到之前的提交:git reset --hard <commit-hash>

2.撤销最近的合并操作
git reset --hard ORIG_HEAD

将当前分支回退到最近的一次提交,并清除工作目录和暂存区中的所有本地修改,让你的工作区变得和最近的提交完全一样
解释:git reset --hard HEAD
    // git reset 是用来移动当前分支的 HEAD 指针的命令。
    // --hard 选项表示彻底重置。它会重置工作目录和暂存区,丢弃所有未提交的更改。
    // HEAD 是指向当前分支最新提交的指针。

3.撤销上一次commit
git reset --soft HEAD^
4.完全撤销上一次commit
git reset --hard HEAD^

问题四:仓库clone优化(只克隆最新的一个提交)

git clone --depth=1 <远程仓库地址>

--depth=1: 这是一个选项,表示只克隆最新的一个提交。这样可以减少克隆所需的时间和空间,因为你只获取最新的提交历史,而不是整个历史记录。

问题五:测试是否连通 ssh -T git@github.com

第一种方法:关闭SSl验证:
git config --global http.sslVerify "false"
git config --global https.sslVerify "false"第二种方法:关闭全局代理:
git config --global --unset http.proxy
git config --global --unset https.proxy

PS:连接github超时可查看一下博文:

解决GitHub总是超时连接不上的问题_github超时-CSDN博客

问题六:使用一次新的commit,替代上一次提交

git commit --amend -m [message]

如果代码没有任何新变化,则用来改写上一次commit的提交信息

问题七:撤销git cherry-pick操作

git cherry-pick --abort

问题八:查看代码贡献量

git log --format='%aN' | sort -u | while read name; do echo -en "$name\t"; git log --author="$name" --format='%aN' --since="2023-01-01" --until="2023-12-31" --numstat | awk '{add += $1; subs += $2; loc += $1 - $2} END {print add, subs, loc}'; done

这个命令会输出自2023年1月1日至2023年12月31日期间每个贡献者的添加(additions)、删除(deletions)和总行数(loc)。

解释:

    git log --format='%aN' 列出提交的作者姓名。

    sort -u 对作者姓名进行排序并去重。

    while read name; do ... done 循环遍历每个作者姓名。

    echo -en "$name\t" 输出作者姓名,并添加一个制表符进行对齐。

    git log --author="$name" 筛选出指定作者的提交。

    --since 和 --until 参数限定时间范围。

    --numstat 选项使得git log输出每个文件的添加和删除行数。

    awk 用于累加每个作者的代码行数统计。

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

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

相关文章

图像生成工具WebUI

介绍 Stable Diffusion WebUI&#xff08;AUTOMATIC1111&#xff0c;简称A1111&#xff09;是一个为高级用户设计的图形用户界面&#xff08;GUI&#xff09;&#xff0c;它提供了丰富的功能和灵活性&#xff0c;以满足复杂和高级的图像生成需求。如今各种人工智能满天飞&…

9 OOM和JVM退出。OOM后JVM一定会退出吗?

首先我们把两个概念讲清楚 OOM是线程在申请堆内存&#xff0c;发现堆内存空间不足时候抛出的异常。 JVM退出的条件如下&#xff1a; java虚拟机在没有守护线程的时候会退出。守护线程是启动JVM的线程&#xff0c;服务于用户线程。 我们简单说下守护线程的功能: 1.日志的记录…

面试经典题目:LeetCode274_H指数

leetcode274——H指数 暴力循环代码分析性能分析 方法1&#xff1a;排序加线性扫描算法步骤&#xff1a; 方法2&#xff1a;计数排序&#xff08;适用于引用次数有上限&#xff09;算法步骤&#xff1a; 题目链接&#xff1a;leetcode274_H指数 暴力循环 class Solution { publ…

【前端爬虫】关于如何获取自己的请求头信息(user-agent和cookie)

注意&#xff1a;由于user-agent和cookie中保存了部分账户信息&#xff0c;所以一定不要随意泄露给他人&#xff01;&#xff01;&#xff01; 1.首先打开某个页面&#xff0c;点击键盘的F12键进入控制台&#xff0c;或者鼠标右键页面选择打开控制台 2.然后点击控制台上方的网…

爬虫抓取的数据如何有效存储和管理?

在现代数据驱动的世界中&#xff0c;爬虫技术已成为获取网络数据的重要手段。然而&#xff0c;如何有效地存储和管理这些数据是一个关键问题。本文将详细介绍几种有效的数据存储和管理方法&#xff0c;并提供相应的Java代码示例。 1. 数据存储方式 1.1 文件存储 文件存储是最…

将java项目部署到linux

命令解析 Dockerfile: Dockerfile 是一个文本文件&#xff0c;包含了所有必要的指令来组装&#xff08;build&#xff09;一个 Docker 镜像。 docker build: 根据 Dockerfile 或标准指令来构建一个新的镜像。 docker save: 将本地镜像保存为一个 tar 文件。 docker load: 从…

Next.js 13 App Router实战踩坑与性能优化指南

去年年底&#xff0c;我接了一个海外客户的项目&#xff0c;要求使用 Next.js 13 的 App Router 开发一个数据分析平台。说实话&#xff0c;当时虽然对 Next.js 已经很熟悉了&#xff0c;但对 App Router 这个相对较新的特性还是有些忐忑。现在项目已经成功上线&#xff0c;我想…

MySQL 中快速插入大量数据

在 MySQL 中快速插入大量数据&#xff08;例如 20 万条记录&#xff09;可以通过多种方法实现。以下是一些优化技巧和步骤&#xff0c;可以帮助你高效地插入大量数据&#xff1a; 1. 禁用索引和约束&#xff08;如果可能&#xff09; 在插入大量数据之前&#xff0c;禁用索引和…

Chrome 浏览器原生功能截长屏

我偶尔需要截取一些网页内容作为素材&#xff0c;但偶尔内容很长无法截全&#xff0c;需要多次截屏再拼接&#xff0c;过于麻烦。所以记录下这个通过浏览器原生功能截长屏的方案。 注意 这种方案并不是百分百完美&#xff0c;如果涉及到一些需要滚动加载的数据或者悬浮区块&am…

Python+OpenCV系列:AI看图识人、识车、识万物

在人工智能风靡全球的今天&#xff0c;用 Python 和 OpenCV 结合机器学习实现物体识别&#xff0c;不仅是酷炫技能&#xff0c;更是掌握未来的敲门砖。本篇博文手把手教你如何通过摄像头或图片输入&#xff0c;识别人、动物、车辆及其他物品&#xff0c;让你的程序瞬间具备 AI …

关于如何正确在测试用例中mock静态方法的问题

文章目录 情况一&#xff1a;希望在测试用例中直接执行静态方法的逻辑情况二&#xff1a;不希望在测试用例中执行静态方法的逻辑插桩方法坑1: 报错SubclassByteBuddyMockMaker原因与解决方案坑2&#xff1a;报错 the existing static mock registration must be deregistered原…

Shell自定义(二)

1.Shell自定义 1.初始化 定义全局变量environ&#xff0c;把g_env的内容用memset初始化为0&#xff0c;这里用malloc开辟的空间为对应环境变量的长度1&#xff0c;多1位置是最后结束符0&#xff0c;strcpy把此时的对应的环境变量拷贝到g_env里面&#xff0c;下面是新增一个环…

PHPstudy中的数据库启动不了

法一 netstat -ano |findstr "3306" 查看占用该端口的进程号 taskkill /f /pid 6720 杀死进程 法二 sc delete mysql

安装与配置MongoDB 6.0以支持远程连接

安装与配置MongoDB 6.0以支持远程连接 目录 安装curl工具下载并导入MongoDB 6.0 PGP密钥向APT导入MongoDB 6.0版软件包的资源链接安装MongoDB依赖libssl1.1安装MongoDB启动并检查MongoDB服务状态进入MongoDB Shell交互式执行环境设置MongoDB开机自启配置MongoDB允许远程连接 …

Hive其一,简介、体系结构和内嵌模式、本地模式的安装

目录 一、Hive简介 二、体系结构 三、安装 1、内嵌模式 2、测试内嵌模式 3、本地模式--最常使用的模式 一、Hive简介 Hive 是一个框架&#xff0c;可以通过编写sql的方式&#xff0c;自动的编译为MR任务的一个工具。 在这个世界上&#xff0c;会写SQL的人远远大于会写ja…

百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!

百度智能云千帆 AppBuilder 发版升级&#xff01; 进一步降低开发门槛&#xff0c;落地大模型到应用的最后一公里。在千帆 AppBuilder 最新升级的 V1.1版本中&#xff0c;企业级 RAG 和 Agent 能力再度提升&#xff0c;同时组件生态与应用集成分发更加优化。 • 企业级 RAG&am…

解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误

解决Ubuntu 20.04上编译OpenCV 3.2时遇到的stdlib.h缺失错误 您在 Ubuntu 20.04 上编译 OpenCV 3.2 时遇到的错误与 C 标准库的头文件配置问题有关。错误消息指出系统无法找到 <stdlib.h>&#xff0c;这通常与预编译头文件的处理、GCC 版本或者头文件搜索路径有关。下面…

Swagger自动文档工具以及gin-swagger的使用

什么是 Swagger&#xff1f; Swagger 是一个开源的 API 设计和文档工具&#xff0c;旨在帮助开发者更高效地设计、构建、记录和测试 RESTful API。它基于 OpenAPI 规范&#xff08;前身为 Swagger 规范&#xff09;&#xff0c;通过自动化的方式生成交互式 API 文档、客户端 S…

网络视频监控平台/安防监控/视频综合管理Liveweb视频汇聚平台解决方案

一、当前现状分析 当前视频资源面临以下问题&#xff1a; 1&#xff09;不同单位在视频平台建设中以所属领域为单位&#xff0c;设备品牌众多&#xff0c;存在的标准不一&#xff0c;各系统之间也没有统一标准&#xff1b; 2&#xff09;各单位视频平台建设分散、统筹性差&am…

为什么要用单例模式?

‌单例模式是一种创建型设计模式&#xff0c;用于确保某个类只有一个实例&#xff0c;并提供一个全局访问点&#xff0c;使得其他类可以轻松访问该实例‌。 使用单例模式的主要原因包括以下几点&#xff1a;‌ ‌确保唯一性‌&#xff1a;在某些情况下&#xff0c;我们需要确…