Git相关命令介绍

Git是一个功能强大的版本控制系统,它提供了一系列的命令来帮助开发者进行日常的版本控制操作。以下是一些常用的Git命令及其简要介绍:

初始化和配置

  • git init: 初始化一个新的Git仓库。
  • git config: 配置Git的设置,如用户名、邮箱等。

文件更改

  • git add <file>: 将指定文件添加到暂存区。
  • git rm <file>: 从暂存区和工作目录中删除文件。
  • git mv <old> <new>: 移动或重命名文件。

查看状态和日志

  • git status: 查看当前工作目录的状态。
  • git log: 查看提交历史。
  • git reflog: 查看所有HEAD的变动记录,用于恢复丢失的提交。
  • git diff: 查看工作目录和暂存区或HEAD之间的差异。

提交更改

  • git commit: 提交暂存区的更改到仓库。
  • git commit -m "message": 提交并添加提交信息。
  • git commit --amend: 修改最后一次提交。

分支和标签

  • git branch: 列出所有本地分支。
  • git branch -a: 列出所有分支(本地和远程)。
  • git checkout <branch>: 切换到指定分支。
  • git switch <branch>: (Git 2.23+)切换到指定分支。
  • git branch -d <branch>: 删除本地分支。
  • git tag: 列出所有标签。
  • git tag <name>: 创建一个新的标签。

远程仓库

  • git clone <url>: 克隆远程仓库到本地。
  • git remote: 显示远程仓库的简写名和URL。
  • git remote add <name> <url>: 添加远程仓库。
  • git fetch: 从远程仓库获取所有分支的最新状态。
  • git pull: 拉取远程分支的更改并合并到当前分支。
  • git push: 推送本地分支的更改到远程仓库。
  • git push -u origin <branch>: 推送本地分支到远程仓库,并设置上游分支。

合并和衍合

  • git merge <branch>: 将指定分支的更改合并到当前分支。
  • git rebase: 将当前分支的更改移植到另一分支上。

撤销和重置

  • git reset: 重置当前HEAD到指定的状态。
  • git reset --hard: 重置HEAD并丢弃所有更改。
  • git reset --soft: 重置HEAD,但不更改索引和工作目录。
  • git reset --mixed: (默认)重置HEAD和索引,但不更改工作目录。
  • git revert <commit>: 创建一个新的提交,撤销指定提交的更改。

冲突解决

  • git merge --abort: 中止当前的合并操作。
  • git rebase --abort: 中止当前的衍合操作。

子模块

  • git submodule add <url>: 添加子模块到仓库。
  • git submodule update: 更新所有子模块。

其他

  • git clean: 清除工作目录中未跟踪的文件。
  • git stash: 临时存储未提交的更改。
  • git stash pop: 恢复之前存储的更改。
  • git bisect: 二分查找引入错误的提交。

高级查看状态

  • git show: 显示提交、标签或分支的信息。
  • git diff --stagedgit diff --cached: 比较暂存区和上一次提交之间的差异。
  • git diff <branchA> <branchB>: 比较两个分支之间的差异。

忽略文件

  • .gitignore: 一个配置文件,用于指定Git应忽略的文件或目录模式。

交互式暂存

  • git add -igit interactive-add: 进入一个交互式暂存界面,可以逐步添加更改。

补丁管理

  • git apply <patch>: 应用一个补丁文件。
  • git am: 将邮件格式的补丁应用到仓库中。

子命令

  • git submodule foreach <command>: 对所有子模块执行指定的命令。

远程分支操作

  • git push <remote> --delete <branch>: 删除远程分支。
  • git push <remote> --tags: 推送所有标签到远程仓库。

远程仓库管理

  • git remote rename <old> <new>: 更改远程仓库的名称。
  • git remote remove <remote>git remote rm <remote>: 删除远程仓库的引用。

远程跟踪分支

  • git branch -r: 列出所有远程跟踪分支。
  • git branch -vv: 显示本地分支和远程跟踪分支的最新提交。

工作流支持

  • git flow: 一个使用Git的分支工作流工具,帮助管理复杂的开发过程。

配置和帮助

  • git config --list: 列出所有配置项。
  • git help <command>: 显示指定命令的帮助信息。

性能优化

  • git gc: 清理仓库,优化性能。
  • git prune: 修剪未使用的对象,减少仓库大小。

钩子(Hooks)

  • pre-commit: 提交前运行的脚本。
  • post-commit: 提交后运行的脚本。
  • pre-push: 推送前运行的脚本。
  • post-receive: 接收推送后运行的脚本。

其他实用命令

  • git archive <branch> | tar -x: 从Git仓库中导出特定分支的文件。
  • git shortlog: 显示提交历史的概要。
  • git whatchanged: 显示仓库的变更日志。

子模块(Submodules)高级操作

  • git submodule update --remote: 更新子模块到其远程仓库的最新状态。
  • git submodule foreach --recursive: 在所有子模块及其子子模块中递归执行命令。

工作树(Worktrees)

  • git worktree add: 添加一个新的工作树,允许在不同分支间轻松切换。
  • git worktree prune: 清理未使用的工作树。

替代Hashes(替代哈希)

  • git alternate-refs: 管理替代引用,用于创建可以合并回来的实验性分支。

引用(References)

  • git show-ref: 显示所有引用和它们的目标。
  • git update-ref: 更新引用到特定的commit。

打包

  • git bundle: 创建一个包含多个分支和标签的包,方便传输。

网络操作

  • git ls-remote <remote>: 列出远程仓库的引用和它们的哈希值。

清理

  • git clean -d: 清除工作目录中的未跟踪目录。
  • git gc --prune=<date>: 清理老旧的无需打包的对象。

子命令的子命令

  • git remote show <remote>: 显示远程仓库的详细信息。
  • git branch -r --sort=-creatordate: 按创建日期排序显示远程分支。

诊断

  • git fsck: 检查数据库的完整性。
  • git count-objects: 显示对象数据库的统计信息。

邮件

  • git am -3: 应用补丁,对每个电子邮件消息创建一个提交。
  • git format-patch: 生成一系列补丁文件。

合并策略

  • git merge -s ours: 合并时采用当前分支作为主分支。
  • git merge -s recursive: 使用递归策略合并分支。

撤销操作

  • git reset --soft: 回退到指定的状态,但不撤销工作目录中的更改。
  • git reset --mixed: (默认)回退到指定的状态,并重置暂存区,但不改变工作目录。

别名

  • git config --global alias.<name> <command>: 创建自定义别名以简化命令。

钩子(Hooks)的使用

  • 你可以在.git/hooks/目录下创建自定义脚本,这些脚本会在特定的Git事件发生时自动运行。

配置文件

  • .gitconfig: 全局配置文件,位于用户的主目录下。
  • .gitmodules: 管理子模块的配置文件。

交互式变基

  • git rebase -i <commit>: 交互式变基,允许你修改、删除、压缩或重新排序commit。

比较和合并

  • git cherry-pick <commit>: 应用一个特定的commit到当前分支。
  • git diff-tree <commit1> <commit2>: 显示两个commit之间的差异。

远程分支的跟踪

  • git branch -u <remote>/<branch>: 设置上游分支,使得git pullgit push可以直接使用。

撤销暂存区更改

  • git reset HEAD <file>: 撤销暂存区的更改,但不改变工作目录。
  • git restore <file>: 撤销暂存区的更改,恢复工作目录的更改。

这些命令和概念覆盖了从日常使用到高级维护的各个方面,可以帮助你更深入地理解和使用Git。随着你对Git的不断学习和实践,你将能够更加熟练地运用这些工具来优化你的工作流程。

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

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

相关文章

如何在anaconda的环境下安装langchain

1、安装anaconda&#xff1b; 2、在终端上&#xff0c;输入&#xff1a; conda install langchain -c conda-forge Proceed ([y]/n)? y 输入&#xff1a;Y 3、安装完成后&#xff0c;输入&#xff1a; python -c "import langchain; print(langchain.__version__)&…

Redisson集成SpringBoot

前言&#xff1a;Redisson集成SpringBoot主要有两种方式&#xff0c;一个是使用redisson-spring-boot-starter依赖&#xff08;优先推荐&#xff09;&#xff0c;毕竟springboot主打的就是约定大于配置&#xff0c;这个依赖就是为springboot准备的。 再一种方式就是引入rediss…

JVM学习-javap解析Class文件

解析字节码的作用 通过反编译生成字节码文件&#xff0c;可以深入了解Java工作机制&#xff0c;但自己分析类文件结构太麻烦&#xff0c;除了第三方的jclasslib工具外&#xff0c;官方提供了javapjavap是jdk自带的反解析工具&#xff0c;它的作用是根据class字节码文件&#x…

JVM(9):虚拟机性能分析和故障解决工具之jmap工具

1 jmap(Memory Map for Java)作用 一个多功能的命令&#xff0c;它可以生成 java 程序的 dump 文件&#xff0c; 也可以查看堆内对象信息、查看 ClassLoader 的信息以及 finalizer 队列 2 命令格式 jmap [options] 参数解释&#xff1a; 第一个参数&#xff1a;options no…

一个投稿好方法让你的文章早日发表

作为一名单位信息宣传员,我初入此行时,满腔热情,怀揣着传播单位价值、展示团队风采的理想,一头扎进了稿件撰写的海洋。我的目标很简单,就是通过文字的力量,让外界听到我们的声音,感受到我们的活力。然而,理想很丰满,现实却给我上了生动的一课。 起初,我遵循传统路径,选择了一家…

QT安装和配置[安装注意点][QT找不到python27.dll][缩小空间]

安装注意点 本文摘录于&#xff1a;https://blog.csdn.net/Python_0011/article/details/131699443只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 双击"qt-online-installer-windows-x64-4.8.0.exe"文件后输入账号选择如下控…

云原生架构内涵_1.云原生架构定义

1.云原生架构 从技术的角度&#xff0c;云原生架构是基于云原生技术的一组架构原则和设计模式的集合&#xff0c;旨在将云应用中的非业务代码部分进行最大化的剥离&#xff0c;从而让云设施接管应用中原有的大量非功能特性&#xff08;如弹性、韧性、安全、可观测性、灰度等&a…

什么是Capto刀柄,一起来认识一下

大家好&#xff0c;今天咱们不聊齿轮&#xff0c;说一说一款刀柄的相关内容。目前&#xff0c;高速加工中心的主轴转速可以达到10,000——50,000r /min &#xff0c;极大地提高了生产率。高速加工工具系统的主要作用是保证刀具在机床主轴中的精确定位&#xff0c;将主轴的运动和…

车辆工程计算机编程:深度探索与未来挑战

车辆工程计算机编程&#xff1a;深度探索与未来挑战 随着科技的不断进步&#xff0c;车辆工程领域与计算机编程的交融日益紧密&#xff0c;为行业发展注入了新的活力。然而&#xff0c;对于许多人来说&#xff0c;车辆工程计算机编程究竟学什么&#xff0c;仍是一个充满困惑和…

【C++刷题】优选算法——递归第四辑

记忆化搜索篇 什么是记忆化搜索&#xff1f; 带 备忘录 的递归 如何实现记忆化搜索&#xff1f; a.添加一个备忘录 <可变参数&#xff0c;返回值>b.每次递归返回的时候&#xff0c;把结果放到备忘录里c.每次递归进入的时候&#xff0c;先查看一下备忘录 记忆化搜索 vs 常…

对于个人而言,大数据时代如何更好地管理自己的信息?

在大数据时代&#xff0c;管理个人信息变得尤为重要。以下是几个建议来更好地管理个人信息&#xff1a; 认识和了解自己的数字足迹&#xff1a;了解自己在互联网上的活动&#xff0c;包括浏览历史、社交媒体和在线购物数据等。通过查阅自己的帐户设置和隐私选项&#xff0c;可以…

golang信号通知 signal.Notify NotifyContext完整示例

在看示例之前有必要先看看Go程序中信号的默认行为&#xff0c; go中信号的默认行为如下&#xff1a; SIGHUP、SIGINT或SIGTERM信号会导致程序退出。SIGQUIT、SIGILL、SIGTRAP、SIGABRT、SIGSTKFLT、SIGEMT或SIGSYS信号会导致程序退出并进行堆栈转储。SIGTSTP、SIGTTIN或SIGT…

使用Nginx作为反向代理实现MQTT内外网通信

使用Nginx作为反向代理实现MQTT内外网通信 步骤1: 安装Nginx 确保你的服务器上已安装Nginx。如果未安装&#xff0c;可以通过以下命令在Ubuntu上安装Nginx&#xff1a; sudo apt update sudo apt install nginx步骤2: 配置Nginx 编辑Nginx的配置文件&#xff0c;通常是/etc…

全面掌握Prompt提示词技巧

本文综合介绍了Prompt提示词的各种技巧&#xff0c;包括高级提示工程技术、设计提示的通用技巧、优化prompt的十个技巧、AI提示词网站合集、提示工程指南以及ChatGPT提示词技巧等&#xff0c;旨在帮助读者深入理解和应用这些技巧&#xff0c;提高与AI模型的交互效率和质量。 文…

C++ 类模板 函数模板

类模板 #include <bits/stdc.h> using namespace std; //多少变量就写多少个 template<typename T1, typename T2> class Cat { public:Cat(){}Cat(T1 name, T2 age){this->age age;this->name name;}void print(){cout << this->name << …

Python脚本启动应用并输入账号或密码

一、简介 如果每天要启动某个软件还要输入账号密码登录的需求的话&#xff0c;可以参考本文章&#xff1b; 二、Python环境 环境&#xff1a;Python3.11 已经在Windows电脑中配置Python环境变量&#xff0c;且配置了pipd的环境变量&#xff1b; 三、安装模块 安装所需要的…

计算机毕业设计 | SpringBoot招投标系统 任务发布网站(附源码)

1&#xff0c;绪论 在市场范围内&#xff0c;任务发布网站很受欢迎&#xff0c;有很多开发者以及其他领域的牛人&#xff0c;更倾向于选择工作时间、工作场景更自由的零工市场寻求零散单子来补贴家用。 如今市场上&#xff0c;任务发布网站鱼龙混杂&#xff0c;用户需要找一个…

(原创)从右到左排列RecycleView的数据

问题的提出 当我们写一个Recycleview时&#xff0c;默认的效果大概是这样的&#xff1a; 当然&#xff0c;我们也可以用表格布局管理器GridLayoutManager做成这样&#xff1a; 可以看到&#xff0c;默认的绘制方向是&#xff1a; 从左到右&#xff0c;从上到下 那么问题来了…

STM32系列(HAL库)——F103C8T6通过HC-SR04超声波模块实现测距

一、模块资料 &#xff08;1&#xff09;模块简介 超声波是振动频率高于20kHz的机械波。它具有频率高、波长短、绕射现象小、方向性好、能够成为射线而定向传播等特点。HC-SRO4是一款尺寸完全兼容老版本&#xff0c;增加UART和IIC功能的开放式超声波测距模块,默认条件下,软件…

执行普罗米修斯插件mysqld_exporter出现闪退问题如何解决?

运行 mysqld_exporter.exe 文件闪退的问题可能是由于配置文件或环境变量设置不正确导致的。 检查配置文件 my.cnf&#xff1a; 打开 my.cnf 文件&#xff0c;确保其中的配置项正确无误&#xff0c;尤其是 MySQL 数据库的连接信息。配置示例&#xff1a;[client] useryour_mysql…