Git命令操作【全系列】

news2024/11/13 18:41:46

Git常用命令操作

1 基础命令

①git config --global user.name [‘你的用户名’]:查看/设置

git config --global user.name ziyi:设置用户名为ziyi
git config --global user.name:查看用户名

②git config --global user.email [‘你的邮箱’]:查看/设置

设置邮箱

③git reset HEAD test.txt 取消已经缓存的内容

取消test.txt已经缓存的内容

④git rm --cached <file> 将文件从暂存区删除

⑤git branch 相关命令

git branch : 查看分支
git branch <branchName> :创建分支
git checkout <branchName>:切换分支
git merge <branchName>: 将branchName内容合并到当前分支
git branch -d <branchName>:删除分支

⑥git log相关命令

git log -graph:查看历史中什么时候出现分支、合并
git log --reverse:逆向输出日志
git log --author=ziyi --online -5:简洁版本查看ziyi最近的五次提交

⑦git tag相关命令

git tag:查看所有标签
git tag -a -m “某某标签”:打标签

⑧git reset --soft <commit>:回退版本

  1. git reset --soft <commit>: 回退到指定 commit,保留修改内容,并将这些修改放在暂存区。
  2. git reset --mixed <commit>: 回退到指定 commit,保留修改内容,但将这些修改放在工作目录。
  3. git reset --hard <commit>: 回退到指定 commit,删除所有修改内容,包括暂存区和工作目录中的修改。

⑨git merge --abort:放弃本次合并

本地解决冲突完成之后

  • git status:查看状态
  • git commit -m “xxx”:提交信息
  • git push:推送到远程

2 进阶命令

2.1 fork别人仓库并同步保持更新

  1. 把fork的项目克隆到本地仓库中
  2. Configuring a remote for a fork
  3. Syncing a fork

例如:我fork了一份https://github.com/simplezhli/flutter_deer.git(下文叫做A)到我自己的仓库(下文叫做B)

①git clone B(自己的仓库)

git clone 我自己fork的大佬的项目的GitHub地址

②git remote add upstream A仓库地址

# 查看当前仓库的远程状态
git remote -v
# 被本地仓库添加一个将被同步给 fork 远程的上游仓库
git remote add upstream https://github.com/simplezhli/flutter_deer.git【A仓库地址】
# 这里后面的那个地址就是你fork的项目的源地址

下面会多出两个upstream,说明第二步已经成功了。这就相当于有一个管道在源项目和你fork的项目之间建立了,下面看看如何通信更新。

③同步fork(拉取远程fetch,然后合并到本地)

# 从upstream拉取信息
git fetch upstream [分支名]
# 切换到本地主分支
git checkout master
# 把 upstream/master 分支合并到本地 master 上,这样就完成了同步,并且不会丢掉本地修改的内容。
git merge upstream/master
# 这样,就把源项目同步更新到你的本地仓库中了。 如果再想更新到远程仓库fork(B),只需要:
git push origin master

实操效果图:

在这里插入图片描述

2.2 多个commit合并为1个

一般来说,开源社区提交pr都是需要合并为一个commit的

  1. 比如,我现在有4个commit:
85d5d8fa468b06bb9a62fafde01d80cbb7396682 # 我改的

621ca4121f971d9604e395556763551427d799d9 # 我改的

f744d2e91916ab7831f3a7695d1d1825916db164 # 我改的

5c135e49e683563fa470d7f5c281050ec1d73af9 # 我改的

295ac3b842b4ecb6eff1c9954a281a4606a8bc84 # 别人改的
  1. 我现在想把我提交的commit合并为1个
8403afe13664d6bb7f5a5557716a030e9389a944 # 我改的

295ac3b842b4ecb6eff1c9954a281a4606a8bc84 # 别人改的
  1. 具体操作方法

2.2.1 方法一:合并commitID

先从版本库回退内容到暂存区,再重新提交工作区的内容

  • 思路:使用 git reset --soft 回退版本库和暂存区的版本,同时保留工作区的变动,之后再重新提交工作区的内容就好了。
# 查看前10个commit【找到别人最后一次提交的位置】
git log -10
# 从版本库恢复文件到暂存区,不改动工作区的内容
git reset --soft 295ac3b842b4ecb6eff1c9954a281a4606a8bc84	# 别人改的commitID
# add已经跟踪的文件
git add -u
# 提交
git commit -m "修改信息"
# 强制push以替换远程仓的commitID
git push --force

如果push失败,出现Reject,则需要开启分支强制合入的选项,取消分支保护。

  • Settings -> Repository -> Protected Branches -> Protected branch (找到分支) -> Unprotect

2.2.2 方法二:git rebase

# 查看前10个commit
git log -10
# 将4个commit压缩成一个commit
git rebase -i HEAD~4	
# add已经跟踪的文件
git add -u
# 提交
git commit -m "修改信息"
# 强制push以替换远程仓的commitID
git push --force

注意:git rebase临时创建一个新分支进行,如果弄着出错了,可以 git checkout 原分支名 切换回原分支之后重新 git rebase。

git rebase具体演示:

我想合并前四个 commit 到最后一个。如下所示:

①git log 查看历史提交信息
在这里插入图片描述
②git rebase -i HEAD~n

使用 git rebase -i HEAD~5 压缩5个commit为1个,或者git rebase -i 51efaef517abdbf674478de6073c12239d78a56a (第一个commit的id)

vim编辑器,按i编辑,将后4个commit的pick修改为fixup,保留第一个pick。按esc键,输入:wq保存退出。

  • pick:使用commit。

  • reword:使用commit,修改commit信息。

  • squash:使用commit,将commit信息合入上一个commit。

  • fixup:使用commit,丢弃commit信息。
    在这里插入图片描述
    操作完之后,发现commit都合并成了一个。
    在这里插入图片描述
    ③git push --force 提交
    在这里插入图片描述

3 必备命令

3.1 git remote相关

git remote add [alias] [url]:添加远程仓库
git remote rm [alias]:删除远程仓库

3.2 git fetch相关【拉取最新代码不合并】

git fetch test:从远程仓库test中fetch【有多个远程仓库则指定名字】

如果本地git添加了多个远程仓库,则指定远程仓库名字

3.3 git pull【拉取最新代码并合并】

git pull = git fetch + git merge

3.4 git push

git push [alias] [branch] :推送到指定仓库的指定分支

参考:https://www.jianshu.com/p/021bb953ee8d

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

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

相关文章

React 在Dva项目中修改路由配置,并创建一个自己的路由

之后的话 我们还是来看一下Dva路由的配置 首先 我们在项目刚创建完 他就给了我们一个路径 叫routes 然后 IndexPage.js 是最初的一个组件 之前我们也用过了 然后 我们看到 src目录下的 index.js 这里 就有一个路由的匹配 他加载的就是 同目录下 一个 router的文件 我们点开…

外币兑换----贪心1 (爱思创)

源代码 #include <bits/stdc.h> using namespace std; int main() {double money,maxn-1,r;cin>>money;for(int i1;i<12;i){cin>>r;maxnmax(maxn,money*r);}printf("%0.2f",maxn);return 0; }

阿里云通义万相官网申请地址

通义万相刻削生千变&#xff0c;丹青图“万相”。我是通义万相&#xff0c;一个不断进化的AI绘画创作模型https://wanxiang.aliyun.com/现在申请的人少 应该好通过吧

软考高级之系统架构师系列之系统配置与性能评价、信息化基础

系统配置与性能评价 性能 计算机系统的性能一般包括两个大的方面&#xff1a; 可用性&#xff0c;也就是计算机系统能正常工作的时间&#xff0c;其指标可以是能够持续工作的时间长度&#xff0c;也可以是在一段时间内&#xff0c;能正常工作的时间所占的百分比处理能力&…

MySQL练习题(3)

创建数据库插入数据 CREATE TABLE emp ( empno int(4) NOT NULL, ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, mgr int(4) NULL DEFAULT N…

ndoe中express框架的基本使用,接收get、post请求,以及处理回调地狱的优雅解决方法

一、express框架的基本使用 Express框架是Node.js中最受欢迎的web开发框架&#xff0c;它的设计简洁而且功能强大&#xff0c;有着大量的插件和社区支持。 基于Express使用Node.js创建web应用的基本步骤如下&#xff1a; 首先你需要安装Node.js和npm&#xff08;Node包管理器…

拥抱简洁:探索Stylus的简洁语法与CSS预处理器之美

文章目录 1. 简洁的语法2. 强大的功能3. 嵌套规则4. 变量支持5. Mixin 混合6. 扩展支持7. 条件语句8. 内置函数9. 可扩展性10. 轻量高效附录&#xff1a;前后端实战项目&#xff08;简历必备&#xff09; 推荐&#xff1a;★★★★★ Stylus 是一种 CSS 预处理器&#xff0c;具…

OpenCV 入门教程:Laplacian算子和Canny边缘检测

OpenCV 入门教程&#xff1a; Laplacian 算子和 Canny 边缘检测 导语一、Laplacian 算子二、Canny 边缘检测三、示例应用3.1 图像边缘检测3.2 边缘增强 总结 导语 边缘检测在图像处理和计算机视觉领域中起着重要的作用。 Laplacian 算子和 Canny 边缘检测是两种常用的边缘检测…

pytorch-Tensor

神经网络的数据存储中都使用张量&#xff08;Tensor&#xff09;&#xff0c;那张量又是什么呢&#xff1f; py 张量这一概念的核心在于&#xff0c;它是一个数据容器。它包含的数据几乎总是数值数据&#xff0c;因此它是数字的容器。你可能对矩阵很熟悉&#xff0c;它是二…

商城小程序页面展示

——首页登录&#xff08;wx.login()&#xff0c;getPhoneNumber&#xff09; 进入首页时&#xff0c;加载商品列表数据展示在页面。从缓存中获取token信息&#xff0c;判断用户登录状态&#xff0c;如果用户没有登录&#xff0c;调用微信小程序的login方法&#xff0c;进行登…

Spring Boot原理分析(二):项目启动(下)——自动装配

文章目录 一、Spring手动装配1.使用XML配置文件2.使用Java注解3.使用Java类 二、Spring Boot自动装配1.AutoConfigurationPackage2.Import(AutoConfigurationImportSelector.class) 一、Spring手动装配 Spring Framework提供了多种手动装配的方式&#xff0c;其中比较常见的有…

硬盘被程序使用

diskutil list diskutil umount /dev/disk2s1退出该进程 硬盘即可成功退出

springboot+redis+mysql+quartz-通过Java操作jedis使用pipeline获取缓存数据定时更新数据库

一、重点 代码讲解&#xff1a;6-点赞功能-定时持久化到数据库-pipelinelua-优化pipeline_哔哩哔哩_bilibili https://www.bilibili.com/video/BV1yP411C7dr 代码&#xff1a; blogLike_schedule/like06 xin麒/XinQiUtilsOrDemo - 码云 - 开源中国 (gitee.com) https://g…

ubuntu下,verdi语法错误Syntax error: “(“ unexpected

【问题】/home/EDA_TOOLS/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdi: 56: /home/EDA_TOOLS/synopsys/verdi/verdi/Verdi_O-2018.09-SP2/bin/verdi: Syntax error: "(" unexpected 【解析】 代码对于标准bash而言没有错&#xff0c;因为Ubuntu/Debian为了加…

网络应用基础交换机的基础操作(NETBASE第六课)

网络应用基础交换机的基础操作&#xff08;NETBASE第六课&#xff09; 1 回顾代码实操 主题背景的转换 字体设置 背景的设置 第一点 在操作ENSP个人建议要关闭防火墙 第二点 在操作ENSP软件是观察下面的软件是否全部关闭了 第三点 打开软件 ENSP软件注册信息 操作如下 注册前…

Oracle之Scott用户

Oracle增删改查&#xff0c;事务与序列 前言 1、解锁scott用户 2、雇员表&#xff08;emp&#xff09; 3、部门表&#xff08;dept&#xff09; 4、工资等级表&#xff08;salgrade&#xff09;了解 5、奖金表&#xff08;bonus&#xff09;了解 1、解锁scott用户 --解锁scot…

对卷积和全连接之间关系的学习(1*1卷积与全连接层可以互换吗?)

1.对于卷积和全连接 首先我们看一张图&#xff0c;它是一张关于卷积的操作&#xff1a; 然后在看关于全连接的操作&#xff1a; 从上面两张图中可以看出卷积的过程和全连接的过程&#xff0c;我们利用粉色的卷积核在image上进行卷积&#xff0c;进行内积计算得到输出值3&#…

调用GPU进行深度学习模型训练问题检查总结

1、电脑是否具有nvidia的GPU显卡。 2、安装的cuda版本是否超过显卡支持的最高版本。 在nvidia设置->帮助->系统信息->组件&#xff0c;可查看。 3、安装的pytorch是否为gpu版&#xff0c;即使在官网中复制的gpu版安装命令&#xff0c;安装得到的也有可能为cpu版。 建…

【监控系统】监控系统简介以及主流监控框架对比

互联网应用中离不开监控系统&#xff0c;那么为什么会有监控系统呢&#xff1f; 互联网公司产品通常是通过软件、网站、App或其他数字化方式提供服务的&#xff0c;这类产品在使用过程中可能会面临一系列风险和挑战。 比如网络故障或稳定性问题&#xff0c;由于网络故障、硬件…

外设资源共享须知

外设资源共享 具有相同ID的只能使用一个&#xff0c;无法同时使用。 例如当使能了SPIM0&#xff0c; 就不能用TWIM0&#xff0c;因为基地址相同&#xff0c;不能同时使用。此时建议使用TWIM1. 在sdk_config.h 中配置时需留意。