Git

【Git】Git基本命令

小破孩
2022-06-21 / 0 评论 / 318 阅读 / 正在检测是否收录...

以下是优化并完善后的 Git 常用命令笔记,补充了细节说明、操作场景及扩展用法,结构更清晰,实用性更强:

一、初始配置(首次使用 Git 必做)

# 配置全局用户名(所有仓库生效)
git config --global user.name "xiaopohai"  

# 配置全局邮箱(与 Git 服务器注册邮箱一致)
git config --global user.email "3584685883@qq.com"  

# 查看当前配置
git config --list  
  • 若需为单个仓库单独配置(覆盖全局),进入仓库目录后去掉 --global 即可。

二、版本库操作

1. 创建本地版本库

# 进入目标目录(Windows 示例)
cd E:/project  

# 创建文件夹(可选,也可直接在已有目录操作)
mkdir test  

# 进入文件夹
cd test  

# 初始化 Git 仓库(生成 .git 隐藏目录,存储版本信息)
git init  
  • 注意:.git 目录是版本控制核心,不要手动删除或修改

2. 从远程仓库克隆(初始化已有项目)

# 克隆远程仓库到本地(会自动创建与仓库同名的文件夹)
git clone <远程仓库地址>  

# 示例:克隆 GitHub 仓库
git clone https://gitee.com/honeyrh/8688web.git  

三、文件操作(工作区 → 暂存区 → 版本库)

1. 查看文件状态

# 详细显示工作区/暂存区文件状态(新增、修改、删除等)
git status  

# 简化输出(短格式,适合快速查看)
git status -s  

2. 添加文件到暂存区

# 添加当前目录所有文件(包括新增、修改,不包括删除)
git add .  

# 添加指定文件(支持通配符,如 *.php)
git add 文件名  

# 添加所有变化(包括新增、修改、删除的文件)
git add -A  # 或 git add --all  

3. 提交到版本库

# 提交暂存区文件到版本库,-m 后跟提交说明(必填,清晰描述改动)
git commit -m "初始化项目:添加首页、配置文件"  

# 若已跟踪的文件修改后,可跳过暂存区直接提交(不推荐新手使用)
git commit -am "修改登录逻辑"  

4. 删除文件

# 从版本库和工作区同时删除文件(彻底删除)
git rm 文件名  

# 仅从版本库删除(保留工作区文件,不再跟踪)
git rm --cached 文件名  

# 提交删除操作
git commit -m "删除无用的测试文件"  

四、远程仓库交互(推送/拉取)

1. 关联远程仓库

# 为本地仓库添加远程地址(别名建议用 origin,默认约定)
git remote add 别名 <远程仓库地址>  

# 示例:关联名为 origin 的远程仓库
git remote add origin https://gitee.com/honeyrh/8688web.git  

2. 查看/修改远程仓库

# 查看已关联的远程仓库(别名和地址)
git remote -v  

# 修改远程仓库地址
git remote set-url 别名 <新地址>  

# 删除远程仓库关联
git remote remove 别名  

3. 推送本地代码到远程

# 推送指定分支到远程(首次推送建议关联分支)
git push -u 远程别名 本地分支名  

# 示例:推送 master 分支到 origin 远程(-u 关联后,后续可直接 git push)
git push -u origin master  

# 推送其他分支(如 dev 分支)
git push origin dev  

4. 拉取远程代码到本地

# 拉取远程指定分支并合并到当前本地分支
git pull 远程别名 远程分支名  

# 示例:拉取 origin 远程的 dev 分支
git pull origin dev  

# 拉取时用变基(rebase)代替合并(减少冗余提交,推荐协作场景)
git pull --rebase origin dev  

解决特殊合并问题
当本地与远程仓库无共同历史(如首次合并),拉取时可能报错,需允许无关历史合并:

git pull origin master --allow-unrelated-histories  

五、版本控制(查看日志/切换版本)

1. 查看提交日志

# 查看完整提交日志(按时间倒序,最新的在最前)
git log  

# 简化日志(只显示一行,包含提交哈希和说明)
git log --pretty=oneline  

# 查看最近 N 条日志
git log -n 3  

# 显示分支合并图(直观查看分支关系)
git log --graph --pretty=oneline  

2. 查看所有操作记录(包括已删除的提交)

git reflog  
  • 用于:切换到旧版本后,想再切回新版本(通过此命令获取新版本的哈希值)。

3. 切换版本(回退/前进)

# 回退到上一个版本(HEAD 是当前版本,^^ 表示上上个,~3 表示前3个)
git reset --hard HEAD^  
# 等价于 git reset --hard HEAD~1  

# 回退到指定版本(通过 git log 或 git reflog 获取哈希值)
git reset --hard <提交哈希>  
# 示例:git reset --hard a1b2c3d  
  • --hard:强制覆盖工作区和暂存区,谨慎使用(未提交的改动会丢失)。

六、分支管理

1. 分支基础操作

# 查看所有分支(* 表示当前分支)
git branch  

# 创建新分支
git branch 分支名  

# 切换到指定分支
git checkout 分支名  

# 创建并立即切换到新分支(推荐,一步到位)
git checkout -b 分支名  
# 示例:创建并切换到 feature/pay 分支
git checkout -b feature/pay  

2. 分支合并与删除

# 切换到目标分支(如合并到 master,先切到 master)
git checkout master  

# 合并指定分支到当前分支
git merge 分支名  
# 示例:合并 feature/pay 到 master
git merge feature/pay  

# 删除已合并的分支(安全删除)
git branch -d 分支名  

# 强制删除未合并的分支(谨慎,可能丢失代码)
git branch -D 分支名  

解决合并冲突
合并时若出现冲突(同一文件同一位置修改),Git 会提示冲突文件,需:

  1. 打开冲突文件,找到 <<<<<<< HEAD(当前分支内容)、=======(待合并分支内容)、>>>>>>> 分支名 标记;
  2. 手动编辑保留正确内容,删除标记;
  3. 执行 git add 冲突文件git commit -m "解决合并冲突" 完成合并。

七、SSH 密钥配置(免密码推送拉取)

# 生成 SSH 密钥(-t 指定加密类型,-C 关联邮箱)
ssh-keygen -t rsa -C "3584685883@qq.com"  
  • 执行后一路回车(默认路径和空密码即可),生成的密钥在:

    • Linux/Mac:~/.ssh/id_rsa(私钥,保密)和 id_rsa.pub(公钥);
    • Windows:C:\Users\用户名\.ssh\id_rsa.pub
  • 配置步骤

    1. 打开 id_rsa.pub,复制全部内容;
    2. 登录 Git 服务器(如 Gitea/GitHub),进入「个人设置 → SSH 密钥」,添加复制的公钥;
    3. 之后可用 SSH 地址(如 git@https://gitee.com/honeyrh/8688web.git)操作远程仓库,无需输入密码。

八、其他实用命令

1. 清理未跟踪文件/目录(谨慎使用)

# 预览要删除的未跟踪文件/目录(安全,先看再删)
git clean -nfd  

# 强制删除未跟踪文件(-f)和目录(-d)
git clean -fd  
  • 用途:删除工作区中未被 Git 跟踪的临时文件、编译产物等,避免提交无关文件。

2. 暂存工作区改动(临时切换分支时用)

# 暂存当前工作区所有未提交的改动
git stash  

# 查看暂存列表
git stash list  

# 恢复最近一次暂存的改动(并删除暂存记录)
git stash pop  

# 恢复指定暂存(通过 git stash list 查看索引,如 stash@{0})
git stash apply stash@{0}  

3. 丢弃工作区修改

# 丢弃指定文件的工作区修改(未 add 到暂存区的改动)
git checkout -- 文件名  

# Git 2.23+ 推荐用 restore(更清晰)
git restore 文件名  

通过以上整理,覆盖了 Git 日常使用的核心场景,命令更规范,补充了注意事项和扩展用法,便于新手快速上手和日常参考。

0

评论 (0)

取消