Git 使用笔记

1. 全局配置

在首次使用Git之前,需要配置用户信息,这些信息会在每次提交时使用:

bash 复制代码
# 配置用户名
git config --global user.name "你的用户名"

# 配置邮箱
git config --global user.email "你的邮箱@example.com"

# 查看配置信息
git config --list

注意: 这是全局配置,只需要配置一次即可在所有Git仓库中生效。

2. Git核心概念

2.1 三个重要区域

  • 工作区(Working Directory):包含.git文件夹的目录,用于存放项目代码的地方
  • 暂存区(Staging Area):位于.git文件夹中的index文件,临时保存即将提交的文件修改
  • 版本库(Repository) :.git隐藏文件夹,存储项目的完整历史记录和配置信息

2.2 文件状态

Git中的文件有以下几种状态:

  • Untracked:未跟踪,新创建的文件
  • Modified:已修改,文件内容发生变化
  • Staged:已暂存,文件已添加到暂存区
  • Committed:已提交,文件已保存到版本库

3. 基本操作命令

3.1 查看状态和日志

bash 复制代码
# 查看文件状态
git status

# 查看详细提交日志
git log

# 查看简洁的提交记录
git reflog

3.2 文件操作

bash 复制代码
# 添加单个文件到暂存区
git add 文件名

# 添加所有文件到暂存区
git add .

# 提交暂存区文件到版本库
git commit -m "提交说明"

# 取消暂存区文件
git reset 文件名

# 回退到指定版本
git reset --hard 版本号

3.3 分支操作

bash 复制代码
# 查看分支
git branch

# 创建分支
git branch 分支名

# 切换分支
git checkout 分支名

# 创建并切换分支
git checkout -b 分支名

# 合并分支
git merge 分支名

4. 忽略文件

4.1 .gitignore文件

在项目根目录创建.gitignore文件,用于指定不需要版本控制的文件和目录:

gitignore 复制代码
# 忽略编译文件
*.class
*.jar

# 忽略临时文件
*.tmp
*.log

# 忽略目录
target/
node_modules/

# 忽略IDE配置
.idea/
.vscode/

4.2 常见忽略模式

  • *.txt:忽略所有.txt文件
  • !important.txt:不忽略important.txt文件
  • temp/:忽略temp目录
  • /build:只忽略根目录下的build文件

5. 远程仓库操作

5.1 基本远程操作

bash 复制代码
# 克隆远程仓库
git clone https://github.com/username/repository.git

# 关联远程仓库
git remote add origin https://github.com/username/repository.git

# 查看远程仓库信息
git remote -v

# 移除远程仓库关联
git remote remove origin

5.2 同步操作

bash 复制代码
# 推送到远程仓库
git push origin main

# 从远程仓库拉取
git pull origin main

# 获取远程仓库更新(不自动合并)
git fetch origin

6. 实用技巧

6.1 撤销操作

bash 复制代码
# 撤销工作区修改
git checkout -- 文件名

# 撤销上一次提交
git reset HEAD~1

# 修改最近一次提交信息
git commit --amend -m "新的提交信息"

6.2 查看差异

bash 复制代码
# 查看工作区和暂存区差异
git diff

# 查看暂存区和版本库差异
git diff --cached

# 查看两个版本间差异
git diff 版本号1 版本号2

7. 最佳实践

  1. 提交频率:经常提交,保持每次提交的改动相对较小
  2. 提交信息:写清晰、有意义的提交信息
  3. 分支使用:为不同功能创建不同分支,避免直接在主分支开发
  4. 代码审查:使用Pull Request进行代码审查
  5. 备份:定期推送到远程仓库进行备份

8. 常见问题解决

8.1 合并冲突

当多人修改同一文件时可能出现冲突:

bash 复制代码
# 查看冲突文件
git status

# 手动解决冲突后
git add 冲突文件
git commit -m "解决冲突"

8.2 误操作恢复

bash 复制代码
# 恢复删除的文件
git checkout HEAD -- 文件名

# 查找丢失的提交
git reflog
git checkout 提交哈希值