【Git】 大厂代码提交原则(适用新手,细节拉满)

news2025/1/21 15:42:03

目录

git是什么,为什么要学git

开发目录

提交到github/gitee的命令

提交代码时的注意事项

git 的其他命令


git是什么,为什么要学git

  • git 是一个免费的、开源的分布式版本控制系统,git可以追踪文件的修改历史,并且在不同的人员之间协同工作时能够很好地管理和协调代码的修改。
  • 面试的时候可能会被问到git
  • 公司基本都要使用git
  • git 可以作为一种代码备份和恢复的工具

开发目录

  • PWD 可以获取当前的目录地址。在git中,代码、文本文件、二进制文件、目录等所有的东西都被视为文件。
  • git init 初始化代码目录为代码仓库,也就是将本地文件夹转化成git仓库(在当前文件夹内生成.git文件夹)
  • 注意 git 仓库不能嵌套
  • .git 文件夹一般情况不要去动它
  • 默认 master/main 主分支
  • HEAD 指针指向第一次提交

提交到github/gitee的命令

  • 先展示一下本地仓库和远程仓库的关系

    无标题.png

  • 为什么把一个文件添加到仓库需要git addgit commit 两步呢?

    git add 将文件添加到暂存区

    git commit -m '' 将暂存区的文件一次性提交到仓库区,单引号中写上你这次工作的主题

    git add .可以将所有文件一次性提交到暂存区,工作中尽量不要使用这个命令,因为他是将文件全部提交到暂存区,而git commit -m ''命令是将暂存区的文件一次性提交到仓库区,所以可能会出现你工作区的有部分文件并不是这次工作的文件或者有部分文件还没写完或没完善,如果这些文件你都上交了,那么在工作中如果有别人调用你的文件,那会出现可大可小的各种问题,所以不建议在工作中使用这条指令

    git remote add 向本地仓库添加远程仓库地址 例如:

     csharp 

    复制代码

    git remote add origin https://github.com/your-username/your-repository.git

    其中,origin 是远程仓库的名称,后面跟着远程仓库的 URL。在这个例子中,我们添加了名为 origin 的远程仓库,其 URL 为 https://github.com/your-username/your-repository.git

    git push origin master/main 将本地代码推送到远程仓库

提交代码时的注意事项

  • 严格检查

    代码提交之前一定要谨慎,以防万一,需要检查当前的修改和上一次的修改改了哪些地方 git diff 命令可以帮我们比较修改(git diff 命令默认会逐行比较文件内容,并显示出不同处的具体信息)

  • commit -m ''不能乱写

    单引号内需要写清楚完成了什么任务,leader 很大概率就看-m 后的东西来了解我们的工作

git 的其他命令

  • git status 这个命令可以很方便了解当前我们仓库的状态。它会显示出工作区和暂存区的文件状态,并提示你执行下一步操作。当离开电脑前一段时间后再返回时,最好用这个命令查询一下当前仓库的状态,以防产生其他问题

  • git log 打印所有的提交 例如:

    1698946302260.png

    如上图,commit后面到括号前面的黄字叫做hash,表示提交的id,id具有唯一性

    (HEAD -> master) 中 HEAD 是指针,指向目前的最后一次提交

    master 代表分支,等于main

  • git log --oneline 打印当前一行

  • git reset 快速来到任务一个版本

    例如:git reset HEAD^ 是一个用于撤销最近一次提交的 Git 命令。

    当你在 Git 仓库中进行一些修改并提交后,可以使用 git reset HEAD^ 命令将仓库恢复到上一个提交的状态。该命令会将当前分支指针向后移动一步,使其指向上一个提交,同时取消提交的更改,也就是把暂存区或者已经提交的代码回退到工作区。^代表回退次数,几个就代表回退几次

  • git reset --hard id 用于重置 Git 仓库状态并将当前分支指针移动到指定提交 id

    执行 git reset --hard id 命令后,Git 会做以下几件事情:

    • 将当前分支的指针重置到指定的提交 id,即把当前分支指向指定提交。
    • 丢弃指定提交以后的所有提交记录,包括它们所引入的修改。这意味着之后的所有提交都会被删除,它们不再存在于仓库中。
    • 修改工作目录和暂存区的文件状态,使它们与指定提交 id 中的文件状态一致。也就是说,工作目录和暂存区会回滚到指定提交的状态,所有未提交的修改都会被丢弃。

    需要注意的是,git reset --hard 是一个潜在危险的操作,因为它会彻底丢弃之后的提交和更改,并且无法恢复。在执行该命令之前,请确保你了解其影响,并且已经备份或提交了重要的更改。

    同时,如果已经将修改推送到远程仓库,强烈不建议使用 git reset --hard 命令来撤销提交,因为它会破坏仓库的一致性,并且可能导致冲突。在这种情况下,建议使用 git revert 命令来创建一个新的提交,以保留修改的历史记录。

  • git reflog 用于查看 Git 仓库中所有分支的引用历史记录的命令。它记录了各种 HEAD 引用的所有操作,包括提交、重置、撤销提交等,可以帮助你找回误操作或者丢失的提交

    需要注意的是,git reflog 命令只能查看本地仓库中的引用历史记录。如果你想查看远程仓库的引用历史记录,需要使用 git remote show 或者其他相关命令来查看远程仓库的状态和更新历史。

作者:不要熬夜记得早睡
链接:https://juejin.cn/post/7296801242793033754
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

Sora 文生视频提示词实例集 2

Prompt: Historical footage of California during the gold rush. 加利福尼亚淘金热期间的历史影像。 Prompt: A close up view of a glass sphere that has a zen garden within it. There is a small dwarf in the sphere who is raking the zen garden and creating patter…

Vue+Vite项目初建(axios+Unocss+iconify)

一. 创建项目 npx --package vue/cli vue 项目成功启动后,进入http://localhost:3200,即可进入创建好的页面(假设启动端口为3200) 二. 测试网络通讯模块 假设有本地服务器地址localhost:8000提供接口服务,接口为localhost:8000/token&#…

CCF-A类VLDB’24 3月1日截稿!数据界的璀璨盛会等你投稿!

会议之眼 快讯 第50届VLDB( International Conference on Very Large Databases)即超大型数据库国际会议将于 2024 年 8月25日至29日在中国广州朗廷广场隆重举行!VLDB大会是数据库领域的顶级学术盛会,而SIGMOD和ICDE则是与之齐名的另外两大数据库会议。这…

天锐绿盾 | 办公终端文件数据\资料防泄密软件

天锐绿盾是一款电脑文件防泄密软件,旨在帮助企业保护其敏感数据免受未经授权的访问和泄露。该软件采用先进的加密技术和文件监控机制,确保企业数据在存储、传输和使用过程中的安全性。 PC地址:https://isite.baidu.com/site/wjz012xr/2eae091…

Docker打包离线镜像到本地,上传解压到服务器

在我们部署Docker镜像时,难免会遇到服务器没有网络情况,Centos7离线安装Docker 这篇文章中,我们已经离线安装Docker完成,现在需要离线创建容器。 1 查看所有镜像 docker images注:如果我们想打包本服务器没有的镜像&…

v62.数组

1.简单介绍 就像数据可以存放在变量中,每个变量有名字、类型、以及内存空间。还可以用数组来保存 相同数据类型 的数据。 那么就避免了使用很多个独立的变量。数组是长度固定的数据结构,用来存放指定类型的数据。 2.初试数组 int num1,num2,num3...类…

第三百五十二回

文章目录 1. 概念介绍2. 获取方法3. 示例代码4. 对比与总结4.1 横向对比4.2 内容总结 我们在上一章回中介绍了"如何获取当前系统语言"相关的内容,本章回中将介绍如何获取当前时区.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们使用的…

09_Java集合

一、Java集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态…

城市管网可视化泄露检测系统

行业背景 目前传统的漏水检测模式存在的缺陷主要体现在以下几方面: 首先是检测灵敏度低,且不稳定。听音检测主要依赖人对声音的强度和频率的感觉,只能是定性的,且不同人的听觉能力不同,相同人在不同时间听觉效果也不…

芋道---实现可退回至申请人节点(附完整代码)

现有如下需求,审批人在退回申请时,想退回至申请人节点,但目前芋道并不支持退回至申请人节点,现做如下修改,实现该需求: 步骤一:设计流程模型 首先,我们在设计流程模型时&#xff0c…

Java并发基础:ConcurrentSkipListMap全面解析

内容概要 ConcurrentSkipListMap类它融合了跳表的高效查找与并发控制的稳定性,在多线程环境下,该类提供了出色的线程安全性能,确保数据的一致性与完整性,其操作具有对数级别的时间复杂度,即使在大数据集下也能维持高效…

《UE5_C++多人TPS完整教程》学习笔记18 ——《P19(实现子系统函数)创建会话(Create Session)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P19 (使用子系统函数)创建会话(Create Session)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版&am…

【Linux操作系统】:Linux进程概念(1)

目录 冯诺依曼体系结构 操作系统 操作系统的概念(是什么) 操作系统的目的(为什么) 如何理解管理 (怎么做) 操作系统总结 系统调用和库函数概念 进程 基本概念 描述进程-PCB task_struct-PCB的一…

感觉人生很艰难,怎么办?

昨晚发了一条推送,跟大家科普了「季节性情绪失调」,建议大家多出去走走,放松心情。 有点意外的是,后台收到好几百条倾诉。 这才发现:原来,好像这段时间,不少人都在经历着一些有点难熬的日子。 也…

数字化转型导师坚鹏:数字化思维创新与BLM政府数字化转型战略

数字化思维创新与BLM政府数字化转型战略 ——以BLM模型为核心,践行知行合一思想,实现知行果合一 课程背景: 很多政府存在以下问题: 不知道如何系统地开展数字化转型工作? 不清楚如何高效地执行数字化转型战略&a…

OpenHarmony—UIAbility组件与UI的数据同步

基于HarmonyOS的应用模型,可以通过以下两种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行数据通信:基于发布订阅模式来实现,事件需要先订阅后发布,订阅者收到消息后进行处理。使用globalThis进行数据同步&#…

TensorRT转换onnx的Transpose算子遇到的奇怪问题

近来把一个模型导出为onnx并用onnx simplifier化简后转换为TensorRT engine遇到非常奇怪的问题,在我们的网络中有多个检测头时,转换出来的engine的推理效果是正常的,当网络中只有一个检测头时,转换出来的engine的推理效果奇差&…

git 使用详解

Git 1、官网:https://git-scm.com/2、核心流程3、git 配置4、创建项目① 本地搭建② 克隆搭建 5、文件状态① 查看文件状态 6、忽略文件7、分支 1、官网:https://git-scm.com/ 2、核心流程 流程解释Working Directory本地工作目录,即本地项目…

JS进阶——垃圾回收机制以及算法

版权声明 本文章来源于B站上的某马课程,由本人整理,仅供学习交流使用。如涉及侵权问题,请立即与本人联系,本人将积极配合删除相关内容。感谢理解和支持,本人致力于维护原创作品的权益,共同营造一个尊重知识…

【HarmonyOS】鸿蒙开发之TextInput组件——第3.3章

textInput属性 代码展示 Column(){Row(){Text("默认类型").margin({right:10})TextInput().width(60%).height(45)}.margin({bottom:10})Row(){Text("自定义样式").margin({right:10})TextInput().width(60%).height(45).fontColor(Color.Brown).enterKe…