Git 核心操作记录:面向日常开发的实践总结

前言

Git 是开发中绕不开的版本控制工具,但其包含的命令和底层概念非常多。在实际的日常代码管理中,很多时候我们只需要用到它的一小部分核心功能。

为了提高工作效率,我在这里整理了一份自己平时最常用到的 Git 操作清单,主要涵盖了本地代码的暂存、提交、历史回退以及与远程仓库的交互。这份记录以实用为主,方便在忘记具体指令时随时查阅。


一、 初始化与基础配置

在开始管理代码前,第一步需要配置用户信息,这有助于追踪每次提交的代码作者。

1. 配置全局信息

打开终端,运行以下命令:

1
2
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@example.com"

2. 建立本地代码库

让一个目录受到 Git 管理,通常有两种情况:

情况 A:初始化本地新项目
在项目根目录下执行初始化,这会生成一个 .git 隐藏文件夹来管理版本记录:

1
2
cd your_project_folder
git init

情况 B:克隆远程仓库
如果项目已经存在于远端(如 GitHub),直接克隆下来即可,不需要再执行 git init

1
git clone https://github.com/用户名/项目名.git

二、 代码提交流程

写好代码后,需要将其保存到本地仓库的版本记录中。这是一个两步走的过程:先添加到暂存区,再正式提交。

1. 暂存代码更改

将当前目录下的所有文件变更放入暂存区:

1
2
# 点号代表当前目录所有更改
git add .

2. 生成提交版本

为这次变更附上说明,并生成一个固定的版本记录:

1
git commit -m "新增了烟雾分割的数据预处理脚本"

💡 个人体会:养成写清晰 Commit Message 的习惯在后期回顾代码或与他人协作时能省下很多沟通成本。


三、 版本查看与回退

在开发过程中经常会遇到代码改错或者需要查看过往修改逻辑的情况,这时候就需要用到版本回退功能。

1. 查看提交历史

获取简略的提交记录列表(主要为了获取版本对应的哈希值):

1
git log --oneline

2. 执行回退操作

根据不同情况选择不同的回退指令:

  • 撤销当前工作区尚未 commit 的更改(放弃最近的修改,恢复到上一次提交时的状态):

    1
    2
    3
    4
    # 危险操作,未提交的代码将直接覆盖
    git checkout .
    # 或者使用新版本推荐的命令
    git restore .
  • 彻底回退到历史的某个特定版本

    1
    2
    # 回退到指定的 commit_id,并抛弃该版本之后的所有记录(需谨慎使用)
    git reset --hard <commit_id>

四、 分支管理与代码合并

当开发一个独立的新功能,或者需要修复一个特定的 Bug 时,新建分支可以有效防止未经验证的代码污染主线环境。

1. 创建并切换分支

1
2
3
4
5
# 新建 dev-feature 分支并立刻切换
git checkout -b dev-feature

# 在较新的 Git 版本中,更推荐使用 switch 语义
git switch -c dev-feature

2. 在分支中提交代码

在独立分支中的操作和主分支一致:

1
2
git add .
git commit -m "完成了验证集代码的编写"

3. 将分支合并到主线

新功能开发并测试稳定后,需要将其合并回主线分支(通常为 mainmaster):

1
2
3
4
5
# 切换回主分支
git checkout main

# 将指定开发分支的代码合并到当前分支
git merge dev-feature

五、 与远程云端同步

本地代码完成迭代后,通常需要推送到远程仓库进行备份或协作。

1. 关联远程仓库 (针对 git init 的项目)

如果是手动初始化的项目,需要先跟 GitHub 等平台的空仓库绑定关系:

1
git remote add origin https://github.com/用户名/你的仓库名.git

2. 推送本地代码到远端

初次推送一个新分支时,需要加上 -u 参数来建立本地和远程分支的关联:

1
git push -u origin main

绑定完成后,后续的常规推送就变得非常简单了:

1
2
git commit -m "日常代码更新"
git push

掌握了这套基础操作,基本就能应对单人开发以及小规模团队协作的大部分版本控制需求了。找到你想回去的那个版本的“哈希值(一串黄色字符)”:

1
git log --oneline

2. 代码回退

通常有两种回退需求:

  • 撤销还没有 commit 的修改(让代码回到上一次提交的状态):

    1
    2
    3
    4
    # 丢弃工作区所有的修改(危险操作,未保存的代码将丢失!)
    git checkout .
    # 或者更现代的命令
    git restore .
  • 彻底回退到历史的某个 commit

    1
    2
    # 回退到指定的 commit_id,并且丢弃这之后的所有修改(极度危险,确认无误再用)
    git reset --hard <commit_id>

四、 平行宇宙:分支与合并

什么时候需要新分支?
当你正在开发一个新功能(或者修复一个 Bug),但不希望影响现有的主线稳定代码时,就需要切出一个新分支。在这个独立的分支里,你可以随便改,改坏了也没事。

1. 创建并切换到新分支

1
2
3
4
5
# 创建一个名为 dev-feature 的新分支,并立刻切换过去
git checkout -b dev-feature

# (注:较新的 Git 版本更推荐使用 switch 命令)
git switch -c dev-feature

2. 在分支上开发与提交

在新分支上,一切操作和之前一样:

1
2
git add .
git commit -m "完成了新功能开发"

3. 合并分支

功能开发完毕且测试通过后,你需要把它合并回主分支(通常叫 mainmaster):

1
2
3
4
5
# 第一步:先切换回主分支
git checkout main

# 第二步:把开发分支合并进当前所在的(主)分支
git merge dev-feature

五、 云端同步:推送到 GitHub

本地的代码玩得再溜,最终也是要推送到远程(如 GitHub)备份或与他人共享的。

1. 关联远程仓库(仅针对 git init 初始化的项目)

如果是 git clone 下来的项目,它已经默认关联了远程仓库,这一步可以跳过。如果是你自己 git init 创建的本地项目,需要先跟 GitHub 上的空仓库建立关联:

1
git remote add origin https://github.com/用户名/你的仓库名.git

2. 推送本地代码

把本地的 main 分支推送到远程仓库的 main 分支(第一次推送通常需要加 -u 参数绑定):

1
git push -u origin main

之后日常开发中,只要分支绑定好了,推送只需极其简单的两步走:

1
2
git commit -m "日常代码更新"
git push