实际开发中常用的Git操作

news2024/11/17 10:51:31

文章目录

  • 前言
  • 基础知识
    • 集中式版本控制 - SVN
    • 分布式版本控制 - Git
    • 常用的Linux命令
    • Git工作区域
  • Git 常用命令
    • 获取Git仓库
    • 添加/提交/推送/删除/回退文件
    • 查看信息
    • Git分支
    • Git标签
    • Gitk:一个排查Git问题的工具

前言

git是用C语言开发的,以追求最高的性能。git自动完成垃圾回收,也可以用命令git gc --prune直接调用。

基础知识

集中式版本控制 - SVN

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。

所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。

分布式版本控制 - Git

每个人都拥有全部的代码。

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

不会因为服务器损坏或者网络问题,造成不能工作的情况!

Git下载:https://git-scm.com/

Git Bash应用:Unix与Linux风格的命令行,使用最多,推荐最多;

Git GUI应用:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令;

GitK命令:内建的图形化 git,打开Git Bash进入相应的git仓库输入gitk即可。

常用的Linux命令

cd		进入目录
cd ..	回退上一个目录
pwd		显示当前所在目录路径
ls(ll)	列出当前目录中所有文件,后者更为详细(加-al查看隐藏文件)
touch	新建一个文件如touch test.txt就会在当前目录下新建test.txt文件
rm		删除一个文件如rm test.txt就会删除当前目录下的test.txt文件(加-rf删除文件夹无需确认)
mkdir	新建一个文件夹

Git工作区域

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、本地仓库、远程仓库(Remote Directory)

Workspace:工作区,就是你平时存放项目代码的地方;
Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息;
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本;
Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。

日常使用要记住上图6个命令 + review操作:

git clone - 克隆
git checkout - 检出
git add - 增加
git commit - 提交
git push - 推送
git pull --rebase - 拉取
git review branch_name - review
团队内会有一位Code reviewer,负责代码管理的,团队成员一般执行完git commit之后,不会自己手动执行git push,而是执行git review,而后有reviewer检验完代码后,进行git push。

Git 常用命令

获取Git仓库

当前目录新建一个Git代码库
$ git init


从远程克隆
$ git clone 远程Git仓库地址
$ git clone -b 分支名 远程Git仓库地址


显示所有远程仓库
$ git remote -v

添加远程仓库
$ git remote add 名称 url地址
$ git remote add origin git@github.com:XXX/XXX.git


移除远程仓库 - 只是在本地移除记录,并不会影响远程仓库
$ git remote rm 名称 (一般是origin)

从远程拉取代码
$ git pull 名称 (一般是origin) 分支名 (master分支)
$ git pull 名称 分支名 --allow-unrelated-histories

git pull = git fetch + git merge FETCH_HEAD
​git pull --rebase = git fetch + git rebase FETCH_HEAD

​**
解决连接远程仓库出现ssl认证问题
$ git config --global http.sslVerify “false”


测试一下通不通
$ ssh -T git@github.com

添加/提交/推送/删除/回退文件

添加指定文件到暂存区,如果是多个文件,使用空格分隔
$ git add 文件 文件 …
当前目录及其子目录的文件都加入到暂存区
$ git add .


代码从暂存区提交到本地仓库
$ git commit -m “描述信息”

**本地推送到远程仓库
$ git push 名称 (一般是origin) 分支名 (master分支)
第一次提交
$ git push -u origin 分支名
需要输入用户名和密码

删除文件
$ git rm 文件

将暂存区文件取消暂存
$ git restore --staged 文件


将本地仓库文件回退到上个版本
$ git reset --hard HEAD^


回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard HEAD~3

退到/进到 指定commit的sha码,提交ID可使用git log查看
$ git reset --hard 提交ID

查看信息

查看文件状态
$ git status


查看文件修改哪些内容
$ git diff


查看日志记录
$ git log


查看当前分支的版本历史
$ git log

搜索提交历史,根据关键词
$ git log -S 关键词

显示指定文件是什么人在什么时间修改过
$ git blame 文件

显示今天你写了多少行代码
$ git diff --shortstat “@{0 day ago}”

显示当前分支的最近几次提交
$ git reflog


显示所有提交过的用户,按提交次数排序
$ git shortlog -sn

Git分支

查看本地分支
$ git branch
查看远程分支
$ git branch -r
查看远程全部分支
$ git branch -a


创建分支
$ git branch 分支名

切换分支
$ git checkout 分支名

将本地分支推送到远程仓库
$ git push orighn 分支名

合并分支
$ git merge 分支名
例子:将b分支合并到a分支下
$ git checkout a
$ git push orighn b

删除分支
$ git branch -b 分支名
强制删除
$ git branch -D 分支名
删除远程仓库分支
$ git push orighn -b 分支名

代码冲突解决
打开冲突文件并修复冲突内容,最后执行git add命令

Git标签

创建标签
$ git tag 标签名

查看标签
$ git tag

查看信息
$ git show 标签名

将当前标签推送远程仓库
$ git push origin 标签名

检出标签 - 在新的基础上创建新的分支再进行开发
$ git checkout -b 新的分支名 标签名

删除本地标签
$ git tag -d 标签名
删除远程仓库标签
$ git push origin :refs/tags/远程仓库标签名

Gitk:一个排查Git问题的工具

gitk是一个非常强大的图形化工具,现在安装git会自带gitk的应用程序,在代码库的根目录下直接输入gitk会打开这个界面:
在这里插入图片描述
gitk的主界面主要包含5个部分:

  1. 主菜单栏显示区
  2. 提交信息显示区,显示提交的基本信息,包括节点树、message、提交人和提交时间
  3. 查询条件检索区,根据检索条件查找的窗口
  4. 具体内容显示区,显示 commit 的变更记录或两个 commit 的 diff 内容
  5. 文件列表显示区,显示的commit的文件列表或两个commit的diff文件列表

每个点代表一次提交,线代表父子关系,而彩色的方块则用来标示一个个引用。 黄点表示 HEAD,红点表示尚未提交的本地变动。

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

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

相关文章

GEO生信数据挖掘(六)实践案例——四分类结核病基因数据预处理分析

前面五节,我们使用阿尔兹海默症数据做了一个数据预处理案例,包括如下内容: GEO生信数据挖掘(一)数据集下载和初步观察 GEO生信数据挖掘(二)下载基因芯片平台文件及注释 GEO生信数据挖掘&…

香港服务器在大陆连不上怎么回事?

众所周知,香港服务器与中国内地的网络连通性是比较好的,不仅是机房地理距离的加持,还有就是利用CN2 GIABGP高速线路,参考恒创科技香港服务器访问内地网站,无需绕国际线路转换再到大陆,访问速度会比较快。但…

几行cmd命令,轻松将java文件打包成jar文件

1. 在任意目录下建立一个.java文件 2. 在当前目录下使用cmd命令: javac filename编译 如果报错则使用此命令javac -encoding UTF-8 filename 3.此时已成功生成.class文件 4. 可以手动添加MANIFEST.MF文件 Manifest-Version: 1.0 Main-Class: fileName 5.直接一…

实施运维01

一.运维实施工程师所具备的知识 1.运维工程师,实施工程师是啥? 运维工程师负责服务的稳定性,确保服务无间断的为客户提供服务. 实施工程师负责工程的实施工作,负责现场培训,一般都要出差,哪里有项目就去…

掌动智能:性能测试工具优势有哪些

由于应用程序的性能直接影响用户体验和满意度。而性能问题可能会导致应用响应缓慢、崩溃或无法处理大量用户请求。为了确保应用程序的高性能和可靠性,开发团队需要对应用程序进行性能测试。性能测试工具能够模拟真实场景下的负载并监测应用程序的性能表现&#xff0…

openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw

文章目录 openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw95.1 使用postgres_fdw95.2 postgres_fdw下推主要成分95.3 常见问题95.4 注意事项 openGauss学习笔记-95 openGauss 数据库管理-访问外部数据库-postgres_fdw openGauss的fdw实现的功能是各个…

基于SSM的医用物理学实验考核系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

IDEA的使用(二)快捷键 (IntelliJ IDEA 2022.1.3版本)

1. IDEA中的常用快捷键 1.1 通用型快捷键 1.2 提高编写速度 ctrl shift ↑或↓ 只能在方法里面移动代码。 alt shift ↑或↓ 可以向方法外移动代码。 设置过自动导包,所以不用批量导包啦。 1.3 类结构、查找和查看源码 1.4 查找、替换和关闭 1.5 调整格式 1.6 De…

WebSocket协议:实现实时双向通信的秘诀

目录 🐇今日良言:海压竹枝低复举,风吹山角晦还明 🐇一、WebSocket协议介绍 🐇二、WebSocket如何使用 🐇三、WebSocket和HTTP的区别 🐇今日良言:海压竹枝低复举,风吹山…

Spark分布式计算原理

一、Spark WordCount运行原理 二、划分Stage 数据本地化 移动计算,而不是移动数据 保证一个Stage内不会发生数据移动 三、Spark Shuffle过程 在分区之间重新分配数据 父RDD中同一分区中的数据按照算子要求重新进入RDD的不同分区中 中间结果写入磁盘 有子RDD拉取数…

【分享】获取微信通讯录python代码形式实现

具体流程就是: 1. 打开微信 2. 点击通讯录 3. 滚动鼠标到最顶部(防止已经滚动了一部分了) 4. 获取联系人列表 5. 找到最后一个空格所在的位置(后一个就是真正的联系人了) 6. 点击第一个联系人 7.记录下上一个联…

Docker-compose创建LNMP服务并运行Wordpress网站平台

一、部署过程 1.安装Docker #关闭防火墙 systemctl stop firewalld.service setenforce 0#安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 #设置阿里云镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/d…

联邦学习中的数据非独立同分布问题

联邦学习中的数据非独立同分布(Non-IID) 从集中式机器学习到联邦机器学习 集中式模型:传统的集中式机器学习是将所有的数据收集到服务器端,在服务器端统一进行模型训练和处理,并将预测的结果分发给用户。但将数据上传…

树莓派ubuntu上配置miniconda并创建虚拟环境

树莓派安装ubuntu和miniconda配置 本文所配置环境为:树莓派4B安装的系统为ubuntu 22 server,所配置的miniconda版本为4.2,python版本3.8。在此之前要清楚树莓派4B已经将处理器从arm架构换成了aarch64架构,所以能够使用最新的aarc…

基于SpringBoot的音乐网站

目录 前言 一、技术栈 二、系统功能介绍 用户信息管理 歌曲分类管理 歌曲信息管理 轮播图管理 歌曲信息 歌曲评论 用户注册 三、核心代码 1、登录模块 2、文件上传模块 3、代码封装 前言 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施…

你必须知道的数据查询途径!!

在当今信息爆炸的时代,我们每天都会面临海量的数据和信息。如何在这些繁杂的信息中快速、准确地找到自己需要的内容,也是当代一个非常重要的技能。下面,我将介绍几种你必须知道的企业数据信息查找途径。 ​ 1. 搜索引擎 搜索引擎是我们日常中…

巴州阳光公益人的国庆

原创 何素平 巴州阳光志愿者服务协会 2023-10-10 15:01 发表于新疆 在中华人民共和国成立74周年之际,巴州阳光公益机构的社工志愿者在党支部的组织下,抒发爱国之情,砥砺强国之志,共同祝愿国家繁荣富强,祝福各族人民幸…

JShaman JavaScript混淆加密工具,中英版本区别

JShaman JavaScript混淆加密工具,中英版本区别如下。 中文版,配置简单,网站功能多,支持代码提交、文件上传、WebAPI; 英文版,配置项较多,网站功能简约,不支持文件上传,…

vue接入高德地图获取经纬度

&#x1f90d;step1:高德地图开放平台&#xff0c;根据指引注册成为高德开放平台开发者&#xff0c;并申请 web 平台&#xff08;JS API&#xff09;的 key 和安全密钥; &#x1f90d;step2:在html引入安全密钥&#xff08;获取经纬度用&#xff0c;不然会报错&#xff09; <…

3款国产办公软件,不仅好用,还支持linux国产操作系统

当提到国产办公软件并支持Linux国产操作系统时&#xff0c;以下是三款备受好评的软件&#xff1a; 1. WPS Office&#xff08;金山办公套件&#xff09; WPS Office是中国知名的办公软件套件&#xff0c;也是一款跨平台的应用程序。它包含文字处理、表格编辑和演示文稿等常见办…