GIT基础常用命令-1 GIT基础篇

news2024/11/15 12:51:44

git基础常用命令-1 GIT基础篇

  • 1.git简介及配置
    • 1.1 git简介
    • 1.2 git配置config
      • 1.2.1 查看配置git config
      • 1.2.2 配置设置
      • 1.2.3 获取帮助git help
  • 2 GIT基础常用命令
    • 2.1 获取镜像仓库
      • 2.1.1 git init
      • 2.1.2 git clone
    • 2.2 本地仓库常用命令
      • 2.2.1 git status
      • 2.2.2 git add
      • 2.2.3 git diff
      • 2.2.4 git commit
      • 2.2.5移除文件 rm
      • 2.2.6 git mv
      • 2.2.7 git log
      • 2.2.8 撤销操作
        • 2.2.8.1 撤销操作 amend
        • 2.2..8.2 撤销已暂存的文件git reset
        • 2.2.8.3 撤销对文件的修改 git checkout
    • 2.3 远程仓库常用命令
      • 2.3.1 显示远程仓库 git remote
      • 2.3.2 添加远程仓库 git remote add
      • 2.3.3 从远程仓库获取和拉取 git fetch
      • 2.3.4 将数据推送到远程仓库git push
      • 2.3.5 检查远程仓库git remote show
      • 2.3.6 删除和重命名远程仓库 git remote rename/rm
    • 2.4 标记
      • 2.4.1 列举标签git tag
      • 2.4.2 创建标签git tag
      • 2.4.3 注释标签git tag -a -m,查看标签
      • 2.4.4 轻量标签
      • 2.4.5 补加标签
      • 2.4.6 共享标签git push
      • 2.4.7 检出标签

1.git简介及配置

以下是我实际学习过程中使用到的命令,手码不易,如果觉得好,希望可以点赞收藏;

1.1 git简介

git是一种分布式版本控制工具,客户端不仅要检出文件的最新快照,而且对代码仓库进行完整的镜像,相比于svn需要配置服务器,每次都是往服务器上添加或者下拉操作,如果svn的服务器宕机了,你就无法提交或者下拉,并且中央数据库所在的硬盘受损的话,就GAME OVER了,除了代码没了,而且各种操作记录都无了。但是GIT不会,你下拉到本地的代码,即使远程git服务器,任何一个客户端都可以使用自己的本地镜像来恢复服务器,因为他每一次的检出操作实际上都是对数据的一次完整备份,这才是分布式版本控制工具最屌的,也就是常说的高可用。通过GIT官网downloads就可以下载对应系统(mac、windows、linux/unix)的安装包,然后进行安装。

在git中,文件有三种状态,分别为:已提交(commited)、已修改(modified)和已暂存(staged),

  • 已提交表示数据已经被安全的存入到本地数据库中,通常也就是git commit之后,就跟任务已经完成了;
  • 已修改表示已经改动了文件,但是尚未提交到数据库,通常表示本地修改了文件,但是尚未执行 git add;
  • 已暂存表示对已修改的文件的当前版本做出了标识并且将其加入到下一次要提交的快照中,通常也就是执行git add之后了,在下一次commit的时候会将暂存区的提交到本地仓库中;

在这里插入图片描述

1.2 git配置config

git可以全局配置,全局配置需要加上–global,也可以局部配置

1.2.1 查看配置git config

添加global就是查看全局,否则就是看当前git项目的配置(因为可能对应多个git远程分支,提代码的用户名密码都不一定都相同)

#1.查看<全局>所有配置
git config <--global> --list
#git config --global --list
#user.username=xxxx
#user.email=xxxx@qq.com
#user.name=desktop_xxxx
#credential.https://gitee.com.provider=generic

#2.查看配置的key,比如user.username|user.password等
git config <--global> key
#git config --global user.username
#xxxx@qq.com

1.2.2 配置设置

git配置设置,可以设置config中key对应的value

#设置配置的key为value,git config user.username potato 就是将当前username设置为potato
git config <--global> key value
#git config --global user.name potato
#配置git默认编辑器为nodepad++
#git config <--global> core.editor "编辑器地址比如nodepad++" -multiInst

1.2.3 获取帮助git help

git可以通过三种方式获取帮助

git help <verb>
git <verb> --help
man git-<verb>
#git help config/clone/push 输入就会显示config或者clone或者push相关的帮助页面说明文档了

2 GIT基础常用命令

2.1 获取镜像仓库

建立GIT项目有两种方式:一种是把现有的项目或者目录导入到git中,第二种是从服务器上克隆(也是经常用的git clone)现有的git仓库。

2.1.1 git init

在现有的目录中初始化git仓库

#初始化,会在当前文件夹下面创建.git的子目录,里面包含了构成GIT仓库骨架的所有必须文件。
git init
#git init
#Initialized empty Git repository in D:/code/java_code/gittest/.git/
#添加文件到暂存区,跟踪新文件
git add xxx.xxx
#将暂存区文件提交到本地仓库,-m为给这次提交添加备注
git commit -m 'first commit'

2.1.2 git clone

克隆现有仓库

#从gitAddress处克隆项目
git clone gitAddress

2.2 本地仓库常用命令

2.2.1 git status

查看当前分支状态,最常用的命令

git status
git status -s 或者 git status --short 
#对应状态有以下三种:
#Changes not staged for commit:已修改但是未添加到暂存区
#Changes to be committed:修改的文件已添加到暂存区,但是没有提交
#nothing to commit, working tree clean项目目录是干净的,也就是没有任何变更

2.2.2 git add

将xxx文件添加到暂存区,也就是将这个文件让GIT开始跟踪

git add xxx

2.2.3 git diff

查看已暂存和未暂存的变更

#多用于修改了但未add操作
git diff
#查看将暂存的马上与上一次的做对比,用于add了,但是未commit
git diff --staged

2.2.4 git commit

提交变更,将加入到暂存区的文件提交到本地仓库

#提交变更,备注为xxxx
git commit -m 'xxxx'
#直接跳过add,自动把已跟踪(执行过git add)的所有文件添加到暂存区,然后再提交,但是这个慎用
git commit -a -m 'xxxx'

2.2.5移除文件 rm

相当于git add的回退操作,并且该命令还会把文件从工作目录中一处,这样下一次你就不用在未追踪文件列表中看到这些文件了
如果直接把文件从工作目录中删除,会有Changes not staged for commit:,这个时候需要使用移除文件的命令,将文件的移除状态记录到暂存区
如果你更改了某个文件,并且已经加入到暂存区了,想要让GIT移除它就必须使用-f强制移除,这样做的目的是防止没有被记录到快照中的数据被意外移除而设立的按全特性,因为这样的数据被意外移除后无法由GIT恢复。

#用于没有添加到暂存区,但是工作目录是删除了的文件,从GIT中移除该文件
git rm xxx
#用于已添加到暂存区了,想要让GIT移除它就必须要强制移除
git rm -f xxx
#用于本地不删除,但是想让GIT不追踪,多用于本地配置文件,或者本地编译的文件,比如使用git rm -cached log/\*.log将日志哪个
git rm -cached xxx

2.2.6 git mv

git不会显示跟踪文件的移动,可以通过git mv来重命名文件,相当于
1.mv file_from file_to
2.git rm file_from
3.git add file_to

#将file_from文件重命名为file_to
git status file_from file_to
#git status
#On branch master
#Changes to be committed:
  #(use "git restore --staged <file>..." to unstage)
        #renamed:    test.txt -> test2.txt

2.2.7 git log

很基础但是却很强大的命令,可以看历史的提交记录,可以说就是避锅找锅的必备了,你干了好事或者坏事,统统给你记录下来,想跑都跑不了的。可以看到我进行了两次提交的操作并且每次提交的-m备注都会显示出来,默认不加参数的话,git log会按照时间顺序列出仓库中的所有提交,其中最新的在最前面。

git log
#Author: potato <xxxx@qq.com>
#Date:   Wed Mar 1 15:28:43 2023 +0800
#
#    second commit
#
#commit 403a86106b79cf76f55b6b3693d2b4e0aef81b4f
#Author: potato <xxxx@qq.com>
#Date:   Wed Mar 1 11:43:23 2023 +0800
#
#    first commit

-p选项最常用,他会显示每次提交所引入的差异,后面加-num数字可以最近的两次提交,比如git log -p -2查看最近两次提交变更的内容

git log -p <-num>

–stat 用来查看简要的信息,比如改动的文件列表、共有多少文件被改动以及文件里由多少新增行或者删除行,并且最后输出总计信息

git log --stat

–pretty可以更改日志输出的默认格式,比如浏览大量提交时,参数可以设置以下几种:
oneline格式选项很有用,它可以在每一行中显示一个提交,short、full和fuller格式选项会分别比默认输出减少或者增加一些信息

git log --pretty=oneline
git log --pretty=format:"%h - %an, %ar : %s"

format格式选项如下:

格式选项输出的格式描述
%H提交对象的散列值
%h提交对象的简短散列值
%T树对象的散列值
%t树对象的简短散列值
%P父对象的散列值
%p父对象的简短散列值
%an作者的名字
%ae作者的电子邮箱地址
%ad创作日期(可使用-date=选项指定日期格式)
%ar相对于当前日期的创作日期
%cn提交者的名字
%ce提交者的提交者的电子邮箱地址
%cd提交日期
%cr相对于当前日期的提交日期

oneline和format这两个选项如果与log命令的另外一个选项–grap一起使用,就能够发挥更大的作用

#列举出最近两周内的所有提交,2008-01-15,2 years 1 day 3 minutes ago
git log --since=2.weeks

2.2.8 撤销操作

2.2.8.1 撤销操作 amend

假如刚提交了的,然后发现少提交了某个文件,可以执行add、commit --amend再次提交,实际只提交一次

git commit -m 'xxxx'
git add xxx
git commit --amend

2.2…8.2 撤销已暂存的文件git reset

假如分两次提交,但是使用add *还未进行commit的时候,将两次提交的都加入到了暂存区,可以使用

#将xxx文件移除到暂存区
git reset HEAD xxx

2.2.8.3 撤销对文件的修改 git checkout

假如你现在不需要对某个文件进行修改,或者你想要还原你的修改,可以使用checkout还原,但是一定要知道,这个命令不可恢复的。

git checkout --xxx

2.3 远程仓库常用命令

远程仓库是指在互联网或者其他网络上托管的项目版本仓库,比如本地的项目可以push到远程仓库,然后供他人使用。

2.3.1 显示远程仓库 git remote

该命令会列出每个远程仓库的简短名称。在某个仓库被克隆后,你至少可以看到名为origin的远程仓库,这是git给克隆源服务器取的默认名称,并且可以使用-v显示远程仓库对应的url

git remote [-v]
#origin [url]

2.3.2 添加远程仓库 git remote add

通过git remote add可以添加远程仓库,而shortname可以方便后续拉或者提代码,比如提代码的时候有个git push origin master,表示的就是往shortname为origin的远端分支,推送master分支的代码,默认关联的第一个远程分支的shortname为origin。

git remote add [shortname] [url]

2.3.3 从远程仓库获取和拉取 git fetch

上一小节已经说了可以通过shortname将远程分支做一个名称替换。那么可以通过git fetch 方式拉去代码

git fetch [shortname]

2.3.4 将数据推送到远程仓库git push

当本地开发已完成之后,需要将代码提交到远程仓库,但是前提是,必须拥有远程仓库有的写权限

git push [shortname] [branchname]
#git push origin master

2.3.5 检查远程仓库git remote show

如果想要查看远程仓库的更多信息,可以使用git remote show进行查看,可以看到远程仓库的地址,以及远程分支的跟踪情况,并且可以看到当前本地分支执行pull和push会对应推送到远程仓库的哪个分支上。

git remote show [shortname]
#git remote show origin

2.3.6 删除和重命名远程仓库 git remote rename/rm

可以使用rename来重命名远程分支的shortname,并且可以使用rm来删除掉远程仓库的关联

git remote rename [shortname_bf] [shortname_af]
#将远程仓库的简短名称origin重命名为test
#git remote rename orgin test
git remote rm [shortname]
#将简短名称为origin的远程仓库进行删除操作
#git remote rm origin

2.4 标记

可以通过git tag可以把特定的历史版本标记为重要版本。标签有两种,一种轻量的标签(lightweight),一种注释标签(annotated)
轻量标签

2.4.1 列举标签git tag

git tag

2.4.2 创建标签git tag

git tag xxx

2.4.3 注释标签git tag -a -m,查看标签

git tag -a可以创建标签,-m是添加注释,并且使用git show可以查看当前标签数据以及对应

git tag -a v1.0 -m 'my wokr version 1.0'
git show v1.0 

2.4.4 轻量标签

使用git tag来把提交的校验和保存到文件中

2.4.5 补加标签

通过git log+git tag可以补加标签

git log
git tag -a 分支hash

2.4.6 共享标签git push

默认情况下,git push不会把标签传输到远程服务器上,但是创建了标签之后,必须明确的将标签推送到共享服务器上

git push origin [tagname]
#一次性推送多个标签,会把服务器上还没有的标签都推送过去
git push origin --tags

2.4.7 检出标签

你无法在git上真正检出一个标签的,因为标签无法移动。如果想把某个版本的仓库放入像是标签的工作目录中,可以使用

git checkout -b [branchname] [tagname]

在特定标签上创建一个新的分支

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

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

相关文章

seata1.5.2使用从零快速上手(提供代码与安装包)

1.软件准备&#xff1a; 1.1 seata1.5.2 官网下载&#xff1a;地址:http://seata.io/zh-cn/ server源码:https://github.com/seata/seata 百度云下载&#xff08;建议&#xff09;: 百度下载 链接&#xff1a;https://pan.baidu.com/s/1eilbSI0YdmupHYI7FroTsw 提取码&…

【编程基础之Python】10、Python中的运算符

【编程基础之Python】10、Python中的运算符Python中的运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符成员运算符身份运算符运算符优先级运算符总结Python中的运算符 Python是一门非常流行的编程语言&#xff0c;它支持各种运算符来执行各种操作。这篇文章将详细介绍…

构造有向无环图(拓扑排序)

蓝桥杯集训每日一题 acwing3696 给定一个由 n 个点和 m 条边构成的图。 不保证给定的图是连通的。 图中的一部分边的方向已经确定&#xff0c;你不能改变它们的方向。 剩下的边还未确定方向&#xff0c;你需要为每一条还未确定方向的边指定方向。 你需要保证在确定所有边的…

独家揭秘:站外引流的十大技巧!

在今天的互联网时代&#xff0c;如何有效地引流已成为网站运营者面临的一个重要问题。 站外引流是指通过在其他网站或平台上建立链接或发布内容&#xff0c;将流量引导到自己的网站&#xff0c;提高自己网站的访问量。 本文将为大家揭秘站外引流的十大技巧&#xff0c;帮助大…

python项目搭建(上)

提示&#xff1a;惊觉相思不露&#xff0c;原来只因已入骨 文章目录前言软件的安装HTTP协议1.安装Django启动Django路由子表定义数据库创建数据库表过滤条件生成HTML前言 这里是用python搭建的一个**销售管理系统&#xff0c;用于记录个人遇到的一些错误 提示&#xff1a;以下…

软测入门(七)python操作数据文件(Json、yaml、csv、excel、xml)

python操作文件 txt文件 read() : 读取所有readline() : 读取一行readlines() : 读取所有&#xff0c;且以行为单位&#xff0c;放入list列表中 file open(r"F:\abc.txt", "r", encoding"utf-8") # 以utf-8格式读取文件 # 读取所有 # print…

IM即时通讯开发之常用加解密算法与通讯安全讲解

平时开发工作中&#xff0c;我们会经常接触加密、解密的技术。尤其在今天移动互联网时代&#xff0c;越来越多的用户会将数据存储在云端&#xff0c;或使用在线的服务处理信息。这些数据有些涉及用户的隐私&#xff0c;有些涉及用户的财产&#xff0c;要是没有一套的方案来解决…

儿童写作业的台灯怎么选择?2023给孩子买台灯最新推荐一下

儿童年龄比较小&#xff0c;所以眼睛也比较脆弱&#xff0c;然而现在的社会普遍节奏较快&#xff0c;无论是上班族&#xff0c;还是大中小学生&#xff0c;压力都比较大&#xff0c;儿童经常晚上看书、写字学习&#xff0c;眼睛难免劳累&#xff0c;所以儿童台灯最重要的就是柔…

CDGA|给金融科技数据治理的四大建议,从根基上解决问题

随着我国金融科技行业的发展&#xff0c;当前的数据治理水平已无法满足金融反哺实体经济发展的效率需要。 目前主要存在数据基础设施不完善导致的治理根基薄弱核心问题&#xff0c;建议从以下四个方面进行完善数据基础设施&#xff0c;构筑金融科技数据治理体系。 加强顶层设计…

Springboot整合RabbitMQ并使用

1、Springboot整合RabbitMQ 1、引入场景启动器 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency>引入AMQP场景启动器之后&#xff0c;RabbitAutoConfiguratio…

变电站应用监控系统6大优势,你知道几个?

变电站是改变电压、控制和分配电能的场所&#xff0c;发展方向是自动化、数字化、网络化、智能化。 泛地缘科技针对电力行业用户的使用特点&#xff0c;利用电网现有的网络资源&#xff0c;推出集动力监控、环境监理、门禁系统、消防系统、视频监控于一身的物联网云盒监控系统。…

05-思维导图Xmind快速入门

文章目录5.1 认识思维导图5.2 Xmind的主要结构及主题元素5.2.1 Xmind的多种结构5.2.2 主题分类5.2.3 Xmind的主题元素章节总结5.1 认识思维导图 什么是思维导图&#xff1f; 思维导图是一种将思维进行可视化的实用工具。 具体实现方法是用一个关键词去引发相关想法&#xff0…

Hive实战 --- 电子商务消费行为分析

目录 数据结构 Customer表 Transaction表 Store表 Review表 上传数据 创建目录用于存放数据 把本地文件上传到HDFS上 创建外部表 创建数据库 创建表 数据清洗 对transaction_details中的重复数据生成新ID 过滤掉store_review中没有评分的数据 找出PII (personal …

位图/布隆过滤器/海量数据处理方式

位图 位图的概念 所谓位图&#xff0c;就是用每一位来存放某种状态&#xff0c;适用于海量数据&#xff0c;数据无重复的场景。通常是用来判断某个数据存不存在的。 直接来看问题&#xff1a; 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0…

Gradle+SpringBoot多模块开发

关于使用Gradle结合SpringBoot进行多模块开发。 本来是打算使用buildSrc之类的&#xff0c;但是感觉好像好麻烦&#xff0c;使用这种方法就可以实现&#xff0c;没必要采用其他的。 我不怎么会表述&#xff0c;可能写的跟粑粑一样&#xff0c;哈哈哈哈 这是我的项目地址。 存在…

Java速成篇-Day01笔记

提示&#xff1a;这里只记录我个人不熟悉的知识&#xff0c;并非所有内容 笔记目录课程&#xff1a;04-第一行代码① jshell② 对象.方法课程&#xff1a;05-第一份源码① Java开发程序的流程② 入口方法课程&#xff1a;06-常见问题-中文乱码① 乱码原因② 解决方法课程&#…

【基础算法】单链表的OJ练习(4) # 分割链表 # 回文链表 #

文章目录前言分割链表回文链表写在最后前言 本章的OJ练习相对前面的难度加大了&#xff0c;但是换汤不换药&#xff0c;还是围绕单链表的性质来出题的。我相信&#xff0c;能够过了前面的OJ练习&#xff0c;本章的OJ也是轻轻松松。 对于OJ练习(3)&#xff1a;-> 传送门 <…

华为OD机试题,用 Java 解【单词反转】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

在 Docker 安装 Oracle12

说明 单独在Linux上安装Oracle很繁琐&#xff0c;首先需要安装各种依赖&#xff0c;其次安装如果失败了&#xff0c;重新配置安装也挺麻烦&#xff0c;所以如果是开发或者测试的时候使用Docker来进行安装会非常的方便。 搜索了很多的oracle相关镜像&#xff0c;选择一个适合自…

【Linux】-- 基本指令

目录 用户管理 adduser passwd userdel pwd ls指令 -l -a -d -F -r -t -R -1 which alias ll ls -n cd cd - cd ~ touch -d stat mkdir -p rmdir rm -r -f man cp ​编辑 -r -f mv cat -n tac more less -N head tail | 管道 dat…