Git 操作概要

文章目录

  • [1. Git 概述](#1. Git 概述)
  • [2. Git 常用命令](#2. Git 常用命令)
  • [3. Git 一些特殊场景](#3. Git 一些特殊场景)
    • [🎯 场景 1:误删文件,如何恢复?](#🎯 场景 1:误删文件,如何恢复?)
    • [🎯 场景 2:提交信息写错了](#🎯 场景 2:提交信息写错了)
    • [🎯 场景 3:想把某次提交"移动"到另一个分支](#🎯 场景 3:想把某次提交“移动”到另一个分支)
    • [🎯 场景 4:解决冲突(Conflict)](#🎯 场景 4:解决冲突(Conflict))
    • [🎯 场景 5:临时保存工作进度(不提交)](#🎯 场景 5:临时保存工作进度(不提交))
    • [🎯 场景 6:回滚已推送到远程的提交](#🎯 场景 6:回滚已推送到远程的提交)
    • [🎯 场景 7:查看某行代码是谁改的?](#🎯 场景 7:查看某行代码是谁改的?)
    • [🎯 场景 8:清理未跟踪的文件](#🎯 场景 8:清理未跟踪的文件)
    • [🎯 场景 9:推送一个新项目](#🎯 场景 9:推送一个新项目)
  • [💡 最佳实践建议](#💡 最佳实践建议)
  • 总结

1. Git 概述

什么是 Git?

Git 是一个 分布式版本控制系统(DVCS),由 Linux 之父 Linus Torvalds 于 2005 年创建,用于高效管理代码的变更历史。

核心特点

  • 分布式:每个开发者本地都有一份完整的代码仓库(包括完整历史),不依赖中央服务器。
  • 快照式存储 :Git 不保存"文件差异",而是对每次提交(commit)保存整个项目的一个快照
  • 分支轻量:创建、切换、合并分支成本极低,鼓励基于分支的开发流程(如 Git Flow、GitHub Flow)。
  • 数据完整性:所有内容通过 SHA-1 哈希校验,确保历史不可篡改。

常见协作平台

  • GitHub
  • GitLab
  • Gitee(码云)
  • Bitbucket
  • GitCode

💡 Git ≠ GitHub!
Git 是工具GitHub 是托管 Git 仓库的网站


2. Git 常用命令

基础配置

bash 复制代码
# ⭐配置用户名和邮箱(关联提交记录,需与Git平台账号一致)
git config --global user.name "你的名字"
git config --global user.email "你的邮箱@xxx.com"

# 查看配置信息
git config --list

本地操作

命令 说明
git init 初始化一个新的 Git 仓库
git clone <url> 克隆远程仓库到本地
git status 查看工作区状态(哪些文件被修改/未跟踪)
git add <file>git add . 将文件添加到暂存区(staging area)
git commit -m "message" 提交暂存区内容到本地仓库
git log / git log --oneline 查看提交历史
git diff 查看工作区与暂存区的差异
git restore <file> 撤销工作区修改(Git 2.23+) 旧版用 git checkout -- <file>

分支管理

命令 说明
git branch 列出本地分支
git branch <name> 创建新分支
git checkout <branch>git switch <branch> 切换分支
git merge <branch> 合并指定分支到当前分支
git branch -d <name> 删除已合并的分支
git branch -D <name> 强制删除分支

远程协作

命令 说明
git remote -v 查看远程仓库地址
git fetch 从远程拉取最新历史(不自动合并)
git pull = git fetch + git merge,拉取并合并
git push origin <branch> 推送本地分支到远程
git push -u origin <branch> 首次推送并设置 upstream(后续可直接 git push

撤销与重置

命令 说明
git reset --soft HEAD~1 撤销最后一次提交,保留更改在暂存区
git reset --mixed HEAD~1(默认) 撤销提交,保留更改在工作区
git reset --hard HEAD~1 彻底丢弃最后一次提交及所有更改(慎用!)
git revert <commit> 创建一个新提交来"反向"撤销某次提交(安全,适用于已推送的提交)

3. Git 一些特殊场景

🎯 场景 1:误删文件,如何恢复?

bash 复制代码
# 如果已提交过
git checkout <commit-id> -- <file>

# 如果刚 add 但未 commit
git restore --staged <file>  # 先取消暂存
git restore <file>           # 再恢复工作区

🎯 场景 2:提交信息写错了

bash 复制代码
git commit --amend -m "正确的提交信息"
# 注意:仅限未 push 的最新提交

🎯 场景 3:想把某次提交"移动"到另一个分支

bash 复制代码
# 方法:使用 cherry-pick
git checkout target-branch
git cherry-pick <commit-id>

🎯 场景 4:解决冲突(Conflict)

  1. 手动编辑冲突文件(查找 <<<<<<<, =======, >>>>>>>
  2. 保留需要的代码,删除标记
  3. git add <file> 标记冲突已解决
  4. git commit 完成合并

🎯 场景 5:临时保存工作进度(不提交)

注:恢复 stash 之前,当前分支不可以新增或变更其他文件,否则会恢复失败

bash 复制代码
git stash          # 保存当前修改到"藏匿区"
git checkout other-branch
# ...做其他事...
git stash pop      # 恢复之前的工作

🎯 场景 6:回滚已推送到远程的提交

❌ 不要用 reset --hard + push -f(会破坏他人历史)

✅ 正确做法:

bash 复制代码
git revert <bad-commit-id>  # 生成一个"反向"提交
git push                    # 安全推送

🎯 场景 7:查看某行代码是谁改的?

bash 复制代码
git blame <file>
# 显示每行最后修改的 commit 和作者

🎯 场景 8:清理未跟踪的文件

bash 复制代码
git clean -n   # 预览将被删除的文件
git clean -f   # 强制删除未跟踪文件
git clean -fd  # 同时删除目录

🎯 场景 9:推送一个新项目

bash 复制代码
# 创建一个新仓库

git clone https://gitcode.com/novaPortal/nova-portal.git
cd nova-portal
echo "# nova-portal" >> README.md
git add README.md
git commit -m "add README"
git branch -m main
git push -u origin main

# 推送现有的文件

cd existing_folder
git init
git remote add origin https://gitcode.com/xxx/xxx-xxx.git
git add .
git commit -m "Initial commit"
git branch -m main
git push -u origin main

# 推送现有的 Git 仓库

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitcode.com/novaPortal/nova-portal.git
git push -u origin --all
git push -u origin --tags

详解:

bash 复制代码
# ==============================================
# Git 本地仓库初始化并推送到 GitCode 远程仓库
# 适用场景:本地已有项目文件夹,首次推送到远程空仓库
# ==============================================

# 1. 进入本地已存在的项目文件夹(替换为实际文件夹路径)
cd existing_folder

# 2. 初始化本地 Git 仓库(生成 .git 隐藏目录,存储版本信息)
#    执行后该文件夹成为 Git 可管理的仓库
git init

# 3. 关联远程 GitCode 仓库(origin 是远程仓库的默认别名,可自定义)
#    替换 https://gitcode.com/xxx/xxx-xxx.git 为实际的远程仓库地址
git remote add origin https://gitcode.com/xxx/xxx-xxx.git

# 4. 将本地文件夹下所有文件/文件夹添加到 Git 暂存区
#    "." 表示当前目录下所有内容,也可指定具体文件/文件夹
git add .

# 5. 将暂存区内容提交到本地仓库,备注为 "Initial commit"(首次提交规范备注)
#    -m 后必须跟提交备注,描述本次提交的内容
git commit -m "Initial commit"

# 6. 将本地默认分支 master 重命名为 main(符合现代 Git 分支命名规范,GitHub/GitCode 主流默认分支为 main)
#    若远程仓库默认分支是 master,可跳过此步骤
git branch -m main

# 7. 将本地 main 分支推送到远程 origin 仓库,并建立本地与远程分支的关联(-u 等价于 --set-upstream)
#    后续推送可简化为 git push,拉取为 git pull
git push -u origin main

💡 最佳实践建议

  • 小步提交:每次提交只做一件事,信息清晰。
  • 分支开发 :不要直接在 main/master 上开发。
  • Pull Before Push:推送前先拉取,避免冲突。
  • .gitignore:合理配置忽略日志、编译产物等。
  • 不要 force push 公共分支:除非团队约定且你知道后果。

总结

维度 要点
本质 分布式版本控制系统
核心对象 工作区 → 暂存区 → 本地仓库 → 远程仓库
灵魂操作 add / commit / branch / merge / pull / push
高级技巧 revert / cherry-pick / stash / reflog(救命命令)

📚 推荐学习资源:

掌握 Git,是每个开发者提升协作效率和代码管理能力的关键一步!

相关推荐
MatrixOrigin1 小时前
MatrixOne Git4Data 技术详解(二):从零跑通所有 Git 原语
git
anew___1 小时前
常用的 Git 工作流
git
shimly1234561 小时前
git diff 生成一部分文件的补丁
git
m0_579146652 小时前
Git 重置模式详解:四种重置方式的原理与应用场景
git
恋喵大鲤鱼2 小时前
git grep
git·git grep
霸王龙的小胳膊2 小时前
Git基础知识
git
恋喵大鲤鱼3 小时前
git fetch
git·git fetch
Java知识技术分享3 小时前
安装sourcetree
java·git·源代码管理
恋喵大鲤鱼4 小时前
git revert
git·git revert
爱和冰阔落4 小时前
【Codex项目实战】从模糊需求到可验证交付:Plan、测试、Review与Worktree完整流程
人工智能·git·codex