【git】简洁实用教程

news2024/9/22 19:25:01

虽然之前有git的笔记了,但是操作和命令太多,有点冗余,下面整理出最常见的一些场景和git需求。

零、Git速查表

在这里插入图片描述

好习惯:每次提交后和开发代码前,都应该pull下
在这里插入图片描述

常见命令:
git clone拉取服务器代码,如果是新建项目,可以用git init初始项目
git config配置邮箱密码
git branch算法在分支开发完后,合并到master主分支
git checkout切换分支
git status查看文件变动,如改变readme文件内容
git add提交文件到暂存区,会显示Changes to be committed: (文件已提交到暂存区)
git push将本地代码推送到服务器,比如在github中点击 Branch:master 下拉按钮能看到对应分支的提交;另外配置文件.gitignore内容不会被推送到服务器上
git pull将服务器代码拉取到本地

注意:如果线上代码做了变动,而你本地的代码也有变动,拉取的代码就有可能会跟你本地的改动冲突,一般情况下 Git 会自动处理这种冲突合并,但如果改动的是同一行,那就需要手动来合并代码,编辑文件,保存最新的改动,再通过 git add . 和 git commit -m ‘xxx’ 来提交合并。

分支:git中origin是远程仓库的别名,也可叫为main。master分支是最稳定的(平时不能直接在上面操作);短期分支可以不用上传到远程,当完成bug修复或者需求开发后,才需要合并到主分支上

在这里插入图片描述

  • git add是个多功能命令,可以理解为“精确地将内容添加到下一次提交中”而不是“将一个文件添加到项目中”要更加合适。:
    • 可以用它开始跟踪新文件,
    • 把已跟踪的文件放到暂存区,
    • 合并时把有冲突的文件标记为已解决状态等。
  • 暂存区和非暂存区:
    • Changes to be committed的即在暂存区,
    • Changes not staged for commit的即在非暂存区。
  • 跳过使用暂存区域:在提交的时 git commit -a
  • 重置账号密码:git config --system --unset credential.helper
  • 如果要删除已经提交到远程服务器中的项目的部分文件:
git rm -r -n --cached 文件/文件夹名称 
加上 -n 这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览
// 确认无误后删除文件
git rm -r --cached 文件/文件夹名称
//提交到本地并推送到远程服务器
git commit -m "提交说明"
git push origin master

一、git的三个分区

在这里插入图片描述

  • 肉眼可见的是work dir工作目录:
    • 在此执行git add后会把指定文件添加到stage/index area暂存区中,
    • stage/index area存在修改后,会把修改存到commit history区(HEAD指针指向的位置)。每个commit都有唯一的一个hash值。
  • 将work dir的修改提交到history区:先git add然后git commit就行了,或者一个快捷方法是使用命令git commit -a。
  • 只要不乱动本地的.git文件夹,任何修改只要提交到history中都不会消失,可以通过git reflog查看操作记录。
    • 所以如果因为HEAD指针的回退,导致有的commitgit log命令中无法看到,可以通过git reflog查看它们的hash值(如下图所示)。

在这里插入图片描述

二、把stage中的修改还原到work dir中

场景:修改work dir中的两个文件a和b后(同时也添加到stage),又对a文件修改,想把a还原为stage中的a文件。
方法:git check a.txt;如果很多被修改的文件很多,且都需要还原,可以使用git checkout .,该命令不会删除后来在work dir中新添加的文件。

三、将history区的文件还原到stage区

场景:写了几个代码文件后一股脑使用git add .添加到stage中,突然想起a.txt没写完 想从stage中移除 写完再提交。
方法:git reset a.txt;这样后面git commit就不会把a文件提交到history区了。

四、将history区的历史提交还原到work dir中

场景:从github上clone了一个项目,乱改一通后跑不通,后悔就想改回最初状态
方法:git checkout HEAD .;work dir和stage中所有的「修改」都会被撤销,恢复成HEAD指向的那个history commit。

慎重:这个操作会将指定文件在work dir的数据恢复成指定commit的样子,且会删除该文件在stage中的数据,都无法恢复,所以应该慎重使用。

五、合并多个commit

场景:本地从17bd20cHEAD有多个commit,想把它们合并成一个commit后再推送到仓库。
方法:git reset 17bd20c后照常git add .和commit操作;即将HEAD移动到17bd20c这个commit中。

六、解决冲突

直接使用IDE的可视化git工具,比git diff方便。

七、.gitignore文件不生效咋办

.gitignore只能忽略那些原来没有被追踪的文件,如果某些文件已经被纳入版本管理中,修改.gitignore会不起作用。

方法:先将本地缓存清除,改成未被追踪状态,然后提交。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'
git push -u origin master

显示正在追踪的文件:

git ls-tree --full-tree --name-only -r HEAD | tree --fromfile .

小练习:

在这里插入图片描述

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

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

相关文章

深度解读 | 如何构建以指标为核心的ABI平台?

在上期一文中,我们了解到BI不同发展阶段运行模式及遇到的问题。“报表阶段”是以报表粒度进行管理,数据和报表完全耦合在一起,在不同报表间产生数据和指标的冗余和重复,形成报表爆炸、技术债,导致数据不可信、分析不敏…

Windows 7下安装oracle12c报错:O/S-Error:(OS 1385)

查看报错日志:C:\Program Files\Oracle\Inventory\logs\ installActions2015-04-21_09-29-15AM.log, 提示查看: D:\app\Administrator\cfgtoollogs\netca\trace_OraDB12Home1-150421 11上午1616.log , 打开该log,在尾部发现如下错…

LaTeX页眉页脚自定义【有图有代码】

LaTeX页眉页脚自定义【有图有代码】一、自定义页眉页脚示例【双页文档】\fancyhead \fancyfoot1、代码讲解2、自定义代码3、页眉和页脚的装饰线4、总页数二、自定义页眉页脚示例【单页文档】\rhead \rfoot三、\pagestyle{}介绍四、设置当前页面样式\thispagestyle{}平时在写报告…

中级软件设计师备考上午题总结

中级软件设计师备考上午题总结 前言 10月末11月初备考了中级软件设计师,备考时间总计20天整,由于预留的备考时间并不多,上午题复习策略主要是以看别人整理好的笔记为主,不懂的地方以看zst_2001的视频为辅,最后预留了…

JDBC Java对数据库增删改查(完整案例)

目录 一.综合上述7个步骤,实现向student表中插入一条数据。 1、注册驱动 2 、获取数据库连接对象 3、获取发送SQL语句对象 4、编写SQL语句,SQL语句最好是先在SQLyog里面写一遍并运行一下,保证SQL语句没有语法 错误,这里sid是…

C语言百日刷题第十二天

前言 今天是刷题第12天&#xff0c;放弃不难&#xff0c;但坚持一定很酷~ 临近期末&#xff0c;刷几套模拟题 C语言百日刷题第十二天前言选择题判断题编程题选择题 1.设a1;b2;c3;d4;则表达式a<b?a:c<d? a:d的结果是____。 A、3 B、1 C、4 D、2 正确选项&#xf…

Linux多线程(一):什么是线程?

文章目录一、前言二、什么是线程&#xff1f;三、线程是如何实现的&#xff1f;四、基本概念梳理五、后记一、前言 什么是线程&#xff1f;操作系统书籍上可能会给你这样的解释与定义&#xff1a; 线程是在进程内部运行的执行流线程比进程的执行力度更细&#xff0c;线程的调…

年底无情被裁,我面试大厂的这几个月…

2022年接近尾声&#xff0c;“金九十”今年也变成了“铜九铁十”。 大厂不断缩招&#xff0c;不容忽视的疫情影响&#xff0c;加上不断攀升的毕业生人数&#xff0c;各种需要应对的现实问题让整个求职季难上加难。 在这个异常残酷的求职季&#xff0c;很多人的困惑、面临的问…

VM系列模块基本信息

外形尺寸&#xff1a; VM501/604/608 30.0mmX26.0mmX4.3mm 贴插封装-20 VM511/614/618 60.0mmX36.0mmX4.8mm 直插-22 VM704 30.0mmX26.0mmX6.0mm 直插-20 VM704S 32.0mmX32.0mmX15.0mm 直插-20 数字接口&#xff1a;UARTI2C UART&#xff1a;TTL/R…

03-SpringBoot进阶

知识回顾 知识目标 1、SpringBoot单元测试【掌握】 2、SpringBoot 整合 MybatisPlus【重点】 3、SpringBoot添加分页插件【掌握】 4、SpringBoot定义拦截器【掌握】 5、SpringBoot使用类型转换器【掌握】 6、文件上传【掌握】 7、SpringBoot异常处理【掌握】 8、SpringBoot定…

Navicat 16 和表空间 | 第 一 部分

优点 你知道 Navicat 16 支持表空间吗&#xff1f;表空间是表&#xff08;以及索引、大型对象和长数据&#xff09;的存储结构&#xff0c;它将数据库中的数据组织成与在文件系统上存储数据的位置相关的逻辑存储组。它的主要功能是联接物理存储层和逻辑存储层。通过将表分配给表…

c盘空间怎么扩大?

电脑系统主要存储在C盘&#xff0c;用户还可能会将一些软件、文件夹存储在C盘&#xff0c;所以电脑C盘必须拥有足够充足的空间&#xff0c;为了大家更好地使用电脑&#xff0c;这里小编带来的就是电脑扩大C盘空间的教程。 1、右击桌面的计算机图标&#xff0c;然后选择管理! 2、…

过滤器的使用

过滤器的使用过滤器介绍过滤器的使用配置过滤器过滤器路径的配置规则前置、后置、环绕过滤器过滤器链过滤器的优先级过滤器介绍 过滤器(Filter)是位于客户端与服务器资源之间的一道过滤技术&#xff0c;可以在客户端请求到达目标资源之前进行预处理业务。 过滤器作用 执行多个…

【Java实战】系统设计需要注意的细节

目录 一、前言 二、设计规约 1.【强制】存储方案和底层数据结构的设计获得评审一致通过&#xff0c;并沉淀成为文档。 2.【强制】在需求分析阶段&#xff0c;如果与系统交互的 User 超过一类并且相关的 UseCase 超过 5 个&#xff0c;使用用例图来表达更加清晰的结构化需求。…

小说电子书阅读系统毕业设计,小说电子书阅读系统设计与实现,毕业设计论文源码开题报告需求分析

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于web网页的电子书阅读系统&#xff0c;整个网站项目使用了B/S架构&#xff0c;基于java的springboot框架下开发&#xff1b;管理员通过后台录入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理会…

4款游戏开发引擎优缺点分析

随着微信生态中&#xff0c;小程序应用指数级的增长&#xff0c;许多休闲游戏变成为了众多游戏厂商流量变现的新手段。以近期很火的“羊了个羊”为例&#xff0c;它便是我们常常所说的小游戏。 游戏和小游戏的区别 要盘点小游戏开发引擎之前&#xff0c;我们得先来了解下游戏…

vue3+ts 实现文件在线预览

一、背景 企业微信自建项目中要求PC端也能进行文件预览&#xff0c;但是企业微信提供的接口只能在移动端使用&#xff0c;通过查阅资料修改成贴合项目的方法。参考&#xff1a;https://blog.csdn.net/w_t_y_y/article/details/115767747 kkFileView官方文档 二、preview-file…

浅析能源物联网技术在校园能耗监测系统中的应用与研究

摘要:绿色环保已成为时代的主题&#xff0c;与此同时&#xff0c;节能减排也成为我国蓝天保卫战的重要措施。我国大型公共建筑年耗电量约占全国城镇总耗电量的22%&#xff0c;每平方米年耗电量是普通居民住宅的10&#xff5e;20倍&#xff0c;是欧洲、日本等发达国家同类建筑的…

《四》多线程基础——Java线程生命周期及转换

Java并发编程系列文章 《一》多线程基础——Java线程与进程的基本概念 《二》多线程基础——Java线程入门类和接口 《三》多线程基础——Java线程组和线程优先级 《四》多线程基础——Java线程生命周期及转换 《五》多线程基础——Java线程间的通信&#xff08;互斥与协作&…

Git统计代码行数;Java实现统计代码行数,忽略空行、注释行

前言 某天&#xff0c;产品叫我算下某个项目的代码行数&#xff0c;我一愣&#xff0c;这怎么统计&#xff1f;总不可能一个文件一个文件算吧&#xff1f;后面我找了下&#xff0c;git是可以统计提交到仓库的所有的代码的&#xff0c;不过有个问题&#xff0c;就是假如有些文件…