目录
- 1. Git 基本操作
- 1.1 添加文件到暂存区
- 1.2 提交更改到本地仓库
- 1.3 查看工作区状态
- 1.4 查看提交历史
- 1.5 查看引用日志(包括已删除的记录)
- 2. 版本回退与撤销
- 2.1 版本回退
- 2.2 查看已删除的提交记录
- 3. 分支管理
- 3.1 查看分支
- 3.2 创建并切换到新分支
- 3.3 合并分支
- 3.4 删除分支
- 4. 分支命名规范与用途
- 5. 忽略文件管理
- 5.1 创建 .gitignore 文件
- 6. 远程仓库操作
- 6.1 生成 SSH 公钥
- 6.2 查看公钥
- 6.3 添加远程仓库
- 6.4 拉取远程仓库代码
- 7. 常见问题与解决方案
- 7.1 如何解决合并冲突?
- 7.2 如何撤销已提交的更改?
- 7.3 如何查看远程仓库信息?
- 8. 总结
Git 是一个功能强大且广泛使用的版本控制工具,适用于个人项目和团队协作。本文整理并补充了常见的 Git 命令,涵盖基本操作、分支管理、版本回退、忽略文件配置、远程仓库操作等内容,帮助你更高效地使用 Git 管理代码。无论你是初学者还是有一定经验的开发者,这篇指南都能为你提供清晰且实用的参考。
1. Git 基本操作
1.1 添加文件到暂存区
git add .
- 作用:将当前工作目录下的所有更改(包括新建、修改、删除的文件)添加到暂存区。
- 说明:
git add .
会递归添加当前目录及其子目录下的所有更改。如果只想添加特定文件,可以使用git add 文件名
。
1.2 提交更改到本地仓库
git commit -m "提交信息"
- 作用:将暂存区的更改提交到本地仓库,并附上描述性的提交信息。
- 注意:
- 提交信息应简洁明了,清晰描述本次提交的内容,例如
git commit -m "Add user login feature"
。 - 如果提交信息为空,Git 会提示错误,建议始终提供有意义的提交信息。
- 提交信息应简洁明了,清晰描述本次提交的内容,例如
1.3 查看工作区状态
git status
- 作用:显示当前工作目录和暂存区的状态,告诉你哪些文件被修改、暂存或未跟踪。
- 使用场景:
- 检查哪些文件需要
git add
或git commit
。 - 确认当前分支和工作区是否干净。
- 检查哪些文件需要
1.4 查看提交历史
git log
- 作用:显示当前分支的提交历史,包括提交的哈希值(commit ID)、作者、日期和提交信息。
- 进阶用法:
git log --oneline
:以单行形式显示提交历史,简洁明了。git log --graph
:以图形化方式显示分支合并历史。git log --author="用户名"
:筛选特定作者的提交记录。
1.5 查看引用日志(包括已删除的记录)
git reflog
- 作用:显示所有引用操作的历史记录,包括提交、分支切换、版本回退等,即使某些提交已经被删除。
- 使用场景:
- 找回被
git reset
删除的提交。 - 查看分支的历史操作记录。
- 找回被
- 示例:
通过git reflog # 输出示例: # abc1234 HEAD@{0}: reset: moving to abc1234 # def5678 HEAD@{1}: commit: Add new feature
git reset --hard abc1234
可以恢复到指定的引用状态。
2. 版本回退与撤销
2.1 版本回退
git reset --hard commitID
- 作用:将当前分支的 HEAD 指针重置到指定的
commitID
,并丢弃该提交之后的所有更改(包括工作区和暂存区)。 - 注意:
--hard
是危险操作,会彻底丢弃未保存的更改,建议先用git status
确认工作区干净。- 如果需要保留工作区和暂存区的更改,可以使用
git reset --soft commitID
。
- 使用场景:撤销错误的提交或回退到某个历史版本。
2.2 查看已删除的提交记录
如前所述,git reflog
是查看已删除提交的利器。通过 reflog
,你可以找到被 git reset
或其他操作删除的提交的 commitID
,然后通过 git reset --hard commitID
恢复。
3. 分支管理
3.1 查看分支
git branch
- 作用:列出本地仓库中的所有分支,当前分支前会有一个
*
标记。 - 进阶用法:
git branch -r
:查看远程分支。git branch -a
:查看本地和远程所有分支。
3.2 创建并切换到新分支
git checkout -b dev
- 作用:创建名为
dev
的新分支,并立即切换到该分支。 - 等价操作:
git branch dev # 创建分支 git checkout dev # 切换到分支
3.3 合并分支
git merge 分支名
- 作用:将指定分支(
分支名
)的更改合并到当前分支。 - 操作步骤:
- 切换到目标分支(例如
git checkout master
)。 - 执行合并(例如
git merge dev
)。
- 切换到目标分支(例如
- 注意:
- 如果有冲突,Git 会暂停合并,提示解决冲突。
- 解决冲突后,需手动
git add
和git commit
完成合并。
3.4 删除分支
git branch -d b1
- 作用:删除已合并的分支
b1
。 - 注意:如果分支未合并,Git 会阻止删除,需使用强制删除:
git branch -D b1
- 强制删除:直接删除分支
b1
,无论是否已合并,谨慎使用。
4. 分支命名规范与用途
合理的分支命名和使用策略可以提高团队协作效率。以下是常见的 Git 分支模型:
- master:生产分支,包含可部署到生产环境的稳定代码。
- develop:开发分支,集成所有开发功能,供测试和验证。
- feature/xxxx:功能分支,用于开发新功能,完成后合并到
develop
分支。命名示例:feature/user-auth
。 - hotfix/xxxx:修复分支,用于修复生产环境的紧急 bug,完成后合并到
master
、develop
和test
分支。命名示例:hotfix/login-bug
。
5. 忽略文件管理
5.1 创建 .gitignore 文件
.gitignore
-
作用:通过
.gitignore
文件指定不被 Git 跟踪的文件或目录。 -
常见忽略内容:
- 临时文件:
*.log
、.DS_Store
。 - 依赖目录:
node_modules/
、venv/
。 - 配置文件:
.env
、config.secret.yaml
。
- 临时文件:
-
示例
.gitignore
文件:# 忽略日志文件 *.log # 忽略 node_modules 目录 node_modules/ # 忽略环境配置文件 .env
-
注意:
.gitignore
文件需提交到 Git 仓库,以确保团队共享忽略规则。- 如果文件已被 Git 跟踪,需先执行以下命令移除跟踪:
git rm -r --cached 文件名
6. 远程仓库操作
6.1 生成 SSH 公钥
ssh-keygen -t rsa
- 作用:生成 SSH 密钥对,用于安全连接远程 Git 仓库(如 GitHub、GitLab)。
- 步骤:
- 运行命令,按提示设置保存路径和密码(可直接回车使用默认设置)。
- 默认生成文件:
~/.ssh/id_rsa
(私钥)和~/.ssh/id_rsa.pub
(公钥)。
6.2 查看公钥
cat ~/.ssh/id_rsa.pub
- 作用:显示公钥内容,复制后添加到远程仓库(如 GitHub 的 SSH Keys 设置)。
- 注意:确保公钥正确添加到远程仓库,否则无法通过 SSH 推送代码。
6.3 添加远程仓库
git remote add origin git@<仓库地址>
- 作用:将本地仓库与远程仓库关联,
origin
是远程仓库的默认别名。 - 示例:
git remote add origin git@github.com:username/repository.git
6.4 拉取远程仓库代码
git pull
- 作用:从远程仓库拉取最新代码并合并到当前分支。
- 等价操作:
git fetch origin git merge origin/分支名
- 注意:如果本地和远程分支冲突,需先解决冲突。
7. 常见问题与解决方案
7.1 如何解决合并冲突?
- 执行
git merge 分支名
时,如果出现冲突,Git 会标记冲突文件。 - 打开冲突文件,手动修改冲突部分(通常以
<<<<<<<
、=======
、>>>>>>>
标记)。 - 解决冲突后,执行:
git add . git commit
7.2 如何撤销已提交的更改?
- 如果想撤销最后一次提交,但保留更改:
git reset --soft HEAD^1
- 如果想彻底撤销提交并丢弃更改:
git reset --hard HEAD^1
7.3 如何查看远程仓库信息?
git remote -v
- 作用:显示当前仓库关联的远程仓库地址。
8. 总结
通过以上命令和规范,你可以轻松管理 Git 仓库,实现代码版本控制、分支协作和远程同步。以下是快速参考表:
命令 | 作用 |
---|---|
git add . | 添加所有更改到暂存区 |
git commit -m "信息" | 提交更改到本地仓库 |
git status | 查看工作区状态 |
git log | 查看提交历史 |
git reflog | 查看引用日志(包括已删除记录) |
git reset --hard commitID | 回退到指定版本 |
git branch | 查看分支 |
git checkout -b 分支名 | 创建并切换到新分支 |
git merge 分支名 | 合并指定分支到当前分支 |
git branch -d 分支名 | 删除已合并分支 |
git branch -D 分支名 | 强制删除分支 |
git pull | 拉取远程仓库代码 |
git remote add origin 地址 | 添加远程仓库 |