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

ops/2024/12/21 14:18:00/

 一、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.ppmy.cn/ops/143775.html

相关文章

YOLOv11:目标检测的新高度

YOLOv11&#xff1a;目标检测的新高度 概览 YOLOv11是由Ultralytics团队开发的新一代目标检测模型&#xff0c;它不仅继承了YOLO系列的高效性和实时性能&#xff0c;还在检测精度和适应复杂场景的能力上取得了显著提升。YOLOv11通过引入新的架构和训练方法&#xff0c;实现了…

Mybatis使用xml及纯注解实现增删改查操作

文章目录 MyBatis 的基本使用1 案例讲解&#xff1a; 使用xml文件配置&#xff0c;实现对数据的增删改查&#xff0c;MyBatis----xml配置使用&#xff08;1&#xff09;代码目录&#xff1a;导入项目依赖&#xff08;2&#xff09;创建pojo类&#xff1a;&#xff08;3&#xf…

【自动化部署】Ansible循环

文章目录 Ansible循环1. with_items2. with_list3. with_flattened4. with_together5. with_cartesian 和 with_nested Ansible 配置模板与效率优化一、配置模板1. 准备配置模板文件2. 修改 inventory 主机清单配置文件3. 编写 playbook 二、Ansible 执行效率优化1. 加大 forks…

推送本地仓库到远程git仓库

目录 推送本地仓库到远程git仓库1.1修改本地仓库用户名1.2 push 命令1.3远程分支查看 推送本地仓库到远程git仓库 删除之前的仓库中的所有内容&#xff0c;从新建库&#xff0c;同时创建一个 A.txt 文件 清空原有的远程仓库内容&#xff0c;重新创建一个新的仓库&#xff0c;…

InnoDB和MyISAM引擎优缺点和区别

nnoDB和MyISAM是MySQL数据库中常用的两种存储引擎。它们各自具有不同的特性和优势&#xff0c;适用于不同的应用场景。 一、InnoDB引擎&#xff1a; 1、它有如下特性&#xff1a; 1)、支持事务&#xff08;ACID&#xff09; 2)、支持外键约束&#xff08;FOREIGN KEY const…

基于开源 AI 智能名片 S2B2C 商城小程序的智慧零售仓储管理创新策略研究

摘要&#xff1a;本文深入探讨在智慧零售蓬勃发展的背景下&#xff0c;仓储管理面临的新挑战。随着消费者对线上购物时效要求的不断攀升&#xff0c;前置仓、门店仓等新型仓储模式应运而生&#xff0c;在带来配送时间缩短优势的同时&#xff0c;也引发了运营成本增加、运营难度…

Ansible 批量管理华为 CE 交换机

注&#xff1a;本文为 “Ansible 管理华为 CE 交换机” 相关文章合辑。 使用 CloudEngine - Ansible 批量管理华为 CE 交换机 wsf535 IP 属地&#xff1a;贵州 2018.02.05 15:26:05 总体介绍 Ansible 是一个开源的自动化运维工具&#xff0c;AnsibleWorks 成立于 2012 年&a…

dolphinscheduler服务注册中心源码解析(二)基于zookeeper实现注册中心源码解析

1.概述 DolphinScheduler的架构遵循分布式设计,其核心包括多个组件,每个组件负责特定的功能,这样可以避免单点故障并提供可扩展性。 Master节点:负责管理调度任务的调度流程、协调任务的执行和状态监控。Master节点还负责任务的调度调度策略的选择(例如负载均衡)以及资源…