【GIT】Git常用命令学习

news2024/9/19 22:37:02

Git常用命令学习

说明:<>表示占位符的说明,[]表示可选,/表示“或”

仓库操作

  1. 初始化创建一个本地仓库

    git init
    
  2. 克隆远程仓库至本地

    git clone <远程仓库地址> [仓库名称]	#可以加上自定义仓库名称
    
  3. 配置仓库

    git config user.name <用户名>
    git config user.email <邮箱>
    

    等价于在.git/config文件中添加:

    [user]
    	name = zcongfly
    	email = zcongflying@qq.com
    

    如果向对所有仓库进行全局配置

    git --global config user.name <用户名>
    git --global config user.email <邮箱>
    

    此时修改的则是C盘下的用户根目录的.gitconfig文件。

文件操作

  1. 查看文件暂存区状态

    git status
    
    # 1.当前文件夹(工作区)中没有任何文件
    On branch master	#在master分支
    No commits yet		#目前没有提交状态
    nothing to commit (create/copy files and use "git add" to track)	#没有文件可供提交
    
    # 2.当前文件夹(工作区)中有文件但是还没有添加进暂存区,会显示这样的信息
    On branch master
    No commits yet
    Untracked files:	#存在一个未追踪文件a.txt
      (use "git add <file>..." to include in what will be committed)
            a.txt
    nothing added to commit but untracked files present (use "git add" to track)	#没有文件被提交但是有一个未追踪的文件
    
    # 3.当前文件夹(工作区)中有文件且已经被添加进暂存区中
    On branch master
    No commits yet
    Changes to be committed:	#有文件可供提交至存储区
      (use "git rm --cached <file>..." to unstage)
            new file:   a.txt
            
    # 4.当前文件夹(工作区)已执行过一次或以上的提交命令,目前没有文件
    On branch master 
    nothing to commit, working tree clean
    
  2. 添加工作区文件至暂存区中

    git add <文件名>/-A	# -A表示将工作区中的所有文件添加到暂存区中
    

    注意,这里的文件名支持用通配符,如*.txt可以代表所有以txt结尾的文件,其余涉及到文件名的参数通常都支持通配符。

  3. 将暂存区的文件移动回工作区

    git rm --cached <文件名>
    
  4. 将暂存区的文件提交至存储区

    git commit -m `<提交说明信息>`
    

    这里的-m表示message,指描述信息。

  5. 查看历史提交记录

    git log [--oneline] # 加上--oneline表示只用一行显示日志信息,此时会省略掉作者和日期
    
    commit 5b29c03e7def3e9f404d0572eef772ea7f3ce955
    Author:lihaibo <15811009164@163.com> (HEAD -> master)
    Date:Wed Mar 29 10:35:31 2023 +0800
    	第二次新增文件
    
    commit bdb56b85f63449b1b&4f1b0bec5621b6126b140d
    Author:lihaibo <15811009164@163.com>
    Date:Wed Mar 29 10:32:16 2023 +0800
    	第一次新增文件
    
    # 加上--oneline的输出结果
    5b29c03 (HEAD -> master) 第二次新增文件
    bdb56b8 第一次新增文件
    
  6. 误删除当前文件夹(工作区)中的文件,如果向找回误删除的文件,需要从存储区恢复误删除的文件到暂存区(只是删除了工作区中的文件,未影响到存储区的文件)

    git restore <文件名>
    

    注意,这种做法只有当执行删除操作尚未执行提交操作时,可以恢复误删除的文件,如果执行力提交操作则恢复不了。

  7. 退回上一版本

    如果误操作了文件并且已执行提交操作,可通过退回上一版本撤销操作

    git log --oneline	# 查看提交日志
    
    5b29c03 (HEAD -> master) 第二次新增文件
    bdb56b8 第一次新增文件
    
    git reset --hard bdb56b8
    
    HEAD is now at bdb56b8 第一次新增文件
    
    git log --oneline	# 查看提交日志
    
    bdb56b8 (HEAD -> master) 第一次新增文件
    
  8. 恢复版本

    reset操作退回了上一版本,但同时也丢弃了当前版本的操作记录。如果既希望能恢复误操作的文件,又希望保留当前版本的操作该如何操作?

    git revert <版本号>	# 如果想退回bdb56b8版本但同时希望保留5b29c03版本,填5b29c03
    
    [master 5b29c03] Revert "第二次新增文件"
    1 file changed, O insertions(+), 0 deletions(-)
    create mode 100644 a. txt
    
    git log --oneline
    
    d7583ak (HEAD -> master) Revert "第二次新增文件"
    5b29c03 第二次新增文件
    bdb56b8 第一次新增文件
    

    实际上,恢复版本相当于重新执行了一次新的提交操作。

分支操作

  1. 创建分支

    git branch <分支名称>
    

    注意,git中的分支时基于提交操作的,得先有提交操作再创建分支。

  2. 查看当前分支

    git branch -v
    
    * master af42a21 aaaa	# 前面有*的表示当前分支
      user   af42a21 aaaa
    
  3. 切换分支

    git checkout user
    
  4. 创建并切换分支

    git checkout -b order
    
  5. 删除分支

    git branch -d user
    
  6. 合并和冲突

    合并两个分支,需要先切换到master分支,再把其他分支合并到master。当两个分支中存在同名文件时,会发生文件冲突,需要人工进行处理。

    master分支有a.txt、c.txt两个文件,order分支有b.txt、c.txt两个文件,其中c.txt的文件内容不相同。

    git checkout master
    git merge order
    
    Auto-merging c.txt
    CONFLICT (add/add): Merge conflict in c.txt
    Automatic merge failed; fix conflicts and then commit the result.
    

    此时,分支变为master|MERGING,表示正在合并,点开c.txt文件,可以看到两个同名文件的内容被整合到一个c.txt文件里并被标注了内容来源:

    <<<<<<< HEAD
    cccc	#原master分支中c.txt文件的内容
    =======
    3333	#原order分支中c.txt文件的内容
    >>>>>>> order
    

    将原有内容清空,替换成c.txt文件想要保留的内容,重新add和commit该文件:

    git add c.txt
    git commit -m cc33
    

    提交成功后,可以发现分支由master|MERGING变回了master

标签操作

  1. 添加标签(别名)

    git log命令可以查看所有历史版本的提交操作,git log <版本号>可以查看特定版本号的提交操作:

    git log
    
    commit e392852bb03f543d29fa5d302c8fe530c48ae599
    Author: zcongfly <zcongflying@qq.com>
    Date:   Mon Jul 3 09:07:55 2023 +0800
    
        bbbb
    
    commit af42a2165d21d09be8e3c6b5d82fe586ac40444d
    Author: zcongfly <zcongflying@qq.com>
    Date:   Mon Jul 3 09:00:29 2023 +0800
    
        aaaa
    
    git log af42a2165d21d09be8e3c6b5d82fe586ac40444d
    
    commit af42a2165d21d09be8e3c6b5d82fe586ac40444d
    Author: zcongfly <zcongflying@qq.com>
    Date:   Mon Jul 3 09:00:29 2023 +0800
    
        aaaa
    

    但是,版本号太长了,不好记而且让人不明所以,因此可以给每一步提交操作产生的版本起一个别名,即打上一个标签,这样,便可以通过别名访问到特定的版本。

    git tag <标签名> <版本号>
    git log <标签名>	#等价于git log <版本号>
    
    git tag uptafile af42a2165d21d09be8e3c6b5d82fe586ac40444d
    git log --oneline
    
    e392852 bbbb
    af42a21 (tag: uptafile) aaaa
    
  2. 删除标签

    git tag -d <标签名>
    

    除了用于标记每一步提交操作产生的版本的别名外,标签还可以直接被拿来创建分支,意为“对每一步操作创建一个分支”。

    git checkout -b <要新建分支的名称> <标签名>
    
    git checkout -b abranch uptafile
    git log
    
    commit af42a2165d21d09be8e3c6b5d82fe586ac40444d (HEAD -> abranch, tag: uptafile)
    Author: zcongfly <zcongflying@qq.com>
    Date:   Mon Jul 3 09:00:29 2023 +0800
    
        aaaa
    

远程仓库

从GitHub或Gitee等远程仓库克隆到二八年底的仓库本身跟远程仓库就有关联,可以从.git/config文件中查看具体情况:

[remote "origin"]
	url = git@gitee.com:zcongfly/git_test.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

使用过程中,可以使用名称origin代替urlurl为克隆时从远程仓库中拷贝下来的地址,可以是https地址、ssh地址或者其他地址。

  1. 查看本地仓库关联的远程仓库

    git remote -v
    
  2. 关联本地仓库与远程仓库

    如果本地仓库没有与远程仓库建立关联,可以通过如下命令进行关联

    git remote add <要关联的远程仓库的名称> <远程仓库地址>
    
    git remote add origin git@gitee.com:zcongfly/git_test.git
    

    执行上面的命令后,.git/config文件中会被添加类似的配置信息。

  3. 删除本地仓库与远程仓库的关联

    git remote remove <远程仓库的名称>
    
  4. 重命名远程仓库的名称

    git remote rename <新的远程仓库的名称>
    
  5. 本地仓库的更新内容推送到远程仓库

    git push <远程仓库的名称或url>
    
  6. 拉取远程仓库的更新内容

    git pull <远程仓库的名称或url>
    

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

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

相关文章

Linux的动静态库

动静态库 1. 见一见动静态库2. 动静态库概念2.1 为什么要有动静态库2.2 定义 3. 写一写——库的设计角度打包成静态库打包成动态库 4. 用一用——使用者角度4.1 直接使用头文件和源文件&#xff08;直接给源代码&#xff09;4.2 得到头文件和源文件进过处理后形成的二进制文件.…

C++ - 20230703

一. 思维导图 二.练习 全局变量&#xff0c;int monster 10000;定义英雄类hero&#xff0c;受保护的属性string name&#xff0c;int hp,int attck&#xff1b;公有的无参构造&#xff0c;有参构造&#xff0c;虚成员函数 void Atk(){blood-0;}&#xff0c;法师类继承自英雄类…

SpringCloud:微服务技术

一、认识微服务&#xff1a; 首先&#xff0c;微服务架构不等于SpringCloud&#xff0c;微服务架构是一种经过良好架构设计的分布式架构方案&#xff0c; &#xff0c;它将应用构建成一系列按业务领域划分模块的&#xff0c;小的自治服务&#xff0c;并解决服务拆分所产生的各种…

css基础知识十五:如果要做优化,CSS提高性能的方法有哪些?

一、前言 每一个网页都离不开css&#xff0c;但是很多人又认为&#xff0c;css主要是用来完成页面布局的&#xff0c;像一些细节或者优化&#xff0c;就不需要怎么考虑&#xff0c;实际上这种想法是不正确的 作为页面渲染和内容展现的重要环节&#xff0c;css影响着用户对整个…

DL环境安装之GCC9,Python9与IDE连接远程环境:python notebook,解释器,C toolchain

文章目录 一.安装gcc91. 设置x86 centos7 yum源2. 编译安装 二、安装python3.91.前置依赖2. 编译安装3.建立软连接或环境变量 三、IDE连接远程环境1.IDE 远程notebook2.IDE 远程Python解释器3.远程toolchain &#xff08;后续可能有用&#xff09; 一.安装gcc9 系统自带的cc可…

2023亚马逊云科技中国峰会——Amazon DeepRacer

1.DeepRacer技术背景 早在20世纪初汽车问世之时&#xff0c;发明家们便已提出无人驾驶的设想。但即便是实现无人驾驶的初级阶段&#xff0c;也经历了足足百年时间。毕竟在复杂的城市路况下&#xff0c;机器若想像人一样实现感知、决策、控制等功能&#xff0c;必定面临各种复杂…

Simulink仿真模块 - Product

Product:标量和非标量的乘除运算或者矩阵的乘法和逆运算 库:Simulink / Commonly Used Blocks Simulink / Math Operations HDL Coder / Commonly Used Blocks HDL Coder / HDL Floating Point Operations HDL Coder / Math Operations 模型为: 双击模型打开参数设置界面为…

静电测试仪如何在生产中帮助我们

静电测试仪在生产中可以帮助我们进行静电防护和质量控制。以下是它在生产中的具体帮助&#xff1a; 1. 静电防护&#xff1a;静电测试仪可以用来测量物体表面的静电电荷&#xff0c;通过监测静电电荷的大小和分布情况&#xff0c;预防静电产生和积累&#xff0c;降低产品受到静…

如何快速构建一个交互式的JavaScript UI仪表板?用DHTMLX很简单!

DHTMLX Suite包含了超过20个UI小部件&#xff0c;可以帮助开发功能齐全的Web应用程序。例如&#xff0c;开发者可以创建一个全面的仪表板来可视化和监控票务系统的性能。 在本文这个JavaScript仪表板教程中&#xff0c;我们将介绍如何在DHTMLX Suite UI小部件和Optimus微框架的…

Android性能优化-数据结构

本文链接&#xff1a;Android性能优化-数据结构_猎羽的博客-CSDN博客 云笔记链接&#xff1a;https://note.youdao.com/s/84OhDByE

SysML建模示例水蒸馏器图形大全(从图16.1到图16.30)EA从零开始复刻

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集

图像聚类算法

什么是分类 分类 分类其实是从特定的数据中挖掘模式&#xff0c;作出判断的过程。 分类学习主要过程&#xff1a; &#xff08;1&#xff09;训练数据集存在一个类标记号&#xff0c;判断它是正向数据集&#xff08;起积极作用&#xff0c;不是垃圾短信&#xff09;&#xf…

C++与JAVA中迭代器的不同

1.C迭代器 #include <iostream> #include <vector> using namespace std;int main() {vector<int> vec;for(int i 0; i < 10; i) vec.push_back(i);for(std::vector<int>::iterator it vec.begin(); it ! vec.end(); it) {cout << "…

以太网常见设备(五)

目录 一、网卡 二、中继器 三、集线器 四、网桥 五、2层交换机 六、路由器 七、网关 一、网卡 网卡&#xff0c;全称网络接口卡&#xff0c;有时也叫做网络适配器、网卡、LAN卡。是计算机连接网络的接口。 二、中继器 中继器是OSI模型第1层物理层面上延长网络的设备。其…

pdf怎样转换成ppt格式?分享简单快捷的方法!

PDF和PPT是两种常见的文件格式&#xff0c;它们在使用场景上有所不同。PDF适合单独阅读和查看&#xff0c;而PPT则更适合在多人演讲时进行演示。有时候我们需要将PDF文件转换为PPT格式&#xff0c;以便进行演示、分享或修改。这在教育培训行业尤其常见&#xff0c;教师经常需要…

01-基础入门-概念名词

基础入门-概念名词 基础入门-概念名词1、域名&#xff08;1&#xff09;什么是域名&#xff08;2&#xff09;在哪里注册域名&#xff08;3&#xff09;二级域名和多级域名&#xff08;4&#xff09;域名对安全测试的意义 2、DNS&#xff08;1&#xff09;什么是DNS&#xff08…

常用开发功能——批量文件导出

某天工作接到一个需求&#xff1a;批量导出场站的订单信息&#xff0c;一个场站一个Excel文档&#xff1b; 与单个文件导出的区别在于&#xff0c;单个导出一次性只导出一个文件&#xff0c;在输出流中写入这一个文件即可&#xff0c;那么如何一次性导出多个文件&#xff1f;难…

茶叶小程序怎么做

茶叶小程序商城是一个专为茶叶爱好者打造的购物平台&#xff0c;提供了一系列便利的功能&#xff0c;使用户能够轻松选购适合自己口味的优质茶叶。以下是该小程序商城的主要功能介绍&#xff1a; 1. 商品展示&#xff1a;在茶叶小程序商城中&#xff0c;用户可以浏览各种各样的…

点云滤波Filtering

直通滤波 就是设置一个x、y、z方向的一个取值范围&#xff0c;以过滤掉明显不在测试距离范围的点云&#xff1b;使用Intel RealSense或者激光雷达采集的数据&#xff0c;可设置一个x,y,z合理的范围&#xff0c;过滤掉我们不需要的点云。 pcl::PassThrough 是点云库&#xff08;…

4通道AD采集子卡模块有哪些推荐?

FMC134是一款4通道3.2GSPS&#xff08;2通道6.4GSPS&#xff09;采样率12位AD采集FMC子卡模块&#xff0c;该板卡为FMC标准&#xff0c;符合VITA57.4规范&#xff0c;可以作为一个理想的IO模块耦合至FPGA前端&#xff0c;16通道的JESD204B接口通过FMC连接器连接至FPGA的高速串行…