小白的git使用手册

102 阅读4分钟

summary:笔记主要记录了用得到的git操作,在团队开发中分支管理的流程和注意事项,记录了一点git场景题

一、项目初始化设置

1.1 配置信息:

# 局部设置(仅当前仓库)
git config user.name "你的姓名"
git config user.email "你的邮箱"
# 如需全局配置:
git config --global
# 设置默认分支名
git config --global init.defaultBranch main

1.2 仓库配置

# 在当前目录初始化
git init
# 克隆远程仓库
git clone <仓库地址> 
# 克隆分支
git clone -b <分支名> <仓库地址>

二、日常提交撤回等操作

2.1 查看状态

# 查看工作区状态
git status
# 查看工作区与暂存区的差异
git diff 
# 查看暂存区与最新提交的差异
git diff --cached     

2.2 添加文件到暂存区

git add <文件名>
git add .   # 添加所有文件

2.3 提交操作

git commit -m "提交信息"

2.4 撤销操作

# 撤销工作区的修改(都行)
git checkout -- <文件名>   #将文件恢复到最后一次提交的状态(下同)
git restore <文件名>   
# 撤销暂存区的文件
git reset HEAD <文件名>
git restore --staged <文件名> 

2.5 查看日志

# 基本日志
git log
# 查看特定提交的详细信息
git show <提交哈希>
git show HEAD    # 查看最新提交

三、分支管理

3.1 分支须知

  1. 两大绝对不能提交代码的主分支:master(main)develop

CEO办公室 (main) ← 只有最终确定的决策才能到这里,线上稳定运行的版本

管理层会议室 (develop) ← 各部门汇报成果,讨论整合方案,部门预研发的功能

个人工作室 (feature) ← 每个员工独立完成自己的工作

  1. 开发流程
# 克隆项目
git clone 
# 查看所有分支
git branch -a
# 切换到开发分支
git checkout develop
#拉取最新代码
git pull origin develop
#从当前分支创建并进入新分支feature
git checkout -b feature/'需求名称'
# ... 编写代码后 ...
git add .
git commit -m "feat: 备注"
git commit -m "feat: 备注"
# 推送到远程
git push -u origin feature/'需求名称'

3.代码审查合并 :

# 团队 Leader 审查代码后,合并功能分支
git checkout develop
git pull origin develop
git merge --no-ff feature/'需求'
git push origin develop

# 删除已合并的功能分支
git branch -d feature/'需求'
git push origin --delete feature/'需求'

4.如若出现bug,需要用到hotfix分支,拉取分支后进行修复,同时合并到main和develop上。

3.2 分支基本操作

# 查看分支
git branch         # 本地分支
git branch -a      # 所有分支
git branch -r      #远程分支
# 创建分支
git checkout -b <分支名>  # 创建并切换
git switch -c <分支名>    # 新语法
# 删除分支
git branch -d <分支名>   # 安全删除
git branch -D <分支名>   # 强制删除
# 切换分支
git switch <分支名>   
#分支合并
git merge <分支名>

3.3 rebase介绍

rebase 的字面意思是"重新设置基点",它可以把一系列提交"移动"到新的基础提交上。小项目或个人项目用了rebase时graph会清晰很多,但是大项目不建议使用,所以简单介绍使用。

变基前:
      A---B---C  feature分支
     /
D---E---F---G  main分支

变基后:
D---E---F---G---A---B---C   #feature分支移到了G后面

冲突处理:

# 解决冲突后
git add file.txt
git rebase --continue
# 或者跳过这个提交
git rebase --skip
# 或者中止变基
git rebase --abort

四、远程仓库

4.1常用操作

# 查看远程仓库
git remote -v           # 详细信息
# 添加远程仓库
git remote add origin <仓库地址>
# 基本推送
git push origin <分支名>
# 首次推送(设置上游分支)
git push -u origin <分支名>
# 拉取更新
git pull origin <分支名>
git pull         # 拉取当前分支的上游
# 获取远程更新但不合并
git fetch origin

五、面试场景题

5.1 分支误提交到main的解决方案

情况一、还没有推送到远程仓库
# 撤销最后一次提交,保留代码修改
git reset --soft HEAD~1
# 创建正确的分支
git checkout -b feature/''
git commit -m "正确的提交信息"

情况二、已经推送了
# 创建回滚提交
git revert <错误提交的hash>
git push origin main

# 然后在正确分支重新提交
git checkout -b feature/correct-branch
git cherry-pick <错误提交的hash>

5.2 版本冲突

# 查看冲突文件
git status
# 编辑文件,移除冲突标记
# 标记冲突已解决
git add 
# 完成合并
git commit -m "解决了冲突"

六、提示

1.绝不直接向 main 或 develop 推送代码。
2.开始新任务前,永远先 git pull origin develop。
3.工作在你的 feature 分支,保持其短小和专注。
4.频繁地 commit ,并编写有意义的 commit message。
5.定期地 rebase develop 分支,保持你的分支与主干同步。
6.遇到搞不定的冲突,不要慌,不要随意操作,立即向你的同事或导师求助。
7.拥抱代码审查,这是最好的学习机会。

顺便推荐一个自学git的小网站Learn Git Branching