Git常用操作与命令

可以先阅读Git的初次使用。


获取Git仓库

1.在已存在目录中初始化仓库

Git第一步:git init。该命令是在一个目录中创建一个新的Git仓库


2.克隆现有的仓库

# 例如 git clone https://github.com/vuejs/vue
$ git clone <url># 自定义本地仓库的名字
$ git clone <url> [newname]

Git支持多种数据传输协议:http://git://或者SSH

默认情况下,Git会将远程仓库设置为名为origin的远程仓库,并且会自动将你克隆的默认分支(通常是mastermain)设置为当前工作分支。

记录每次更新到仓库

初次克隆的仓库的工作目录下的所有文件都属于已跟踪文件,并处于未修改状态。

一.检查当前文件状态

$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

上面提示说明所有已跟踪文件无任何修改。

Git之前默认分支名是master,后来改为main

关于github默认分支名改为main后可能的处理。


二.跟踪新文件

$ git add <文件名或目录路径>

使用git add添加文件到暂存区或者称为追踪文件后,运行git status命令,如果提示Changes to be commited,则紧跟下面的文件则是已跟踪已暂存状态。


三.暂存已修改的文件

使用git status命令出现Changes not staged for commit提示是说明该提示下面的文件已跟踪且内容发生变化,但未提交到暂存区,这时使用git add提交到暂存区即可。


四.状态简览

使用-s--short选项可以简化状态输出

$ git status -sM README
MM Rakefile
A  lib/git.rb
M  lib/simplegit.rb
?? LICENSE.txt

注意状态有两列。

  • ??:新添加的未跟踪文件。
  • 空格:未修改。
  • A空格:新添加到暂存区的文件。
  • 空格M:工作区中已修改但未暂存的文件。
  • M空格:已修改且已暂存。
  • MM:已修改,暂存后又作了修改但未暂存。
  • R:文件已被重命名。
  • D:文件已被删除。

五.忽略文件

一般我们不希望项目编译产物和日志文件等被列入未跟踪文件。我们可以创建一个.gitignore文件,列出想要忽略的文件模式。

.gitignore文件是一个用于指定不应该被Git版本控制的文件和目录的文件,一般我们将其放在Git仓库根目录下应用于全局,但也可以放在特定的子目录下,则只对该子目录有效。

以下是一些关于.gitignore文件的规范和常见用法:

  • 文件格式.gitignore是一个文本文件,每一行表示一个需要忽略的文件或目录。

  • 注释:以#开头的行会被视为注释,不会被Git处理。

  • 通配符:通配符用来匹配文件名或路径。以下是一些常见的通配符:

    • *:匹配零个或多个字符。
    • ?:匹配一个字符。
    • **:递归匹配任意子目录。
    • /:目录分隔符。
  • 排除目录:忽略整个目录及其内容:

    # 忽略名为build的目录及其内容
    build/
    
  • 排除特定文件:只需指定文件名或通配符:

    config.ini
    
  • 排除文件类型

    *.log
    
  • 递归匹配子目录

    **/*.log
    
  • 取反规则:假如你想忽略build/目录下所有文件但保留build/important.log

    build/
    !build/important.log
    

六.查看已暂存和未暂存的修改

使用git statusgit diff可以查看已暂存、未暂存的文件,只不过git diff文件补丁形式更具体展示哪些行发生了改变。

git diff比较的是当前工作目录的未暂存更改和暂存区域最后一次提交(HEAD)之间的差异, 也就是未暂存的变更

git diff --stagedgit diff --cached则比较已暂存待提交和最后一次提交(HEAD)之间的差异,即已暂存的更改。


七.提交更新

$ git commit

执行上面命令会启动你选择的文本编辑器来输入提交说明。

追加-v选项查看具体修改

追加-m选项可以附带提交信息在命令里。

提交信息是一条简要的文本信息,用于描述你所做的更改的性质、目的或上下文。

git commit执行完后,会提示当前所在分支本次提交的完整校验和(哈希值),本次提交中有多少文件修订过以及多少行添加或删除

Git 提供了一个跳过使用暂存区域的方式, 只要在提交的时候,给 git commit 加上 -a 选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。


八、移除文件

移除文件分为从磁盘移除从暂存区移除

  • 从磁盘移除:从磁盘删除使用标准的文件删除操作,如在命令行使用rm(Unix或Linux)或del(Windows),文件将被永久删除,不再存在于你的工作目录中。但是该操作不会自动反映在Git的版本历史中,需要只需额外步骤git rm来告诉Git。若删除的文件之前修改过或已放入暂存区,则必须使用-f选项强制删除。

  • 从暂存区移除:从暂存区移除文件后,文件仍保存在当前工作目录中:

    • git rm --cached <文件或路径>

九、移动文件

移动文件使用git mv <源文件或路径> <目的文件或路径>

git mv相当于下面三条命令:

$ mv README.md README
$ git rm README.md
$ git add README

git mv也可以用于重命名文件。

查看提交历史

不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。

# 常规形式
$ git log
# -p 或 -patch 选项,增加补丁形式
$ git log -p
# --stat 选项,展示简略统计信息
$ git log --stat
# --pretty = oneline,展示简略统计信息
$ git log --pretty = oneline
# 定制记录的显示格式
$ git log --pretty = format:"%h - %an,ar%:s%"

1.输出格式

git log --pretty = format常用选项:

选项说明
%H提交的完整哈希值
%h提交的简写哈希值
%T树的完整哈希值
%t树的简写哈希值
%P父提交的完整哈希值
%p父提交的简写哈希值
%an作者名字
%ae作者的电子邮件地址
%ad作者修订日期(可以用 --date=选项 来定制格式)
%ar作者修订日期,按多久以前的方式显示
%cn提交者的名字
%ce提交者的电子邮件地址
%cd提交日期
%cr提交日期(距今多长时间)
%s提交说明

git log --pretty=format:%h %s" --graph的执行结果如下:

$ git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
*  5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
*  11d191e Merge branch 'defunkt' into local

*表示一次提交,竖线 (|) 代表一个分支,斜线 (/) 和反斜线 (\) 表示分支的合并。


2.限制输出长度

限制git log输出的选项:

选项说明
-<n>仅显示最近的 n 条提交。
--since, --after仅显示指定时间之后的提交。
--until, --before仅显示指定时间之前的提交。
--author仅显示作者匹配指定字符串的提交。
--committer仅显示提交者匹配指定字符串的提交。
--grep仅显示提交说明中包含指定字符串的提交。
-S仅显示添加或删除内容匹配指定字符串的提交。

撤销操作

1.覆盖提交

$ git commit --amend

执行该命令,如果自上次以来未做任何修改,那么快照保持不变,只修改提交信息。

而如果存在修改,这次提交会覆盖上次提交。


2.取消暂存的文件

$ git reset HEAD <文件>

3.撤销对文件的修改

$ git checkout -- <file>

远程仓库的使用

查看远程仓库名称

git remote: 显示当前仓库已配置的所有远程仓库的简写名称。。默认名字是origin

git remote -v: 显示当前仓库已配置的所有远程仓库的简写名称和对应的URL。这会显示每个远程仓库的读取和写入的URL,如果你克隆了一个仓库,通常会看到一个名为"origin"的默认远程仓库。


添加远程仓库

git remote add <remote-name> <remote-url>: 添加一个新的远程仓库,并指定它的简写名称和URL。通常在开始一个新项目时,你会使用 git clone 将远程代码库克隆到本地,然后使用 git remote add 来添加其他远程仓库(如团队协作中的共享仓库)。


从远程仓库中抓取与拉取

$ git fetch <remote-name>

git fetch命令用于从远程仓库下载最新的提交历史,但不会自动合并或更新你的工作目录。它只会将远程仓库的变更下载到本地,并将它们存储在名为"origin"(默认远程仓库名)的分支中,例如origin/master表示远程仓库的master分支。

$ git pull <remote-name> <branch-name>

git pull命令用于从远程仓库获取更新并自动合并到当前分支中。它实际上是git fetchgit merge两个命令的组合。首先,它会执行git fetch来获取远程仓库的更新,然后将这些更新自动合并到当前分支中。


推送到远程仓库

$ git push <remote-name> <branch>

git push将本地代码或修改推送到远程仓库的分支。

注意:执行git push前,确保拥有服务器的写入权限以及本地分支与远程分支之间没有冲突(即之前没有人推送过),否则你的推送将被拒绝,必须先抓取其他人的工作并合并到你的工作中才能推送。


查看某个远程仓库详情

命令格式:

$ git remote show <remote>

远程仓库的重命名与移除

# 重命名
$ git remote rename <oldname> <newname>
# 删除
$ git remote remove <remote-name>git remote rm <remote-name>

打标签

在Git中,你可以给特定的提交(Commit)来使用标签(Tag)打上标记,类似于一个代码版本的快照。标签通常用于标识重要的里程碑、版本发布或稳定版本,以便以后更容易地找到和访问这些特殊地提交。


列出标签

命令:git tag以字母顺序列出标签。

按照特定模式查找标签:git tag -l <glob模式>


创建标签

Git有两种标签:轻量标签(lightweight)和附注标签(annotated)。


轻量标签

轻量标签是对特定提交的引用。只包含提交信息。

创建轻量标签的命令:git tag <tagname> [commit-id]。不加提交号默认给当前分支的最新提交打标签。

使用git show <tagname>可以查看标签信息和对应的提交信息。


附注标签

附注标签是Git数据库中一个完整对象,是可以被校验的,包含了打标签者的信息和一个标签信息。

命令:git tag -a <tag-name> -m "Tag message" [commit-id]。不加提交号默认给当前分支的最新提交打标签。


共享标签

git push不会将标签推送到远程服务器上。这需要我们显式的推送标签:

  1. 推送所有标签:git push origin --tags
  2. 推送指定标签:git push origin <tagname>

删除标签

  • 删除本地标签:git tag -d <tagname>
  • 更新远程仓库标签:git push <remote> :refs/tags/<tagname>git push origin --delete <tagname>

检出标签

git checkout可以用于检出指定的提交,并将仓库的 HEAD 指向该提交。这样会处于“分离 HEAD”状态,意味着你不再位于任何分支上。通常,你不会在这种状态下进行修改,因为新提交将没有分支引用,会很难找到和维护。

如果想检出旧标签并且需要更改旧版本中的内容,那么就需要新建一个分支:git checkout -b <branch-name> <tagname>

Git别名

Git提供给命令提供别名的功能,这样我们可以对长命令使用自定义简写。

命令格式:git config --global alias.<alias-name> <git-command>

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

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

相关文章

若依微服务集成CAS,实现单点登录

若依&#xff08;RuoYi&#xff09;微服务是一款基于Spring Cloud Alibaba开发的企业级微服务框架&#xff0c;采用前后端分离方式&#xff0c;使用了常用的微服务组件&#xff0c;如Feign、Nacos、Sentinel、Seata等&#xff0c;提供了丰富的微服务治理功能&#xff0c;如服务…

Linux查看命令总结

1.动态实时查找命令 使用以下命令的前提是需要在找到日志位置 tail -f server.log 实时展示日志末尾内容&#xff0c;默认最后10行,相当于增加参数 -n 10 tail -n filename; tail命令扩展 查看日志最后20行内容并实时更新日志 tail -f -n 20 server.log或者 tail -fn 20 ser…

【Python】代理池针对ip拦截破解

代理池是一种常见的反反爬虫技术&#xff0c;通过维护一组可用的代理服务器&#xff0c;来在被反爬虫限制的情况下&#xff0c;实现数据的爬取。但是&#xff0c;代理池本身也面临着被目标网站针对ip进行拦截的风险。 本文将详细介绍代理池针对ip拦截破解的方法&#xff0c;包含…

WPF的图形微语言

WPF的图形微语言 前言 WPF为定义几何图形增加了一种更简明的替换语法&#xff0c;通过该语法可用更少的标记表示详细的图形&#xff0c;这种语法称为图形微语言&#xff0c;并且由于应用于Path元素&#xff0c;也称为路径微语言。 示例 使用两条闭合路径创建了一个基本三角…

Avue-Card用法

1、基本属性 <template> <!-- 基础组件 --><basic-container><!-- <el-button clickexportHandle>导出</el-button> --><avue-crud//设置表格属性:option"option"//来存取页面的值v-model"form"//获取后台数据:dat…

蓝桥杯每日N题 (砝码称重)

大家好 我是寸铁 希望这篇题解对你有用&#xff0c;麻烦动动手指点个赞或关注&#xff0c;感谢您的关注 不清楚蓝桥杯考什么的点点下方&#x1f447; 考点秘籍 想背纯享模版的伙伴们点点下方&#x1f447; 蓝桥杯省一你一定不能错过的模板大全(第一期) 蓝桥杯省一你一定不…

Python入门教程 | Python简介和环境搭建

Python 简介 Python是一种高级编程语言&#xff0c;由荷兰人Guido van Rossum于1991年创建。它以其简单易学、可读性强和丰富的生态系统而受到广泛喜爱。它被广泛应用于各个领域&#xff0c;包括Web开发、科学计算、数据分析、人工智能等。 Python的特点 简洁易读&#xff1a…

回归预测 | MATLAB实现TSO-LSSVM金枪鱼群算法优化最小二乘支持向量机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现TSO-LSSVM金枪鱼群算法优化最小二乘支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现TSO-LSSVM金枪鱼群算法优化最小二乘支持向量机多输入单输出回归预测&#xff08;多指标&#xff0c;多图&a…

免费开源的vue+express搭建的后台管理系统

此项目已开源 前端git地址&#xff1a;exp后台管理系统前端: exp后台管理系统前端 后端git地址&#xff1a;express后台管理系统: express后台管理系统 安装运行 npm i yarn i 前端: npm run dev | yarn dev 后端: npm run start | yarn start 主要技术栈 前端后端名称版本名…

大数据及软件教学与实验专业实训室建设方案

一 、系统概述 大数据及软件教学与实验大数据及软件教学与实验在现代教育中扮演重要角色&#xff0c;这方面的教学内容涵盖了大数据处理、数据分析、数据可视化和大数据应用等多个方面。以下是大数据及软件教学与实验的一般内容&#xff1a;1. 数据基础知识&#xff1a;教授学生…

redis--事务

redis事务 在Redis中&#xff0c;事务是一组原子性操作的集合&#xff0c;它们被一起执行&#xff0c;要么全部执行成功&#xff0c;要么全部回滚。虽然Redis的事务并不遵循传统数据库的ACID特性&#xff0c;但它仍然提供了一种将多个命令打包成一组执行的机制&#xff0c;适用…

Unity启动项目无反应的解决

文章首发见博客&#xff1a;https://mwhls.top/4803.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议&#xff0c;私信不回。 摘要&#xff1a;通过退还并重新载入许可证以解决Unity项目启动无反应问题。 场景 Unity Hub启动项目…

ZLMediakit-method ANNOUNCE failed: 401 Unauthorized

使用ffmpeg推流&#xff1a; nohup ffmpeg -stream_loop -1 -re -i "/usr/local/mp4/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://10.55.134.12/live/test &[rootlocalhost ~]# ffmpeg -stream_loop -1 -re -i "/usr/local/mp…

人脸老化预测(Python)

本次项目的文件 main.py主程序如下 导入必要的库和模块&#xff1a; 导入 TensorFlow 库以及自定义的 FaceAging 模块。导入操作系统库和参数解析库。 定义 str2bool 函数&#xff1a; 自定义函数用于将字符串转换为布尔值。 创建命令行参数解析器&#xff1a; 使用 argparse.A…

视觉学习(八)---zed调用yolov5之目标检测遇到的问题及解决

1.前言 zed调用yolov5进行目标检测时遇到的问题&#xff0c;记录下~~ 2.环境信息 开发板&#xff1a;Jetson Xviewer NX 摄像头&#xff1a; zed2系统&#xff1a;Ubuntu18.043.问题及解决 问题1&#xff1a; RuntimeError: cuDNN error: CUDNN_STATUS_MAPPING_ERROR 原因&…

【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

目录 一、问题背景二、修改方法2.1 修改种子2.2 使用linux中的 /dev/urandom 生成随机数 三、/dev/random 和 /dev/urandom 的原理3.1 参考连接3.2 重难点总结3.2.1 生成随机数的原理3.2.2 随机数生成器的结构3.2.3 二者的区别和选择 四、在代码的使用方法 一、问题背景 在一个…

RabbitMq-2安装与配置

Rabbitmq的安装 1.上传资源 注意&#xff1a;rabbitmq的版本必须与erlang编译器的版本适配 2.安装依赖环境 //打开虚拟机 yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c kernel-devel m4 ncurses-devel tk tc xz3.安装erlan…

理解docker命令

基础命令 帮助命令 docker --help&#xff08;帮助命令&#xff09; 用于获取某个命令的帮助信息 #命令帮助 docker 命令 --help 小技巧 换行符 \ 使用命令换符&#xff0c;可以让繁杂命令变得有条理 #命令换行&#xff0c;使用换行符 \ docker ... \... \ 镜像命令 d…

不含数字的webshell绕过

异或操作原理 1.首先我们得了解一下异或操作的原理 在php中&#xff0c;异或操作是两个二进制数相同时&#xff0c;异或(相同)为0&#xff0c;不同为1 举个例子 A的ASCII值是65&#xff0c;对应的二进制值是0100 0001 的ASCII值是96&#xff0c;对应的二进制值是 0110 000…

Android11 中 LED 使用-RK3568

文章目录 前言原理图设备树驱动前言 现在我们来学习点亮LED 原理图 然后对应在核心板原理图上查找 Working_LEDEN_H_GPIO0_B7,如下图所示: 那么我们只要控制 GPIO0_B7 即可控制 led 的亮灭。 设备树 leds: leds {compatible = "gpio-leds";work_led: work {gpi…