0%

Git基本命令

Git 基本命令全解析:从入门到精通

Git 作为目前最流行的分布式版本控制系统,其命令是开发者日常协作和版本管理的基础。本文将系统梳理 Git 的核心命令,涵盖仓库初始化、配置管理、版本控制、分支操作、标签管理及远程协作等场景,帮助你快速掌握 Git 的使用技巧。

仓库初始化与配置

初始化本地仓库

1
2
# 在当前目录初始化 Git 仓库(生成 .git 目录)
git init

执行后,目录下会生成 .git 文件夹,存储 Git 版本控制的所有元数据(如分支、提交记录、配置等)。

配置用户信息

Git 通过用户信息区分不同开发者的提交,支持仓库级别全局级别配置:

1
2
3
4
5
6
7
8
9
10
11
# 仓库级别配置(仅当前仓库生效,存储在 .git/config 中)
git config user.name "你的用户名"
git config user.email "你的邮箱"

# 全局级别配置(所有仓库生效,存储在 ~/.gitconfig 中)
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"

# 查看配置信息
git config --list # 查看所有配置
git config user.name # 查看指定配置项

优先级:仓库级别配置 > 全局级别配置。

工作区与暂存区操作

查看文件状态

1
git status  # 显示工作区和暂存区的文件状态
  • 未跟踪(Untracked):新文件,Git 未记录。
  • 已修改(Modified):已跟踪文件被修改但未暂存。
  • 已暂存(Staged):已添加到暂存区,等待提交到本地库。

将文件添加到暂存区

1
2
3
4
5
6
7
8
# 添加指定文件
git add filename.txt

# 添加当前目录所有文件(包括新文件和修改文件)
git add .

# 添加所有修改的文件(不包括新文件)
git add -u

撤销工作区 / 暂存区修改

1
2
3
4
5
6
7
# 丢弃工作区的修改(用暂存区内容覆盖工作区)
git checkout -- filename.txt

# 将暂存区的文件撤回至工作区(取消暂存)
git reset HEAD filename.txt
# 或
git rm --cached filename.txt

提交与版本管理

提交到本地库

1
2
3
4
5
6
7
8
# 提交暂存区文件到本地库,需在编辑器中输入提交信息
git commit

# 直接添加提交信息(推荐)
git commit -m "提交说明:如修复登录bug"

# 跳过暂存区,直接提交已跟踪文件的修改
git commit -am "提交说明"

查看提交历史

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看完整提交历史(含哈希值、作者、时间、说明)
git log

# 简洁显示(一行一条记录)
git log --oneline

# 查看所有分支的提交历史(含回滚记录)
git reflog

# 查看指定文件的提交历史
git log --follow filename.txt

# 查看两次提交之间的差异
git log -p commit1_id..commit2_id

版本回滚与前进

通过移动 HEAD 指针实现版本切换,核心命令为 git reset

1
2
3
4
5
6
7
8
# 基于哈希值回滚(最常用,哈希值可通过 git log 或 git reflog 获取)
git reset --hard 634938c # 634938c 为目标版本的哈希值

# 回滚到上一个版本(^ 表示后退一步,^^ 后退两步)
git reset --hard HEAD^

# 回滚到前 n 个版本(~n 表示后退 n 步)
git reset --hard HEAD~3
git reset 三个参数的区别:
  • --hard:重置本地库、暂存区和工作区(谨慎使用,会丢失未提交的修改)。
  • --mixed(默认):重置本地库和暂存区,不影响工作区。
  • --soft:仅重置本地库,不影响暂存区和工作区。

比较文件差异

1
2
3
4
5
6
7
8
# 比较工作区与暂存区的差异
git diff filename.txt

# 比较暂存区与本地库最新版本的差异
git diff --cached filename.txt

# 比较两个版本之间的差异
git diff commit1_id commit2_id filename.txt

分支操作

分支是 Git 最强大的功能之一,用于并行开发(如功能开发、bug 修复),避免影响主分支。

查看分支

1
2
3
4
git branch          # 查看本地分支(* 表示当前分支)
git branch -r # 查看远程分支
git branch -a # 查看所有分支(本地 + 远程)
git branch -v # 查看分支及最新提交信息

创建与切换分支

1
2
3
4
5
6
7
8
# 创建分支
git branch dev # 创建 dev 分支

# 切换分支
git checkout dev # 切换到 dev 分支

# 创建并切换分支(推荐)
git checkout -b feature # 创建 feature 分支并切换到该分支

合并分支

将指定分支的修改合并到当前分支:

1
2
3
4
5
# 切换到目标分支(如 master)
git checkout master

# 合并 dev 分支到 master
git merge dev
解决合并冲突:

当合并时出现冲突(同一文件同一位置被修改),Git 会标记冲突文件,需手动编辑冲突部分,然后执行:

1
2
git add filename.txt    # 标记为已解决
git commit -m "解决合并冲突"

删除分支

1
2
3
4
5
6
# 删除本地分支(需先切换到其他分支)
git branch -d dev # 若分支未合并,会提示错误
git branch -D dev # 强制删除(即使未合并)

# 删除远程分支
git push origin --delete dev

其他常用分支命令

1
2
3
4
5
6
7
8
# 重命名分支
git branch -m oldname newname

# 查看分支合并关系
git log --graph --oneline --all

# 将 dev 分支的某个提交合并到当前分支
git cherry-pick commit_id

标签管理

标签(Tag)用于标记重要版本(如发布版本),便于后续回溯。

创建标签

1
2
3
4
5
6
7
8
# 在当前最新提交上创建轻量标签(仅含标签名)
git tag v1.0

# 在指定提交上创建标签
git tag v0.9 commit_id

# 创建带说明的注解标签(推荐,含作者、时间、说明)
git tag -a v1.0 -m "版本 1.0 发布" commit_id

查看标签

1
2
git tag                # 列出所有标签
git show v1.0 # 查看标签详情

推送与删除标签

1
2
3
4
5
6
7
8
9
10
11
# 推送指定标签到远程仓库
git push origin v1.0

# 推送所有标签到远程仓库
git push origin --tags

# 删除本地标签
git tag -d v1.0

# 删除远程标签
git push origin :refs/tags/v1.0

远程仓库协作

关联远程仓库

1
2
3
4
5
6
# 添加远程仓库并命名(别名通常为 origin)
git remote add origin https://github.com/yourname/yourrepo.git

# 查看远程仓库信息
git remote # 列出远程仓库别名
git remote -v # 列出别名及对应的 URL

克隆远程仓库

1
2
# 克隆远程仓库到本地(自动初始化仓库并关联远程)
git clone https://github.com/yourname/yourrepo.git

拉取远程代码

1
2
3
4
5
6
# 拉取远程指定分支并合并到当前分支(= fetch + merge)
git pull origin master

# 仅拉取远程代码,不合并(需手动 merge)
git fetch origin master
git merge origin/master # 合并拉取的远程分支

推送本地代码到远程

1
2
3
4
5
6
7
8
# 推送本地分支到远程(首次推送需关联分支)
git push -u origin master # -u 关联本地 master 与远程 master

# 后续推送(已关联)
git push origin master

# 强制推送(覆盖远程,谨慎使用!)
git push origin master --force

暂存工作区(git stash)

当需要临时切换分支但不想提交当前修改时,可使用 git stash 暂存工作区:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 暂存当前工作区的修改(已跟踪文件)
git stash

# 暂存包括未跟踪文件
git stash -u

# 查看所有暂存记录
git stash list

# 恢复最近一次暂存并删除该记录
git stash pop

# 恢复指定暂存(不删除记录)
git stash apply stash@{1} # stash@{1} 为暂存索引

# 删除指定暂存
git stash drop stash@{1}

欢迎关注我的其它发布渠道

表情 | 预览
快来做第一个评论的人吧~
Powered By Valine
v1.3.10