工作中常用的 git 命令

了解版本控制

什么是版本控制?我真的需要吗?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。

什么是分布式版本控制系统分布式版本控制系统( Distributed Version Control System,简称 DVCS )。

在这类系统中,像 Git,Mercurial,Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜 像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份

2Git常用命令

Git系统配置

git config -l
git-global配置
git config --global --list
# 可以设全局公用识别的 邮箱和用户名
git config --global user.name 'xxxxxx'
git config --global user.email 'xxxxx@xxx.com'
项目单独git配置
# 查看
git config --list
# 为项目设置单独的user.name和user.email
git config user.name 'xxxxxx'
git config user.email 'xxxxx@xxx.com'

Git初始化

本地初始化
git init
远程拉取
git clone 远程仓库地址

本地仓库与远程仓库的关联

# 本地-建立关联-远程
git remote add origin 远程仓库地址
# 本地-取消关联-远程
git remote rm origin

Git保存和提交

查看状态
git status
查看所有文件修改详情
git diff HEAD
查看指定文件的修改详情
git diff HEAD ./README.md
添加保存

".": 所有修改文件

git add .
或
git add ./home.vue
添加保存说明(提交到本地仓库)
git commit -m '对这次保存添加说明描述'
拉取代码

多人协作开发的时候,提交之前先拉取下代码,解决可能未来的冲突

git pull origin 分支名
提交代码
git push origin 分支名

Git提交日志

查看提交记录

查看曾经的提交记录 可以显示所有提交过的版本信息,不包括已经被删除的 commit 记录和 reset 的操作

git log --pretty=oneline
控制显示条数
git log -30 --pretty=oneline
图形化展示查看当前分支的版本演变信息
git log --graph
按作者名字查看提交记录
git log --author="John"
搜索提交历史,根据关键词
git log -S 关键词
按日期
git log --after="2023-2-1"
搜索过滤合并提交
git log --no-merges 
or 
git log --merges
按提交信息

比如说,你的团队规范要求在提交信息中包括相关的issue编号,你可以用下面这个命令来显示这个 issue 相关的所有提交

git log --grep="JRA-224:"
查看当前 版本标志位

git reflog是Git操作的一道安全保障,它能够记录几乎所有本地仓库的改变,包括所有分支的commit提交,以及已经被删除的commit

git reflog

Git回退到某个版本

回退到上一个版本
git reset --hard HEAD^ # 回退上一个版本
git reset --hard HEAD~3  # 回退上上上一个版本 
git reset --hard bae128  # 回退到某个版本回退点之前的所有信息。 

HEAD 说明:

  • HEAD 表示当前版本

  • HEAD^ 上一个版本

  • HEAD^^ 上上一个版本

  • HEAD^^^ 上上上一个版本

  • 以此类推...

可以使用 ~数字表示

  • HEAD~0 表示当前版本

  • HEAD~1 上一个版本

  • HEAD^2 上上一个版本

  • HEAD^3 上上上一个版本

  • 以此类推...

Git分支指令

查看素有分支
git branch -a
切换分支
git checkout 分支名
创建本地分支
git branch 新分支名
# 创建并切换到新分支
git checkout -b 新分支名
根据指定版本号创建分支
git checkout -b 分支名 提交ID
推送本地分支到远程仓库
git push origin 新分支名
删除本地某个分支

这是一个“安全”操作,因为 Git 会阻止我们删除具有未合并更改的分支

git branch -d 分支名
强制删除本地某个分支

即使它有未合并的更改。如果想永久丢弃与特定开发线相关的所有提交,则可以使用此命令

git branch -D 分支名
删除远程仓库的某个分支
git push origin --delelte 分支名
显示所有远程仓库

查看仓库源名称

git remote -v
更新远程分支列表
git remote update origin(仓库源名称) --prune
推送所有分支到远程仓库
git push origin(仓库源名称) --all
强行推送当前分支到远程仓库,即使有冲突
git push origin(仓库源名称) --force

Git合并分支

想将develop分支合并到master分支

git checkout master # 首先切换到master分支上
git pull origin master # 如果是多人开发的话 需要把远程master上的代码pull下来
git merge --no-ff develop # 然后我们把develop分支的代码合并到master上

关于 git merge develop 和 git merge --no-ff develop 的区别

git merge develop==== >  结果就会变成A---B---C develop/         master
D---E---F 

执行此句话后,因为 develop 就在 master 的下游,所以直接移动了 master 的指针,master 和 develop 都指向了 C

而如果执行了 git merge --no-ff feature 的话,是下面的结果:

git merge --no-ff develop==== >  结果就会变成A---B---C develop/         \
D---E---F-----------G master由于 --no-ff 禁止了快进,所以会生成一个新的提交,master 指向 G。

从合并后的代码来看,结果其实是一样的,区别就在于 --no-ff 会让 Git 生成一个新的提交对象, 通常我们把 master 作为主分支,上面存放的都是比较稳定的代码,而 feature 是用来开发特性的,上面会存在许多零碎的提交,快进式合并会把 feature 的提交历史混入到 master 中,搅乱 master 的提交历史

Git标签

查看tag列表
git tag -l
本地添加tag
git tag -a 标签名 -m '版本说明'
查看tag信息
git show 标签名
本地删除某个tag
git tag -D 标签名
or
git tag -d 标签名
推送本地tag到远程仓库
git push origin 标签名
删除远程仓库tag
git push origin --delete 标签名

小记

  • cmd中使用log命令,不会自动退出,需要手动按下英文状态下的q退出

Git常见错误

1、修改最后一次提交消息 - 提交消息写错了

(按 i 进行编辑,编辑后,按 ESC,如果保存退出使用 :wq,只退出输入 :q,如果出错,退出不保存使用 :qa!)

git commit --amend #该命令将打开编辑器,并允许更改最后一次提交消息
2、Git 撤回 commit,但未 push 的内容
git log
git reset e102c05227bca7517554777f589f130305b69427 #保留提交之前的更改到工作区
3、让单个文件回退到指定版本
git log vue.config.js #拿到文件提交记录ID
git checkout e102c05227bca7517554777f589f130305b69427(commitID) vue.config.js  #将文件还原到你想要还原的版本
4、解决冲突

只要所有开发者都遵守这个规则,那么解决冲突是一件非常容易的事情

  1. 例如我的分支叫做dev分支。我把代码修改完成了,现在不知道有没有冲突。

  2. 在 dev 分支里面,执行命令git merge origin/master,把远程的master分支合并到当前dev分支中。如果没有任何报错,那么直接转到第5步。

  3. 如果有冲突,根据提示,把冲突解决,保存文件。然后执行命令git add xxx把你修改的文件添加到缓存区。然后执行命令git commit -m "xxx"添加 commit 信息。

  4. 执行如下命令,切换到 master 分支:git checkout master

  5. 执行命令git pull确保当前 master 分支是最新代码。

  6. 把dev分支的代码合并回 master 分支:git merge dev

  7. 提交代码:git push。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年全国网络安全行业职业技能大赛数据安全管理员操作技能赛题(样题)

2023年全国网络安全行业职业技能大赛数据安全管理员操作技能赛题(样题) 2023年全国网络安全行业职业技能大赛数据安全管理员操作技能赛题(样题) 第一部分:数据安全防护(30%) 第二部分:数据安全管理(30%) 第三部分:数据安全处置(40%) 项目介绍…

【Transformer】深入理解Transformer模型2——深入认识理解(上)

前言 Transformer模型出自论文:《Attention is All You Need》 2017年 近年来,在自然语言处理领域和图像处理领域,Transformer模型都受到了极为广泛的关注,很多模型中都用到了Transformer或者是Transformer模型的变体&#xff0…

基于轻量级GhostNet模型开发构建生活场景下生活垃圾图像识别系统

轻量级识别模型在我们前面的博文中已经有过很多实践了,感兴趣的话可以自行移步阅读: 《移动端轻量级模型开发谁更胜一筹,efficientnet、mobilenetv2、mobilenetv3、ghostnet、mnasnet、shufflenetv2驾驶危险行为识别模型对比开发测试》 《基…

2023年03月17日_微软和谷歌办公AI的感慨

2023年3月17日 最近这个科技圈的消息 有点爆炸的让人应接不暇了 各种大公司简直就是神仙打架 你从来没有见过这么密集的 这么高频的产品发布 昨天微软是发布了Office 365 Copilot 在里边提供了大量的AI的功能 然后谷歌呢也发布了这个Google Workspace AI 也是跟365 Cop…

macOS系统打开Linux的方法

第一步 按下[command空格键]调出搜索框,输入“终端”,打开图上第一个 第二步 如图先输入"sudo -i",敲回车键,再输入开机密码,再敲回车键就可以打开。注意:这里的密码输入不会显示在页面。 如果要…

自然语言处理3——玩转文本分类 - Python NLP高级应用

目录 写在开头1. 文本分类的背后原理和应用场景1.1 文本分类的原理1.2 文本分类的应用场景 2. 使用机器学习模型进行文本分类(朴素贝叶斯、支持向量机等)2.1 朴素贝叶斯2.1.1 基本原理2.1.2 数学公式2.1.3 一般步骤2.1.4 简单python代码实现 2.2 支持向量…

宠物救助上门喂养系统宠物领养宠物寄养寻宠小程序宠物社区系统宠物托运宠物殡葬源码

后端php 前端uniapp mysql数据库 主要功能介绍: 1.根据当前位置 支持多城市切换 2.支持首页公告实时显示 3.支持 宠物救助,上门喂养,宠物领养,宠物寄养,寻宠,宠物社区,宠物托运&#xff…

uni-app uni-app内置组件

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…

微服务系列之分布式事务理论

概述 事务是由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。 分类 大多数情况下,分类是没有意义的一件事。但是分类可以一定程度上,加深理解。 实现 从实现角度来看&#xff0…

计算机网络复习5

传输层——端到端 文章目录 传输层——端到端功能传输层的寻址与端口UDPTCPTCP连接管理TCP可靠传输TCP流量控制TCP拥塞控制网络拥塞的处理 功能 从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同…

大语言模型(LLM)框架及微调 (Fine Tuning)

大语言模型(LLM) 技术作为人工智能领域的一项重要创 新在今年引起了广泛的关注。 LLM 是利用深度学习和大数据训练的人工智能系统,专门 设计来理解、生成和回应自然语言。这些模型通过分析大量 的文本数据来学习语言的结构和用法,…

信息网络协议基础_IP移动网络管理

文章目录 概述移动IPv6待解决的问题关键词基本过程分组拦截技术移动检测和转交地址自动配置到家乡代理绑定注册通信对端不支持IPv6通信对端支持移动IPv6 对IP以上层屏蔽移动性 移动IPv6存在的问题移动IPv6优化代理移动IP概述原理基本过程初始接入切换 概述 移动IPv6 待解决的问…