Git 从入门到精通

Git 从入门到精通

前言

Git 作为当今最流行的分布式版本控制系统,已成为每一位开发者必备的技能。无论你是刚入门的新手,还是希望系统梳理知识的中级开发者,本文都将带你全面掌握 Git 的核心命令与最佳实践。

Git 的设计哲学简单而强大:快速、分布式、支持非线性开发。理解这一点,将帮助你更好地运用它的各项功能。

一、环境配置:搭建你的工作空间

在开始使用 Git 之前,首先需要完成基础配置。这些信息将伴随你的每一次代码提交。

1.1 基础身份配置

# 配置全局用户名和邮箱(必须) git config --global user.name "你的名字" git config --global user.email "[email protected]" # 查看当前配置 git config --list # 针对特定仓库配置(去掉 --global 即可) git config user.name "项目特定名字"

最佳实践: 使用与代码托管平台(GitHub/GitLab)一致的邮箱,这样提交记录才能正确关联到你的账号。

1.2 提升效率的别名配置

# 为常用命令设置快捷方式 git config --global alias.st status git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" # 现在你可以使用 git st 代替 git status,git lg 查看漂亮的日志

二、仓库的生命周期管理

2.1 创建与克隆

# 方式一:在现有目录初始化 mkdir my-project cd my-project git init # 方式二:克隆远程仓库(更常见) git clone https://github.com/username/repository.git # 克隆时指定本地文件夹名称 git clone https://github.com/username/repository.git my-folder # 克隆特定分支 git clone -b develop https://github.com/username/repository.git

技术细节:git init 会创建一个 .git 隐藏目录,这就是 Git 的对象数据库,存储着项目的完整历史记录。

2.2 状态检查:你的指南针

git status

git status 是你在 Git 世界中的指南针,它会告诉你:

  • 当前所在分支
  • 工作区有哪些修改未暂存
  • 暂存区有哪些修改待提交
  • 哪些文件未被 Git 跟踪

输出解读示例:

On branch main Your branch is up to date with 'origin/main'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: README.md Untracked files: (use "git add <file>..." to include in what will be committed) new-feature.py

三、核心工作流程:从编辑到提交

Git 的核心在于理解三个区域的协作关系:

┌─────────────────┐ git add ┌─────────────────┐ git commit ┌───────────────

Read more

深入解剖STL map/multimap:接口使用与核心特性详解

深入解剖STL map/multimap:接口使用与核心特性详解

❤️@燃于AC之乐 来自重庆 计算机专业的一枚大学生 ✨专注 C/C++ Linux 数据结构 算法竞赛 AI 🏞️志同道合的人会看见同一片风景! 👇点击进入作者专栏: 《算法画解》 ✅ 《linux系统编程》✅ 《C++》 ✅ 🌟《算法画解》算法相关题目点击即可进入实操🌟 感兴趣的可以先收藏起来,请多多支持,还有大家有相关问题都可以给我留言咨询,希望希望共同交流心得,一起进步,你我陪伴,学习路上不孤单! 文章目录 * 前言(map系列容器概述) * 一、map类介绍 * 1.1 map的类模板声明 * 二、pair类型介绍 * 2.1 pair的结构定义 * 2.2 pair的使用要点 * 三、map的构造与迭代器 * 3.1 构造接口 * 3.2 迭代器接口 * 四、map的增删查操作

By Ne0inhk
C++ 多线程同步之原子操作(atomic)实战

C++ 多线程同步之原子操作(atomic)实战

C++ 多线程同步之原子操作(atomic)实战 💡 学习目标:掌握 C++ 标准库中原子操作的使用方法,理解原子操作与互斥锁的区别,能够在轻量级同步场景中高效解决数据竞争问题。 💡 学习重点:std::atomic 模板的常用接口、原子操作的特性、原子类型与普通类型的性能对比、原子操作的典型应用场景。 50.1 原子操作的引入背景 在 48 章我们学习了互斥锁,它通过阻塞线程的方式实现临界区保护。 但互斥锁存在上下文切换开销,在一些简单的同步场景中显得过于笨重。 比如对单个变量的自增、自减、赋值等操作,我们需要一种更轻量级的同步方案——原子操作。 ⚠️ 注意事项:原子操作仅适用于单个变量的简单同步,无法替代互斥锁实现复杂临界区的保护。 举个例子,使用互斥锁保护变量自增: #include<iostream>#include<thread>#include<mutex>usingnamespace std;

By Ne0inhk

《深入解析JVM》第五章:JDK 8之后版本的优化与JDK 25前瞻

本期内容为自己总结归档,基于JDK8,共分5章,本人遇到过的面试问题会⭐重点标记。 第一章:JVM架构全览 第二章:垃圾回收机制和GC算法 第三章:JVM类加载与Spring类加载 第四章:JVM 调优 第五章:JDK最新版本优化内容 (若有任何疑问,可在评论区告诉我,看到就回复) 第五章:JDK 8之后版本的核心优化与JDK 25前瞻 1. JDK版本演进路线与升级决策框架 Java在JDK 8之后进入了快速迭代周期。本系列文章重点分析的长期支持(LTS)版本是生产环境部署的基石,每个LTS都代表了Java发展的一个重要里程碑。JDK 25作为最新的LTS,标志着Java在简化开发、提升性能和支持现代硬件方面进入了新阶段。 1.1 升级决策的关键考量因素 技术选型决策流程: 2. JDK 11的核心优化:现代Java的基石 2.1 语言特性增强 局部变量类型推断(JEP 323): // JDK

By Ne0inhk
Java八股:Java中的各种list,有什么区别?list和set有何种区别?

Java八股:Java中的各种list,有什么区别?list和set有何种区别?

Java 中 List 的几种实现 List 是 有序、可重复 的集合接口 常见实现:ArrayList、LinkedList、Vector、Stack、CopyOnWriteArrayList ArrayList 底层结构 * 动态数组 * 初始容量:10 * 扩容机制 新容量 = 旧容量 + 旧容量 / 2 (1.5 倍) 时间复杂度 操作复杂度说明随机访问 get(i)O(1)数组下标尾部 addO(1) 均摊扩容时 O(n)中间插入/删除O(n)元素整体移动 线程安全 * 非线程安全 解决方案:Collections.synchronizedList;CopyOnWriteArrayList

By Ne0inhk