Git常用命令大全及提交推送详解

目录

常用Git命令大全

[1. 仓库初始化与配置](#1. 仓库初始化与配置)

[2. 远程仓库操作](#2. 远程仓库操作)

[3. 分支管理](#3. 分支管理)

[4. 代码提交](#4. 代码提交)

[5. 推送与拉取](#5. 推送与拉取)

[6. 版本回退与撤销](#6. 版本回退与撤销)

[7. 合并与冲突解决](#7. 合并与冲突解决)

[8. 储藏与标签](#8. 储藏与标签)

提交与推送详解

提交(Commit)的本质

推送(Push)的作用

关于代码丢失的问题

工作流程示例

最佳实践建议

特殊情况处理

本地仓库在哪?

可见部分:

隐藏部分(Git仓库):

[.git 文件夹的可见性](#.git 文件夹的可见性)

Windows系统:

macOS/Linux系统:

在IDEA中查看:

[.git 文件夹内部结构](#.git 文件夹内部结构)

[SpringBoot项目完整 .gitignore 配置](#SpringBoot项目完整 .gitignore 配置)

[Vue3项目 .gitignore 核心配置](#Vue3项目 .gitignore 核心配置)


常用Git命令大全

1. 仓库初始化与配置

复制代码
# 初始化本地仓库
git init

# 克隆远程仓库
git clone <远程仓库URL>

# 配置用户信息
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

2. 远程仓库操作

复制代码
# 添加远程仓库
git remote add origin <远程仓库URL>

# 查看远程仓库
git remote -v

# 修改远程仓库URL
git remote set-url origin <新的远程仓库URL>

# 删除远程仓库
git remote remove origin

3. 分支管理

复制代码
# 查看所有分支
git branch -a

# 创建新分支
git branch <分支名>

# 切换分支
git checkout <分支名>
# 或者(新版本Git)
git switch <分支名>

# 创建并切换到新分支
git checkout -b <分支名>
git switch -c <分支名>

# 删除分支
git branch -d <分支名>  # 安全删除
git branch -D <分支名>  # 强制删除

# 重命名分支
git branch -m <新分支名>

4. 代码提交

复制代码
# 查看状态
git status

# 查看变更内容
git diff

# 添加文件到暂存区
git add <文件名>        # 添加特定文件
git add .              # 添加所有文件
git add -A             # 添加所有变更

# 提交到本地仓库
git commit -m "提交信息"

# 修改上次提交信息
git commit --amend

5. 推送与拉取

复制代码
# 推送到远程仓库
git push origin <分支名>

# 首次推送并建立关联
git push -u origin <分支名>

# 拉取远程更新
git pull origin <分支名>

# 获取远程更新但不合并
git fetch origin

6. 版本回退与撤销

复制代码
# 查看提交历史
git log
git log --oneline      # 简洁版

# 回退到指定提交
git reset --hard <commit_id>

# 回退到上一个提交
git reset --hard HEAD^

# 撤销工作区的修改
git checkout -- <文件名>

# 撤销暂存区的文件
git reset HEAD <文件名>

# 强制推送到远程(谨慎使用!)
git push -f origin <分支名>

7. 合并与冲突解决

复制代码
# 合并分支
git merge <要合并的分支名>

# 变基合并
git rebase <分支名>

# 解决冲突后继续合并
git add .
git commit -m "解决冲突"

# 取消合并
git merge --abort
git rebase --abort

8. 储藏与标签

复制代码
# 储藏当前工作
git stash

# 查看储藏列表
git stash list

# 恢复储藏
git stash pop

# 创建标签
git tag <标签名>

# 推送到远程
git push origin --tags

提交与推送详解

提交(Commit)的本质

提交是保存到本地仓库的操作,它:

  • 将暂存区的变更永久保存到本地Git仓库

  • 生成一个唯一的提交ID(commit hash)

  • 只影响本地,不会上传到远程服务器

  • 可以多次提交后再一次性推送

推送(Push)的作用

推送是将本地提交上传到远程仓库的操作,它:

  • 将本地仓库中的提交同步到远程仓库

  • 让团队成员能够看到你的更改

  • 需要网络连接

关于代码丢失的问题

重要结论:只提交到本地,代码不会丢失!

具体说明:

第一次提交后

复制代码
git add .
git commit -m "第一次提交"
# 此时代码已安全保存在本地仓库

继续修改代码

复制代码
# 修改一些文件...
git add .
git commit -m "第二次提交"

一次性推送所有提交

复制代码
git push origin master
# 这会推送第一次和第二次的所有提交

工作流程示例

复制代码
# 第一天工作
git add .
git commit -m "完成用户登录功能"
# 不推送,直接下班

# 第二天工作
git add .
git commit -m "完成用户注册功能"

# 现在一次性推送两天的成果
git push origin master
# 远程仓库会收到两个提交

最佳实践建议

  1. 频繁提交:建议每完成一个小功能就提交一次

  2. 有意义的提交信息:清晰描述本次提交的内容

  3. 定期推送:虽然不会丢失,但建议每天结束工作前推送一次,防止本地意外

  4. 推送前先拉取:避免冲突

    git pull origin master
    git push origin master

特殊情况处理

如果只想要一个干净的提交记录,可以使用:

复制代码
# 将多次提交合并为一次
git reset --soft HEAD~2  # 回退两次提交但保留更改
git commit -m "合并功能开发"
git push origin master

Git是分布式版本控制系统,本地仓库是完整的副本,提交到本地的代码是安全的!

本地仓库在哪?

本地仓库就是你的项目文件夹,具体来说:

可见部分:

复制代码
你的项目文件夹/
├── src/           # 你的源代码
├── pom.xml        # 配置文件
├── README.md      # 说明文件
└── ...            # 其他项目文件

隐藏部分(Git仓库):

复制代码
你的项目文件夹/
├── .git/          #  这就是本地Git仓库!
│   ├── objects/   # 存储所有文件版本
│   ├── refs/      # 存储分支和标签引用
│   └── config     # 仓库配置
└── 你的项目文件...

.git 文件夹的可见性

我们通常将项目文件夹称为工作区,而.git文件夹是Git的版本库,它默认是隐藏的。

在文件系统中,以点开头的文件和文件夹在默认情况下是隐藏的。这是为了防止用户误操作导致版本库损坏。

.git 文件夹默认是隐藏的,但可以通过不同方式查看:

Windows系统:

  • 文件资源管理器:查看 → 勾选"隐藏的项目"

  • 命令行dir /a 显示所有文件(包括隐藏文件)

macOS/Linux系统:

  • Finder:Cmd+Shift+. 显示隐藏文件

  • 命令行ls -la 显示所有文件

在IDEA中查看:

  • Project面板 :默认不显示 .git 文件夹

  • 要查看:Settings → Editor → File Types → Ignored Files and Folders 取消 .git 的忽略

.git 文件夹内部结构

复制代码
.git/
├── HEAD                    # 当前所在分支
├── config                  # 仓库配置(远程仓库URL等)
├── description             # 仓库描述
├── hooks/                  # Git钩子脚本
├── info/                   # 排除模式等
├── objects/                #  所有文件版本数据 
│   ├── pack/              # 压缩的对象包
│   └── ...                # 所有提交的文件内容
├── refs/                   # 分支和标签引用
│   ├── heads/             # 本地分支
│   ├── tags/              # 标签
│   └── remotes/           # 远程分支引用
└── index                   # 暂存区索引

SpringBoot项目完整 .gitignore 配置

复制代码
# 默认忽略的文件
/shelf/
/workspace.xml

# 基于编辑器的HTTP客户端请求
/httpRequests/

# 数据源本地存储忽略文件
/dataSources/
/dataSources.local.xml

# ========== 以下是需要补充的SpringBoot项目规则 ==========

# 编译输出
/target/
*/target/
**/target/
!/target/.gitkeep  # 如果需要在空target目录保留.gitkeep文件

# 构建输出
/build/
*/build/
**/build/

# 日志文件
*.log
logs/
*.logs

# 临时文件
*.tmp
*.temp
*.cache

# 系统文件
.DS_Store
Thumbs.db
*.swp
*.swo

# IDE文件
.idea/
*.iws
*.iml
*.ipr
.vscode/
*.swp
*.swo

# Maven包装器
!.mvn/wrapper/maven-wrapper.jar

# 应用配置文件(根据情况选择是否忽略)
# /src/main/resources/application-*.properties
# /src/main/resources/application-*.yml

# 单元测试报告
/test-output/
/reports/
*.eml

# 打包文件
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# 依赖下载(如果有)
.dependency/

# 数据库文件(如果有本地数据库)
*.db
*.sqlite

# 环境变量文件(通常包含敏感信息)
.env
.env.local
.env.production

# 密钥文件
*.key
*.p12
*.keystore

Vue3项目 .gitignore 核心配置

复制代码
# 依赖目录[citation:1][citation:5][citation:7]
node_modules/
.pnp/
.pnp.js

# 构建输出目录[citation:3][citation:5]
dist/
dist-ssr/
build/
out/
release/
deploy/

# 临时文件和缓存目录
.cache/
.tmp
.temp

# 日志文件[citation:1][citation:3][citation:7]
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# 本地环境变量文件[citation:1][citation:3]
.env
.env.local
.env.development.local
.env.test.local
.env.production.local

# IDE及编辑器配置文件[citation:1][citation:3][citation:4]
.idea/
.vscode/
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

# 操作系统生成文件[citation:1][citation:3]
.DS_Store
Thumbs.db

# 测试覆盖率报告[citation:3]
coverage/
.nyc_output/

# Lockfiles(根据团队约定选择是否忽略)
# package-lock.json
# yarn.lock
# pnpm-lock.yaml
相关推荐
卡洛斯(编程版4 小时前
大仓库推到GitHub大踩坑-Git LFS从安装到使用
git·github
玥轩_5214 小时前
Git命令速查手册
大数据·git·elasticsearch·gitee·github·命令速查
诸葛思颖9 小时前
把本地 Python 项目用 Git 进行版本控制并推送到 GitHub
git·python·github
chhanz20 小时前
git/github入门基操(终端版)
git·github
林晓lx1 天前
使用Git钩子+ husky + lint语法检查提高前端项目代码质量
前端·git·gitlab·源代码管理
诸葛思颖1 天前
一个本地 Git 仓库关联多个远程仓库
git
StarShip1 天前
git commit --amend 之后,想要修改为git commit , 如何处理?
git
dnpao1 天前
在服务器已有目录中部署 Git 仓库
运维·服务器·git
__Witheart__1 天前
Git 如何从某个 commit 新建分支
git