1 分钟阅读

0x01 工作区与版本库

Git 基本工作流程

Git 分为三个区:暂存区、工作区、版本库。

# 将所有修改加入暂存区
git add .
# 将修改提交到分支
git commit -m "description message"
# 查看工作区状态
git status
# 查看工作区与版本库差异
git diff HEAD -- filename

状态反馈类型

Changes not staged for commit:已修改但未暂存的文件

Untracked files:未跟踪的新建文件

Changes to be committed:已暂存待提交的文件

working directory clean:工作区干净,与版本库一致

0x02 工作区分支管理

基本分支操作

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

# 查看与合并
git branch                 # 查看当前分支(*标记当前分支)
git merge dev              # 将dev分支与当前分支合并

# 清理与查看
git branch -d dev          # 删除分支
git status                 # 查看合并冲突文件
git log                    # 查看分支合并情况

# 图形化查看分支合并
git log --graph --pretty=oneline --abbrev-commit

分支合并策略选项

  • --ff:默认策略,尽可能使用快进合并
  • --no-ff:总是创建合并提交
  • --ff-only:仅允许快进合并,否则拒绝合并

工作现场保存与恢复

git stash                  # 保存工作现场
git stash apply            # 恢复工作现场
git stash drop             # 删除保存的现场
git stash pop              # 恢复并删除现场
git stash list             # 查看所有保存的现场
git stash apply stash@{0}  # 恢复指定版本的现场

远程协作开发

Fork 工作流

# 设置原始代码库别名
git remote add upstream git://github.com/user_name/proj_name.git
git fetch upstream         # 获取原始代码库更新

# 同步与合并
git push origin master     # 提交到自己的代码库
git merge upstream/master  # 合并原始代码库更新

多账号管理

代码提交策略

个人开发流程中,没个新功能进行一次 commit,方便后续对每个 commit 进行单独测试。

每天结束前至少进行一次 push 操作,上传代码到远程服务器,保证所有提交都可以保留在版本库中。

对于离线开发场景:可以连续几天本地开发并 commit,上线后 push 所有修改,保持完整的开发历史记录。

但对于企业级别开发中,最好每次 commit 后,尽可能快完成 Push。

一方面便于使用线上 CI 工具进行代码监测,另一方面避免代码抢占现象,可能会引发代码冲突。

Stash区使用场景

最常见的场景就是临时切换分支做Hotfix时候,未提交代码不足以作为一个commit,同时又不想丢弃:

# 在 dev 分支上
# ... 修改了一些文件 ...

# 此时需要切到 main 分支修复 Bug
git stash           # 将未完成的修改存入“储物柜”
git checkout main   # 现在工作目录是干净的了,可以顺利切换分支

# ... 在 main 分支上修复 Bug 并提交 ...

# 切换回原来的分支
git checkout dev
# 从“储物柜”取出之前暂存的修改,恢复工作现场
git stash pop

标签:

分类:

更新时间: