【GIT】git入门到精通的 3200字使用指南,包含关键命令、工作流及高级技巧

git入门到精通使用指南,包含关键命令、工作流及高级技巧

  • 一、Git 基础配置
  • 二、基础工作流
    • 1. 仓库初始化
    • 2. 修改与提交
    • 3. 远程协作
  • 三、分支管理实战
  • 四、高级操作技巧
    • 1. 撤销更改
    • 2. 储藏(Stashing)
    • 3. 交互式变基(Rebase)
    • 4. 二分查找(Debug)
  • 五、高级配置优化
    • 1. .gitignore 示例
    • 2. Git 钩子(Hooks)
    • 3. 文件追踪优化
  • 六、工作流模型
    • 1. Git Flow
    • 2. GitHub Flow
  • 七、高级合并技巧
  • 八、灾难恢复
  • 九、效率增强工具

一、Git 基础配置

# 全局配置用户信息
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

# 生成 SSH 密钥(GitHub/GitLab 认证)
ssh-keygen -t ed25519 -C "[email protected]"
cat ~/.ssh/id_ed25519.pub  # 复制公钥到平台设置

# 设置默认编辑器
git config --global core.editor "code --wait"  # VS Code

二、基础工作流

1. 仓库初始化

# 创建新仓库
mkdir my-project && cd my-project
git init

# 克隆现有仓库
git clone https://github.com/user/repo.git
git clone -b develop https://github.com/user/repo.git  # 克隆特定分支

2. 修改与提交

# 查看状态
git status

# 添加文件到暂存区
git add file.txt           # 添加单个文件
git add .                  # 添加所有修改
git add -p                 # 交互式添加部分修改

# 提交变更
git commit -m "Add feature X"
git commit --amend         # 修正上次提交(包括修改信息)

# 查看历史
git log --oneline --graph --all  # 图形化历史

3. 远程协作

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

# 推送到远程
git push -u origin main    # 首次推送并建立追踪
git push                   # 后续简写推送

# 获取更新
git fetch                  # 仅获取元数据
git pull                   # 相当于 fetch + merge

三、分支管理实战

# 创建分支
git branch dev             # 创建
git checkout dev          # 切换
git checkout -b hotfix    # 创建并切换

# 合并分支
git checkout main
git merge hotfix --no-ff  # 禁用 fast-forward(保留分支历史)

# 解决冲突(手动修改文件后)
git add conflicted-file.txt
git commit -m "Resolve merge conflict"

# 删除分支
git branch -d feature     # 安全删除(已合并)
git branch -D feature     # 强制删除(未合并)

# 分支重命名
git branch -m old-name new-name

四、高级操作技巧

1. 撤销更改

# 撤销工作区修改
git restore file.txt           # 放弃指定文件的修改
git restore .                  # 放弃所有修改

# 撤销暂存区文件
git restore --staged file.txt  # 取消暂存

# 重置到指定提交
git reset --soft HEAD~1        # 撤销commit保留修改(在暂存区)
git reset --hard HEAD~3        # 彻底回退3个提交(慎用!)

2. 储藏(Stashing)

git stash                      # 临时保存修改
git stash push -m "WIP: login" # 命名储藏
git stash list                 # 查看储藏列表
git stash apply stash@{1}      # 应用特定储藏
git stash pop                  # 应用并删除最新储藏

3. 交互式变基(Rebase)

# 优化本地提交历史
git rebase -i HEAD~3

# 变基选项(编辑界面):
pick = 保留提交
reword = 修改提交信息
edit = 修改提交内容
squash = 合并到前一个提交
drop = 删除提交

# 解决冲突后继续
git rebase --continue

4. 二分查找(Debug)

# 定位问题提交
git bisect start
git bisect bad           # 当前版本有问题
git bisect good v1.0     # 标记过去正常版本

# Git 自动切到中间提交,测试后:
git bisect good          # 若正常
git bisect bad           # 若异常

# 结束时:
git bisect reset

五、高级配置优化

1. .gitignore 示例

# 忽略所有日志文件
*.log

# 忽略 node_modules
node_modules/

# 排除 .env 但包含 .env.example
.env
!.env.example

2. Git 钩子(Hooks)

# 创建预提交钩子
touch .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit

# 示例内容(检查代码风格):
#!/bin/sh
npm run lint # 若失败则中断提交

3. 文件追踪优化

# 停止追踪文件但保留本地文件
git rm --cached file.txt

# 追踪空目录(创建占位文件)
touch dir/.gitkeep

六、工作流模型

1. Git Flow

# 初始化工作流
git flow init
# 默认分支:
main    = 主分支
develop = 开发分支

# 功能开发
git flow feature start login
git flow feature finish login

# 发布流程
git flow release start v1.2
git flow release finish v1.2

2. GitHub Flow

Pull Request
Merge
main
feature/user-auth
hotfix/payment-bug

流程:

1. 从 main 创建新分支
2. 开发后推送到远程
3. 发起 Pull Request
4. Code Review 后合并

七、高级合并技巧

# 保留文件历史(重命名后)
git log --follow -- file.txt

# 合并特定文件
git checkout feature -- src/utils.js

# 暂存部分修改
git add -p  # 交互式选择变更块

八、灾难恢复

# 恢复误删分支
git reflog                         # 查找提交哈希
git checkout -b recovered-branch <hash>

# 强制推送到覆盖远程历史(慎用)
git push -f origin branch-name

九、效率增强工具

# 别名设置(~/.gitconfig)
[alias]
  st = status
  ci = commit
  br = branch
  df = diff
  lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

最佳实践:
- 小步提交(原子性修改)
- 写清晰的提交信息
- 多用 rebase 替代 merge 保持线性历史
- 定期 git gc 清理仓库
完整流程图:

继续修改
完成
Start
修改代码
git status
git add
提交
git commit
推送到远程?
git push
回到B
Pull Request
Code Review
批准
合并到main
返回修改

你可能感兴趣的:(java,git,后端,源代码管理,gitee,github,代码规范,svn)