百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 博客教程 > 正文

git命令手册:仓库操作 git的仓库

connygpt 2024-10-19 04:00 7 浏览

  1. 初始化仓库版本

$ git init

2. 添加文件到暂存区

将当前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步,有点类似SVN的add操作。

# 添加全部暂存区和历史区不存在的或者有更改的 `.c`结尾的文件

$ git add *.c

# 添加全部暂存区和历史区不存在的或者有更改的文件

$ git add .

# 指定文件添加

$ git add test.c

注意:add 空格 再加 .>。可以通过status命令查看添加成功,如果显示一堆绿色的就表示成功了。

3. status仓库

$ git status

# 如果需要显示一种紧凑式格式

$ git status --short # 等价于 $ git status -s

紧凑式中字母的表示含义如下:

  • ?? :表示新添加的未追踪的文件

  • M :M出现在右边,表示该文件被修改但是还没有放入暂存区

  • M :M出现在左边,表示文件被修改已经放入了暂存区

  • MM :出现两个,代表此文件在工作区修改已经放入了暂存区, 但之后有进行了修改,没有添加到暂存区

4. diff仓库

如果你想知道文件具体修改的内容, 那么diff会很有用

# 查看以追踪但尚未暂存的文件更新了哪些部分, 不添加额外参数

$ git diff

# 对使用了add添加到了暂存区的内容, 使用--staged参数或者--cached

$ git diff --staged

5. 提交更新

提交当前工作空间的修改内容,类似于SVN的commit命令

# 常规做法

$ git commit -m "描述信息"

# 如果不使用-m参数添加提交信息, git会使用默认的编译器如vi进行提交描述编写.

# 可通过$ git config --global core.edit 设定喜欢的编译器

# 跳过暂存区操作, 直接从工作区提交到历史区

$ git commit -a -m "" #等价于: $ git commit -am ""

6. 移除文件

如果在工作区间对一个文件进行删除, 需要先进行add,然后才可以提交. 使用git rm可以直接在工作区间删除文件, 并提交到暂存区.

$ git rm fileName

# 如果文件修改,并添加了暂存区, 需要使用-f参数来强制删除(force)

$ git rm -f fileName

# 可以使用glob模式,如下

$ git rm log/\*.log # 删除log目录下所有名称是.log结尾文件

$ git rm \*~ # 删除以~结尾的所有文件

7. 移动文件

同样使用git rm会方便很多, 并且如果相对文件重命名也可以如此

$ git mv file_from file_to

当执行了这条语句之后, 只需要在下一次commit即可, 不需要考虑额外操作. 等价于如下:

$ mv file_from file_to

$ git rm file_from

$ git rm file_to

8. 查看历史提交

查看历史日志,该功能类似于SVN的log。

如果是最基本的git log, 那么会按提交时间列出所有更新, 包括提交的SHA-1校验和, 作者名称,邮箱,提交时间,提交说明. 下面说说常用选项.

# -p:仅显示最近x次的提交 格式 $ git log -p -x

$ git log -p -2 # 查看最近的两次提交内容

# --stat:简略的显示每次提交的内容更改, 如哪些文件变更,多少删除,多少添加等

$ git log --stat

# --pretty: 指定默认不同格式展示信息

$ git log --pretty=oneline #每次提交用一行显示

8.1)关于format对应的常用占位符的写法和意义

占位符说明

8.2)图形展示分支的合并历史

$ git log --graph --oneline #oneline只是让输出看起来比较舒服

8.3)git log的一些其他操作

git log操作

8.4)查找一个字符串的出现和删除的提交

# 使用限制符-S后面紧跟要查询的字符串

$ git log -Smethod_name

# 或者针对一个文件进行更改的提交查询, 只需要在后面追加文件名称即可

$ git log fileName

8.5)限制log输出的选项

log输出选项设置

9. 撤销操作

9.1)amend重新提交

当我们commit之后突然发现漏掉了一个文件, 这个时候不可能对一个文件再进行commit一次, 这样做就显得很多余, 而如果版本回退之前再添加也比较麻烦. 这个时候就可以使用这个amend命令.如下:

$ git commit -m "版本1.5开发代码"

# 正当你松了一口气的时候发现配置文件忘记修改了, 你赶紧修改,并适合用add到暂存区

$ git add project.property

$ git commit --amend

# 你会神奇的发现你没有增加任何多余的操作就把漏掉的文件补齐到最后一次提交中

9.2)取消暂存的文件

就是对文件进行了git add操作. 这个时候可以reset

# 让暂存区的文件变成文件修改但是没有添加暂存区的状态

$ git reset HEAD fileName

9.3)撤销对文件的修改

场景: 当文件修改了, 但是还没有进行git add的时候还只是在工作区间, 还原成最后一次提交的内容

$ git checkout -- filename

要注意使用, 使用之前确定是否要抛弃已经添加的内容. 因为这个动作可能让你最新添加的内容彻底丢失. 因为没有进行commit, 一般来说进行了commit的内容都是可以恢复的.

10. 标签

Git可以给历史中的某一个提交打上标签, 以示重要. 比如每次正式版本的上线等.

10.1)列出标签

$ git tag

# 如果你只关心某一部分的标签, 例如只对v2.x的标签感兴趣,你可以这样做

$ git tag -l 'v2.*'

10.2)创建标签

标签分为两种一种是附加标签另一种是轻量标签.

  • 附加标签: 会保存打标签者的信息, 时间和附加信息. 最后更随打标签的提交

  • 轻量标签: 只是在一个提交上做一个标记. 存储在一个专门保存标签的文件,指向提交的hash值

先来看附加标签:

$ git tag -a v1.0 -m '附加信息'

轻量标签

$ git tag v1.0

后期打标签, 就是对已经提交某次提交进行追加标签设置

# 可以先使用git log --oneline获取提交历史的hash值

$ git log --oneline

# 然后把hash值赋值到标签语句之后

$ git tag -a v1.1 a6b4c97

10.3)共享标签

默认情况下, git push不会把标签传递到远程服务器. 需要显示的推送标签共享到服务器 例如: git push origin [tagname]

$ git push origin v1.4

# 如果想把本地上所有在远程服务器上的不存在标签删除掉,可以这样

$ git push origin --tags

10.4)检出标签

git中不能真正的检出一个标签, 但是可以在标签处创建一个新的分支.如下

$ git checkout -b checkbranch2 v2.0

10.5)查看标签对应的信息

使用git show <标签名>可以查看对应标签的详细信息, 如果git show这样的命令只是显示上次提交的内容

$ git show v1.4

微信公众号

更多精品技术干货,欢迎关注微信公众号:开发者小黑屋

相关推荐

3分钟让你的项目支持AI问答模块,完全开源!

hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...

干货|程序员的副业挂,12个平台分享

1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...

Github标星超200K,这10个可视化面板你知道几个

在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...

开箱即用的炫酷中后台前端开源框架第二篇

#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...

搭建React+AntDeign的开发环境和框架

搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...

基于.NET 5实现的开源通用权限管理平台

??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...

StreamPark - 大数据流计算引擎

使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...

教你使用UmiJS框架开发React

1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...

简单在线流程图工具在用例设计中的运用

敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...

【开源分享】神奇的大数据实时平台框架,让Flink&amp;Spark开发更简单

这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...

聊聊规则引擎的调研及实现全过程

摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...

【开源推荐】Diboot 2.0.5 发布,自动化开发助理

一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...

微软推出Copilot Actions,使用人工智能自动执行重复性任务

IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...

Electron 使用Selenium和WebDriver

本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...

Quick &#39;n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具

一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...