git常用命令速查和分支管理

287 阅读5分钟

总结一下自己开发中常用的git命令,供日后随时查看,这些命令已经基本满足一般的开发要求,以后会根据需要不断更新。如果要深入了解推荐我学习git的启蒙教程:廖雪峰Git教程 和官方的Git 手册

下载

  1. 到官网下载安装包安装(window 或 mac os) 下载
  2. 命令安装(ubuntu)
sudo apt-get install git

配置

--global是全局配置, --local是项目配置

git config --global --list
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

创建一个git管理的项目

  1. 从远程仓库克隆
git clone <仓库地址>
  1. 空目录下创建
git init
  1. 关联远程仓库
git remote add origin <仓库地址>  // 初次关联
git remote set-url origin <仓库地址>  // 修改关联

分支管理命令

// 查看分支
git branch 
git branch -a
// 分支状态
git status
// 变更历史
git log
// 创建分支
git checkout -b 新分支名
// 删除分支
git branch -D 分支名
git push origin -d 远程分支名
// 合并分支
git merge 目标分支
// 拉取远程分支合并
git pull origin 远程分支名
// 推送到远程
git push origin 远程分支名

几条比较好用的命令

// 修改最新commit
git commit --amend

// 回复到某个提交
git reset <commit hash>

最简单的团队协作流程

git clone <仓库地址> 
git add [ . 或 文件]
git status
git commit -m "commit的信息"
git push  // 如果失败,先执行 git pull ,然后再次 push

基于branch的团队协作流程

git clone <仓库地址> 
git checkout -b [自己的分支或功能的分支]
git add [ . 或 文件]
git status
git commit -m "commit的信息"
git push origin <分支>  // 如果失败,先执行 git pull origin <分支> ,然后再次 push

利用 github 或 gitlab的 merge request功能进行代码审核和合并

  1. 创建一个merge request, 如果提示可以合并,点击按钮创建一个merge request。如果提示不能合并,表示代码有冲突,执行下面命令:
git fetch origin master //拉取远程master分支(假定要合并到master)
git merge origin/master 
//解决冲突后提交新 commit
git push origin <分支>

然后重新创建merge request就可以了。 2. 将merge request 给其他人审核,如果没有问题就可以直接点击merge request按钮,这时分支已经被合并了。如果有修改意见,可以在本地分支上修改后再次执行上面的步骤,但不需要再新建merge request , 重新push你的代码即可。 3. 成功合并后可以拉取合并分支的最新代码,删除被合并的分支

git checkout master
git pull
git branch -d <分支>
git push origin -d <分支>

rebase

  1. 使用rebase代替merge。团队应统一选用哪种方式合并分支,避免混乱。
//当前分支为 branch1
git rebase master // 假定要合并到master
git checkout master
git merge branch1 

执行git rebase master 如果有冲突,在branch1分支上处理冲突并提交新commit,然后继续rebase:

git rebase --continue

如果不想处理冲突,可以取消rebase:

git rebase --abort

stash

临时保存当前分支的改动,但不能在另一个分支上再运行该命令,否则会被覆盖

git stash // 在branch1上临时保存改动
git checkout master 
... // 到master上处理事情
git checkout branch1
git stash pop //找回之前的改动

tags

标签

git tag <tagname> //在当前commit上打标签
git tag <tagname> <commit> //在指定commit上打标签
git tag -a <tagname> -m "message" //添加标签说明
git tag //查看标签
git checkout <tagname> //切换到tag

分支管理

没有一成不变的规范,根据项目、团队规模的不同设计最适合的管理规范 中小型项目参考: 开发分支 develop 测试分支 test 发布分支 release 主分支 master

  1. 在master基础上新建开发分支,再从开发分支根据需求或成员新建子分支,开发完成后将子分支合并到总开发分支;
  2. 将开发分支合并到测试分支,部署测试分支到测试环境提测。从测试分支新建bug修复分支,修复完成后合并到测试分支并发布提测该bug;
  3. 将测试分支合并到发布分支,部署发布分支上线。如遇到线上问题,从发布分支新建hotfix分支,修复后部署测试环境测试,测试完成后合并到发布分支上线。
  4. 发布上线后将发布分支合并到master分支,保持master为最新代码

大型项目参考: 需求分支 feature 预发布分支 release 主分支 master

  1. 在master基础上新建各需求分支,需求分支下可继续细分子分支。每个需求分支对应部署一个需求环境,在需求环境中开发和测试。测试阶段,从需求分支新建bug修复分支,修复完成后合并到需求分支并发布提测该bug;
  2. 需求测试完成后将需求分支合并到预发布分支,所有需求分支都合并后将预发布分支部署到集成测试环境进行总体验证;
  3. 将预发布分支发布上线,如遇到线上问题,从预发布分支新建hotfix分支,修复后部署集成环境测试,测试完成后合并到预发布分支上线。
  4. 发布上线后将预发布分支合并到master分支,保持master为最新代码