Git 进阶 高级用法,重要命令记录

news/2024/10/22 18:42:47/

本篇文章用于记录Git高级用法,新手可以看我的另一篇文章:Git基础教学。

Git
在这里插入图片描述
git fetch 是git pull 的细分步骤,git pull 包含了git fetch
git pull origin master
上述命令其实相当于git fetch + git merge
在实际使用中,git fetch更安全一些
因为在merge前,我们可以查看更新情况,然后再决定是否合并

git clone git pull 区别:
git clone 直接把整个项目下载下来,里面包括项目.git 文件,会搞出来两个.git文件;而git pull 需要 git remote add 之后才可以 只有一个.git文件。

git fetch 实战用途:用于获取远程仓库各个分支的提交信息,但不会主动合并到工作区
git fetch origin 下载远程仓库所有分支的提交
git fetch origin + 分支名字 只同步某个分支的提交
git merge origin/分支名 在当前分支合并特定远程远程分支的提交
git branch 查看本地仓库分支
git branch -r 查看远程仓库分支
git branch -a 查看所有仓库分支
删除本地远程仓库信息
git branch -r -d + origin/仓库名字
在这里插入图片描述

切换分支 git checkout + 分支名字
创建分支 git checkout -b + 分支名字
删除本地分支 git branch -d + 分支名字
git fetch 没merge前强制删除:git branch -D + 分支名字
删除远程分支 git push origin --delete + 分支名字

git配置远程仓库:
git remote -v 查看当前仓库有没有匹配远程仓库
git remote add 远程仓库别名(一般第一个常取用origin) SSH协议地址
例子:git remote add origin git@192.168.1.27:Android/A600.git
git remote rm 远程仓库别名

ssh密钥生成命令:
ssh-keygen -t rsa -C “chenlangl@outlook.com”

git log 命令是针对一个分支,或者只有连续相等commit信息的不同分支使用, 用处是根据tag 拉分支,不管是从高往低打tag,还是从低往高打tag都行。
这句话很抽象,是高度总结。
git log --pretty==oneline 每个提交只打印一行
git log --oneline 在上一个命令的基础上,hash值只显示一部分
git log --graph --all 查看所有分支演进图
git log --graph 查看当前分支演进图
git fetch + git log --graph --all 可以查看整个

git tag 用于 标记一些 重要节点版本,以便于在重要版本上进行二次开发。
git tag : 直接列出所有的标签
git tag -l xxxx : 可以根据 xxxx 进行标签的筛选
git show 标签名 : 查看标签的信息,(轻量标签 和 附注标签 的信息是不一样的)
创建 轻量tag:
git tag 标签名 : 直接给当前的提交版本创建一个【轻量标签】
git tag 标签名 提交版本号 :给指定的提交版本创建一个 【轻量标签】 提交版本号指的就是提交hash值
创建 附注tag:
-a : 理解为 annotated 的首字符,表示 附注标签
-m : 指定附注信息
git tag -a 标签名称 -m 附注信息 :直接给当前的提交版本创建一个 【附注标签】
git tag -a 标签名称 提交版本号 -m 附注信息 :给指定的提交版本创建一个【附注标签】
删除tag:
git tag -d 标签名称 : 删除指定名称的标签
推送 tag 到远程仓库:
默认情况下,git push 命令并不会把标签推送到远程仓库中。
因此,我们必须 手动地将 本地的标签 推送到远程仓库中。
git push origin 标签名称 : 将指定的标签上传到远程仓库
git push origin --tags : 将所有不在远程仓库中的标签上传到远程仓库

本地选定提交打tag:git tag +name +hash点

删除远程仓库上地标签同样也需要手动执行:
$ git push origin :regs/tags/标签名称
or
$ git push origin --delete 标签名称
两个命令一样,都是删除指定的标签
打tag的真正作用:检出标签,说人话就是,可以以一个tag点为基础版本拉出一个分支。
git checkout -b 分支名称 标签名称

git cherry-pick
常规用法:git cherry-pick + hash值(所谓的commit id)
在cherry-pick操作中,可能会遇到冲突。当Git无法自动解决冲突时,我们需要手动解决冲突。当冲突发生时,Git会将冲突的文件标记为“Unmerged”,我们需要在文件中手动解决冲突,并使用以下命令标记冲突已解决:
git add BashCopy完成冲突解决后,可以继续cherry-pick操作:
git cherry-pick --continue


git merge
一般先get fetch origin ,在使用git merge +origin/分支名 选择合并哪个分支的内容
本地merge更简单了,直接git merge + 分支名

git rebase
git merge进阶版本,使用rebase命令 git log --graph的图上不会有交叉点,也就是合入的分支不会产生新的merge点。
一般用法:举个例子,将 branch4分支的代码rebase到master分支上。
git checkout branch4
使用rebase命令把自己的commit信息复制到master分支上
git rebase master
git checkout master
git merge branch4

git show
查看某次提交 涉及的文件 及具体的修改内容:git show +hash值
仅仅查看涉及的文件:git show + hash值 + --stat

git blame

git config --list 查看所有的配置信息
git config --global --list 查看全局配置信息
git config --local --list 查看当前仓库的配置信息
–global 是当前用户的
–system 是整个系统的
–local 是当前项目的

git diff
git diff --cached 比较暂存区和本地仓库的区别

git reset --soft HEAD^
将上一次 commit提交 回退到未提交状态

解开冲突,都是解完然后 再 --continue恢复


http://www.ppmy.cn/news/1372468.html

相关文章

sora笔记(一):sora前世今生与技术梗概

:::info 💡 近日,OpenAI发布了视频生成模型Sora,最大的Sora模型能够生成一分钟的高保真视频。同时 OpenAI称,可扩展的视频生成模型,是构建物理世界通用模拟器的一条可能的路径。 **📃 **Sora能够生成横屏1…

嵌入式Linux开发板测试esp8266模块

一、介绍 ESP8266是一款流行的Wi-Fi微控制器,通常用于物联网项目中。在嵌入式Linux开发板上使用C语言开发ESP8266,意味着我们将通过串口或其他通信方式,从Linux系统上发送AT指令来控制ESP8266。AT指令集是一种用于控制调制解调器和其他设备的…

MySql--死锁

一、什么是mysql死锁? MySQL中的死锁是指多个事务同时请求对同一资源进行操作(读或写),并且由于资源被互斥地锁定,导致彼此无法继续进行。当发生死锁时,MySQL会自动选择其中一个事务作为死锁的牺牲者,回滚该事务,并释放锁定的资源,从而解除死锁。 以下是一些处理MyS…

常见的几种httpclient

工作是spring 项目一般都是使用ResTemplate 但是还是有些项目中会用到httpClient&#xff0c;没有毛用。 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> …

Git 如何上传本地的所有分支

Git 如何上传本地的所有分支 比如一个本地 git 仓库里定义了两个远程分支&#xff0c;一个名为 origin&#xff0c; 一个名为 web 现在本地有一些分支是 web 远程仓库没有的分支&#xff0c;如何将本地所有分支都推送到 web 这个远程仓库上呢 git push web --all

WordPress 从入门到精通【设置 WordPress】

前言&#xff1a;为方便演示&#xff0c;前几张图使用 Playground 环境截取 如果你还不会部署WordPress&#xff0c;请看下面的链接并使用雨云可视化构建一个WordPress站点&#xff1a; 超简单EP面板搭建WordPress网站教程 - 风屿岛 10 (biliwind.com) 进入仪表盘 在搭建完…

JAVA中YML:几个用法

项目有一些配置文件&#xff0c;ini、prop类型的配置文件都考虑过后&#xff0c;还是选择yml文件&#xff0c;如上图&#xff1a;xxconfig.yml。 要求&#xff1a; 1、允许实施人员手动配置 2、配置文件要能轻便的转化为一个JAVA对象 3、程序启动后&#xff0c;打印这些配置项&…

自然语言处理之语言模型(LM)介绍

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;的一个重要分支&#xff0c;它旨在使计算机能够理解、解释和生成人类语言。在自然语言处理中&#xff0c;语言模型&…