# Git 常用命令笔记
本笔记旨在整理 Git 的基础配置、本地与远程仓库管理、分支操作及一些实用技巧。
# 一、基础配置
# 1. 查看与设置用户信息
在首次使用 Git 前,需要配置全局的用户名和邮箱。
命令 | 功能说明 |
---|---|
git config --list |
查看当前的 Git 配置信息。 |
git config --global user.name "Your Name" |
设置全局用户名。 |
git config --global user.email "your.email@example.com" |
设置全局用户邮箱。 |
# 查看所有配置
git config --list
# 设置全局用户名和邮箱
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 2. 配置 SSH 密钥
为了免密与 GitHub 等远程仓库进行通信,推荐使用 SSH 协议。
- 生成 SSH 密钥对。
- 将公钥(通常是
~/.ssh/id_rsa.pub
)的内容添加到 GitHub 账户的 SSH keys 设置中。
配置完成后,可通过以下命令验证连接是否成功,出现欢迎信息即表示配置正确。
ssh -T git@github.com
# 二、本地仓库管理
# 1. 初始化仓库 (git init
)
在项目根目录中执行此命令,将会创建一个 .git
文件夹,用于存储版本库的所有信息。
git init
设置默认分支名:
新版 Git 推荐使用 main
作为默认主分支名,可以通过以下命令进行全局配置,避免每次 git init
时都出现提示。
git config --global init.defaultBranch main
删除本地仓库:
直接删除项目根目录下的 .git
文件夹即可。
# 在 Linux / macOS / Git Bash 中
rm -rf .git
# 2. 提交代码 (git add
& git commit
)
代码提交分为两步:首先使用 git add
将文件更改添加到暂存区,然后使用 git commit
将暂存区的内内容永久保存到本地仓库。
命令 | 功能说明 |
---|---|
git add <file> |
将指定文件的更改添加到暂存区。 |
git add . |
将当前目录下所有文件的更改添加到暂存区。 |
git commit -m "commit message" |
将暂存区内容提交到仓库,并附上提交信息。 |
git commit -am "commit message" |
将所有已跟踪文件的更改直接暂存并提交(跳过git add )。 |
# 3. 查看提交历史 (git log
)
git log
命令用于查看从近到远的提交历史。
命令 | 功能说明 |
---|---|
git log |
显示详细的提交历史(Commit ID, 作者, 日期, 提交信息)。 |
git log --stat |
在 git log 的基础上,显示每次提交所修改的文件列表。 |
git log --oneline |
以简洁的单行格式显示提交历史。 |
git show <commit_id> |
显示某次特定提交的详细变更内容(代码差异)。 |
# 查看简略历史
git log --oneline
# 查看某次提交的具体修改
git show 9b568e99
# 4. 版本回退 (git reset
)
git reset
可以将当前分支的 HEAD
指针移动到指定的提交记录,常用于撤销提交。
警告:
--hard
参数会丢弃工作区和暂存区中自指定提交以来的所有更改,操作具有破坏性,请谨慎使用。
# 回退到指定的 commit,并丢弃之后的所有修改
git reset --hard <commit_id>
# 示例:回退到 9b568e99 这个提交
git reset --hard 9b568e99
# 三、分支管理
# 1. 查看与状态检查
命令 | 功能说明 |
---|---|
git branch |
列出所有本地分支,并用 * 标记当前所在分支。 |
git status |
显示当前分支的状态,包括已修改、已暂存和未跟踪的文件。 |
# 2. 创建与切换分支
命令 | 功能说明 |
---|---|
git branch <branch_name> |
创建一个新分支,但仍停留在当前分支。 |
git checkout <branch_name> |
切换到已存在的分支。 |
git checkout -b <branch_name> |
创建一个新分支,并立即切换到该分支。 |
# 创建一个名为 "develop" 的分支并切换过去
git checkout -b develop
# 3. 合并分支 (git merge
)
将其他分支的更改合并到当前所在的分支。
流程示例: 将 develop
分支合并到 main
分支。
- 首先,切换到接收更改的目标分支
main
。git checkout main
- 然后,执行
merge
命令。git merge develop
# 4. 删除分支 (git branch -d
)
命令 | 功能说明 |
---|---|
git branch -d <branch_name> |
删除已合并的分支。如果分支包含未合并的更改,会提示失败。 |
git branch -D <branch_name> |
强制删除一个分支,无论其是否已合并。 |
# 删除已合并的 develop 分支
git branch -d develop
# 四、远程仓库协作
# 1. 关联远程仓库 (git remote
)
命令 | 功能说明 |
---|---|
git remote -v |
查看当前配置的所有远程仓库。 |
git remote add <name> <url> |
添加一个新的远程仓库,通常命名为 origin 。 |
git remote set-url <name> <new_url> |
更新一个已存在的远程仓库地址。 |
# 关联一个新的远程仓库,命名为 origin
git remote add origin git@github.com:user/repo.git
# 如果需要修改地址
git remote set-url origin git@github.com:user/new-repo.git
# 2. 推送至远程仓库 (git push
)
将本地分支的提交推送到远程仓库。
# 首次推送 master 分支,并设置上游跟踪关系
git push -u origin master
# 后续推送
git push
# 推送其他分支,如 test 分支
git push -u origin test
认证: 使用
https
协议推送时,通常需要输入个人访问令牌(Personal Access Token);使用ssh
协议则通过 SSH 密钥对自动认证。
# 3. 克隆远程仓库 (git clone
)
从远程仓库下载一个完整的项目副本到本地。
# 克隆默认主分支
git clone git@github.com:user/repo.git
# 克隆时指定特定分支
git clone -b release/v8.2 https://github.com/lvgl/lvgl.git
# 五、Git 实用技巧
# 1. 忽略文件 (.gitignore
)
通过在项目根目录创建 .gitignore
文件,可以指定不需要被 Git 跟踪的文件或目录(如编译产物、日志文件等)。
规则示例:
# 忽略所有 .a 文件
*.a
# 但不忽略 lib.a
!lib.a
# 忽略 build/ 目录下的所有内容
build/
# 忽略 doc/notes.txt 文件
doc/notes.txt
清理已跟踪文件: 如果某个文件在添加到 .gitignore
之前已经被提交,需要先从 Git 的索引中移除它,然后再次提交。
# 从索引中移除 build 目录,但保留本地文件
git rm -r --cached build/
# 提交 .gitignore 和移除操作
git commit -m "Update .gitignore and untrack build directory"
# 2. 重命名分支
# 场景一:分支未推送到远程
# 将 oldName 分支重命名为 newName
git branch -m oldName newName
# 场景二:分支已推送到远程
需要分步操作:
- 重命名本地分支
git branch -m oldName newName
- 删除远程的旧分支
git push origin --delete oldName
- 推送新分支并建立跟踪关系
git push -u origin newName