Git开发常用指令及其使用场景

news2025/8/7 19:07:24

目录

  • 前言
  • 一、Git安装
    • 1.1 官网安装
  • 二、配置Git工具
    • 2.1 用户信息配置
    • 2.2 查看配置
  • 三、初始化仓库
    • 3.1 创建仓库
  • 四、常用命令
    • 4.1 git clone拉取远端仓库
    • 4.2 git分支操作
      • 4.2.1 查看分支
      • 4.2.2 分支操作
    • 4.3 撤回操作
      • 4.3.1 撤回删错的分支
      • 4.3.2 撤回提交
    • 4.3 拉取代码操作
    • 4.4 贮存操作
  • 五、使用场景
    • 5.1 克隆仓库
    • 5.2 检出分支
    • 5.3 提交代码
    • 5.4 协作问题
      • 5.4.1 解决冲突(合并、变基)
        • **merge**
        • **rebase**
    • 5.5 特殊场景
      • 5.5.1 选择某次提交单独推送


前言

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。


一、Git安装

1.1 官网安装

官网下载地址
https://git-scm.com/downloads

二、配置Git工具

2.1 用户信息配置

对所有本地仓库的用户信息进行配置
1、对你的commit操作设置关联的用户名
git config --global user.name "[name]"
1.1 修改用户名
git config --global --replace-all user.name "[name]"

2、对你的commit操作设置关联的邮箱地址
git config --global user.email "[email address]"
2.2 修改邮箱地址
git config --global --replace-all uesr.email "[email address]"

3、启用有帮助的彩色命令行输出
git config --global color.ui auto

2.2 查看配置

查看用户名:
git config user.name

查看密码:
git config user.password

查看邮箱:
git config user.email

查看配置信息:
git config --list  

三、初始化仓库

3.1 创建仓库

1、创建文件夹
mkdir my-project

2、进入文件夹
cd my-project

3、git初始化
git init 

==================================
1、2、3 步是基于没有仓库时的操作
==================================
如果仓库存在
1、2、3步可替换为
git clone 远程仓库地址

进入文件夹
cd my-project

4、创建readme文件
touch README.md

5、添加readme文件到暂存状态
git add README.md

	5.1 添加全部
	git add .

6、把暂存状态的文件提交到本地备注为"first commit"
git commit -m "first commit"

7、远端仓库建立连接 名称origin对应远端仓库地址
git remote add origin https://gitee.com/wudixiaofei/my-project.git

8、推送代码至代码仓库 首次提交添加 -u
git push -u origin "master"
	8.1 提交代码到对应分支
	git push origin branch_name

如果有多个仓库需要推送,如gitee、github

远程地址A:'gitee/my-project.git'  //设为'originA'
远程地址B:'github/my-project.git' //设为'originB'

$ git remote add originA giteeurl
$ git remote add originB githuburl

查看本地对应的远程仓库
$ git remote -v

操作追加远程推送B
$ git push originA master:master
$ git push originB master:master

删除与远端建立的连接
$ git remote remove "连接名字"

四、常用命令

4.1 git clone拉取远端仓库

拉取远端仓库
git clone 远程仓库地址

代码拉取下来后,就需要有分支的概念

4.2 git分支操作

4.2.1 查看分支

星号(*)表示当前所在分支

查看远端分支
git branch -r

查看本地分支
git branch

查看所有分支
git branch -a

4.2.2 分支操作

创建新分支 下级用/
git branch dev
git branch dev/featrue

修改本地分支名称
git branch -m oldName newName

检出分支、切换分支到dev
git checkout dev

本地分支推送至远程分支
git push origin 本地分支名:远程分支名
> git push origin develop:develop

删除本地分支
git branch -D branch_name

删除远程分支
git push origin --delete branch_name
> git push origin --delete develop

4.3 撤回操作

4.3.1 撤回删错的分支

1、找到删除branch的 hashgit reflog 

2、创建对应branch
git checkout -b new_branch_name hash

4.3.2 撤回提交

HEAD:它是一个指向你正在工作中的本地分支的指针,可以将 HEAD 想象为当前分支的别名。

HEAD^ 的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2或者HEAD^^

reset 用于本地的commit操作撤回
在这里插入图片描述

1、代码恢复到上一次提交
git reset --mixed HEAD^

参数:
	--mixed 默认参数
	意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作。
	--soft 
	意思是:不删除工作空间改动代码,撤销commit,不撤销git add--hard
    意思是:删除工作空间改动代码,撤销commit,撤销git add . 操作。

2、如果只是修改注释
git commit --amend
会进入默认vim编辑器,修改注释完毕后保存就好了

revert 用于远程push操作的撤回

因为是远程,revert是会有新纪录C2’此时C2’ 的状态与 C1 是相同的。
在这里插入图片描述

git revert HEAD^ 

4.3 拉取代码操作

拉取对应分支代码 
git pull origin branch_name

4.4 贮存操作

用于暂时保存没有提交的工作。运行该命令后,所有没有commit的代码,都会暂时从工作区移除,回到上次commit 时的状态。
1、没有被 add 过的文件不会被贮藏
2、git stash -u 可以把没有被add的文件也被贮藏
(–include-untracked)

SourceTree里的贮藏

1、添加贮藏
git stash save "贮藏备注" 

2、查看贮藏列表
git stash list

3、取出指定内容
git stash apply stash@{0}

五、使用场景

5.1 克隆仓库

小白入职第一天:
1、安配配置git
2、拿到分配的账号登录公司代码仓库如gitlab、gitee、coding
3、账号的安全设置处绑定公钥
4、$ git clone 对应仓库地址
5、大佬安排看看代码,熟悉一下

5.2 检出分支

场景1:小白进了一家私企没几天就来了一个工期3天的新需求,准备要大展身手。
于是,小白checkout出了公司的dev分支,开始大干一番
$ git checkout dev

5.3 提交代码

2天过去了,产品经理问,小白啊,怎么没有看见你的近两天的代码提交呀?还没开始吗?
小白:原来没写好也要提交代码给上级看,那我马上提交。答到:『噢噢,写的差不多了,马上提交』
$ git add .
$ git commit -m "新功能"
$ git push origin 本地分支名:远程分支名

大佬:我刚补的bug合并代码发版了,咦,怎么起不来服务了,一看代码提交,小白你提交的代码有问题,影响到主业务了。
小白:啊(慌了)!
大佬:如果你需要开发新功能,要把当天的代码提交的话,你就在feature新建一个功能就行,测试好我再合并发版。大佬耐心讲到我司规范:

master 是主分支,一般是保护分支,管理员才能操作
dev 是开发分支,开发先拉这个分支
feature 是功能模块,如:
----feature/login (登录功能)
----feature/用户导入 (导入功能)
新增的功能加就行: 『feature/功能名称』
hotfix 修补bug模块,如:
----hotfix/login (修补登录功能)
----hotfix/导入 (修补导入功能)
refactor 重构模块

小白赶忙撤回提交:
$ git log 查看提交日志
找到自己提交的hash,例如:(2c479a5)
$ git revert ${commit hash} ...${commit hash}
revert后那次提交的代码就会被撤回,日志的hash显示为(c18fad1ba),但是我辛辛苦苦写的代码咋就不见了。
于是,创建并切换分支feature/我的功能
$ git checkout -b feature/我的功能
该分支是从当前分支上检出的,所以所有文件内容都和当前分支一模一样。再revert一遍即可
$ git revert c18fad1ba
可以看见,代码都回来了。

5.4 协作问题

场景2 :小白开启了新分支完成功能后准备合并到主分支。
$ git diff dev feature/我的功能
使用diff查看分支差异,发现和大佬提交的代码同时修改了几个文件。

5.4.1 解决冲突(合并、变基)

<<<<<<< 
=======, 
>>>>>>> 

merge

当前分支在主分支,如master

$ git merge 目标分支 --只保留单条分支记录
--no-ff --关闭fast-forward方式,可以查看到分支状态。
--squash – 需要进行一次额外的commit来总结最终的合并。
如果有冲突文件,在这一步处理完
$ git add . – 添加改动
$ git commit -m "merge" – 本地提交
$ git push origin feature/我的功能:master – 推送到master

rebase

当前分支在开发分支,如feature/我的功能

$ git rebase master --rebase操作
如果有冲突文件,在这一步处理完
$ git add . --添加改动
$ git rebase --continue --继续rebase
--abort --放弃合并,回到操作前的样子。
处理完所有冲突后,提示
Successfully rebased and updated refs/heads/feature/我的功能
$ git push origin feature/我的功能:master --推送到master

5.5 特殊场景

5.5.1 选择某次提交单独推送

Git 从(dev)分支选择某次提交单独推送到主(master)分支

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

ChatGPT也有犯晕的时候

前面测试 ChatGPT 进行写代码、优化代码、解释代码、一般问答都表现的很好。偷个懒&#xff0c;用ChatGPT 帮我写段生物信息代码如果 ChatGPT 给出的的代码不太完善&#xff0c;如何请他一步步改好&#xff1f;代码看不懂&#xff1f;ChatGPT 帮你解释&#xff0c;详细到爆&…

详解Redis的主从同步原理

前言 Redis为了保证服务高可用&#xff0c;其中一种实现就是主从模式&#xff0c;即一个Redis服务端作为主节点&#xff0c;若干个Redis服务端作为主节点的从节点&#xff0c;从而实现即使某个服务端不可用时&#xff0c;也不会影响Redis服务的正常使用。本篇文章将对主从模式…

asp.net网站读取app.config配置内容

目录1、情况说明1.1 使用场景1.2 基本概念2、优化1、情况说明 1.1 使用场景 创建了一个网站&#xff08;项目A&#xff09;&#xff0c;又创建了一个访问数据的项目B。项目A因为是个网站&#xff0c;所有会有web.config文件。项目B是一个读取数据库的类库&#xff0c;会有一个…

小樽C++ 单章④ 字符数组与字符串

目录 一、字符与数组 1.求字符数组的长度 2.查找单词 二、字符串与数组 2.1 字符串倒序输出 2.2 字符串比较 2.3 大写字母输出 ​编辑 三、字符串常用函数 一、初始化字符串&#xff1a; 二、字符串操作&#xff1a;(增删改查) 三、截取与替换字符串 四、替换字符串…

从0开始学python -48

Python MySQL - mysql-connector 驱动 MySQL 是最流行的关系型数据库管理系统&#xff0c;如果你不熟悉 MySQL&#xff0c;可以先学习 MySQL 教程。 本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL&#xff0c; mysql-connector 是 MySQL 官方提供的驱动器。 我…

DoubleAccumulator 源码详解

DoubleAccumulator 简介 这个类是新增的并发统计工具&#xff0c;可以多线程安全计数。 他的构造方法有两个参数&#xff0c;分别是统计方法和初始值。所以具体的统计是加减乘除是由传入的操作方法决定的。 public DoubleAccumulator(DoubleBinaryOperator accumulatorFunct…

​力扣解法汇总1599. 经营摩天轮的最大利润

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;力扣 描述&#xff1a; 你正在经营一座摩天轮&#xff0c;该摩天轮共有 4 个座舱 &#xff0c;每个座舱…

Kubernetes调度之Pod亲和性

Kubernetes调度中的Pod亲和性abstract.pngPod亲和性节点亲和性&#xff0c;是基于节点的标签对Pod进行调度。而Pod亲和性则可以实现基于已经在节点上运行Pod的标签来约束新Pod可以调度到的节点。具体地&#xff0c;如果X上已经运行了一个或多个满足规则Y的Pod&#xff0c;则这个…

在ubuntu上(docker虚拟环境)部署完laravel的环境后如何运行一个基础的laravel项目

先测试laravel有没有安装成功 laravel如果报laravel command not found&#xff0c;先测试是否安装成功 find / -name laravel出现结果&#xff1a; 说明已经安装成功只是没有配环境变量 要么进这些文件夹测试那个路径下有真的laravel可执行文件&#xff0c;要么每个分别配置…

MCP2515国产替代DP2515带有SPI 接口的独立CAN 控制器

DP2515是一款独立控制器局域网络&#xff08;Controller AreaNetwork&#xff0c; CAN&#xff09;协议控制器&#xff0c;完全支持CAN V2.0B 技术规范。该器件能发送和接收标准和扩展数据帧以及远程帧。DP2515自带的两个验收屏蔽寄存器和六个验收滤波寄存器可以过滤掉不想要的…

图像处理--基于像素层面

python 图像锐化 图像锐化可以使图像的边缘更加清晰&#xff0c;增强图像的细节。常见的图像锐化算法有拉普拉斯算子、Sobel算子、Prewitt算子等。下面是使用拉普拉斯算子实现图像锐化的Python代码&#xff1a; import cv2 import numpy as npdef laplacian_sharpen(img, ksi…

MySQL日志文件

文章目录1.MySQL中的日志文件2.bin log的作用3.redo log的作用4.bin log和redo log的区别&#xff08;1&#xff09;存储的内容&#xff08;2&#xff09;功能&#xff08;3&#xff09;写入时间&#xff08;4&#xff09;写入方式5.两阶段提交6.undo log的作用1.MySQL中的日志…

springcloud3 fegin实现服务调用1

一 Fegin的作用 1.1 fegin的作用 fegin是一个声明式的web服务客户端&#xff0c;让编写web服务器客户端变得非常容易&#xff0c;只需创建一个接口并在接口中添加FeginClients注解即可。 Fegin的使用方式&#xff1a;使用fegin的注解定义接口&#xff0c;调用这个接口&#…

BI软件工具也有ChatGPT

ChatGPT最近大火&#xff0c;朋友圈、聊天群啊到处都在分享它、讨论它。我也凑了个热闹&#xff0c;先和它聊了一下孩子学习上的困惑&#xff0c;然后用它给孩子出了一套易错题型的练习题&#xff0c;缓解了我做为熊孩子家长的压力。ChatGET能做的可不止这些&#xff0c;还能写…

MTK平台开发入门到精通(休眠唤醒篇)休眠唤醒LPM框架

文章目录 一、lpm驱动源码分析二、设备属性调试文件沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 lpm 驱动源码分析。 mtk 平台下,其默认的 lpm 机制的源码位置:drivers/misc/mediatek/lpm/ 一、lpm驱动源码分析 目录:drivers/misc/mediatek/lpm/…

aardio 编程语言

今天看到一篇文章《独自坚持 17 年&#xff0c;aardio 作者&#xff1a;“因妻子患癌&#xff0c;再无精力维护项目”》&#xff0c;才知道有个这个项目&#xff0c;也算是很有情怀的一个开发者&#xff0c;对程序有着真挚的热忱&#xff0c;aardio &#x1f50a; 专注于桌面软…

Unity Avatar Cover System - 如何实现一个Avatar角色的智能掩体系统

文章目录简介变量说明实现动画准备动画状态机State 状态NoneStand To CoverIs CoveringCover To Stand高度适配高度检测脚部IK简介 本文介绍如何在Unity中实现一个Avatar角色的智能掩体系统&#xff0c;效果如图所示&#xff1a; 初版1.0.0代码已上传至SKFramework框架Package…

数据库系统-关系模式

二、DB的抽象与演变 2.1 DB的标准结构 DBMS管理数据的三个层次 ● (局部模式)Entrenal Level 外部层次 User Level 用户层次 ○ 用户能够看到雨处理的数据&#xff0c;全局数据中的某一部分 ● (全局模式)Conceptual Level 概念层次 Logic Level 逻辑层次 ○ 从全局角度理解…

【Linux】编译器gcc g++和调试器gdb的使用

文章目录1.编译器gcc/g1.1C语言程序的翻译过程1.预处理2.编译3.汇编4. 链接1.2 链接方式与函数库1.动态链接与静态链接2.动态库与静态库1.3 gcc与g的使用2.调试器gdb2.1debug和release2.2gdb的安装2.3gdb的使用2.4gdb的常用指令3.总结1.编译器gcc/g 1.1C语言程序的翻译过程 1…

一个ELF文件分析和逆向的过程

CrackMe1、2分析和逆向的过程 1. CrackMe1、2相关信息 CrackMe1 1、CrackMe1是一个ELF可执行文件&#xff0c;可在Android中独立执行 2、通过adb(Android SDK中默认带有adb工具)将CrackMe1 push到远程Android设备中&#xff0c;建议放在/data/local/tmp目录下 3、打开adb shel…