GIT常用操作
在多人开发的项目中GIT常常扮演着一个非常重要的角色,熟练的使用GIT命令有利于在开发中提升开发效率。那么下面我们来看看GIT有哪些常用的操作吧。
初始化GIT
git init
克隆代码
git clone [仓库地址] # 克隆默认分支
git clone -b [分支名] [仓库地址] # 克隆到指定分支
拉取代码
git pull # 拉取当前所在分支
git pull origin [分支名] # 拉取指定分支
分支新建、切换与查看
git branch [分支名] # 新建分支
git branch # 查看本地分支
git branch -a # 所有分支
git fetch # 获取远程分支(远程分支更新时常用)
git checkout [分支名] # 切换分支
git checkout -b [分支名] # 新建并切换分
git checkout -b [分支名] origin/[分支名] #新建并切换与远程分支,且与远程分支同步的
添加到暂缓区域
git add [file1] [file2] ... # 添加一个或多个文件到暂存区
git add [dir] # 添加指定目录到暂存区,包括子目录
git add . # 添加当前目录下的所有文件到暂存区
取消暂存
git restore --staged . # 取消所有暂存文件
git restore --staged [文件名] # 取消单个文件
git restore --staged [文件1] [文件名2] ... #取消多个文件
提交暂存
git commit -m '[描述]'
撤回
git reset [版本号] # 会退到指定版本
git reset --hard # 放弃更改
代码推送到远程仓库
git push # 推送到当前远程分支
git push origin [分支名] # 推送到指定分支
git push origin [分支名] --force # 强制推送到指定分支
合并代码
git merge [分支1] # 会保留分支结构和原始提交记录不同
git rebase [分支1] # 是在公共祖先的基础上,把新的提交链截取下来,在目标分支上进行重放,逐个应用选中的提交来完成合并
git cherry-pick [版本号] # 合并指定版本
添加新的远程仓库
git remote add [名称] [仓库地址]
有用的辅助操作
git status # 状态查询
git log # 提交日志查询
git config -l # git配置查询
GIT应用场景小连招
场景一:
客户公司分别找了A、B、C三个公司做同一个系统的不同模块,有prod、pre-prod、uat三个分支,其中uat作为测试分支,每个公司开发好后都需要将自己的代码合并到uat分支上进行发布和测试;pre-prod作为予发布分支,每公司测试完后就需要将自己的代码合并到该分支等待生成发布;prod作为生产分支,由A公司负责将pre-prod合并到该分支上进行发布。
GIT连招如下:
git checkout pre-prod
git checkout -b pre-prod-copy
#开发完后
git add .
git commit -m '[描述]'
#发布测试uat
git checkout uat
git merge pre-prod-copy
git push origin uat
#测试完成后
git checkout pre-prod
git merge pre-prod-copy
git push origin pre-prod
温馨提示:多个团队开发时合并到共享分支切记勿用rebase命令,一旦发现合并失误,回退代码会比较麻烦。
场景二:
该项目有一个uat分支和dev分支。dev作为开发分支,uat作为测试分支,开发完成后需合并到uat分支进行测试。正在开发到一半的时候,收到一个需要紧急修复的bug。
连招如下:
#当前处于dev分支未暂存更改
git add .
git commit -m '[描述]' #版本1
git checkout uat
git pull
git checkout -b uat-fix
#修复完成后
git add .
git commit -m '[描述]'
git push origin uat
git checkout dev
git log
#获取到版本1之前的版本号A
git reset [版本号A]
#开发完成后
git add .
git commit -m '[描述]' #版本2
git checkout uat
git pull origin uat
git checkout dev
git merge uat
git checkout uat
git merge dev
git push origin uat
之所以reset是因为可以减少提交记录,让提交记录更加简洁。
场景三:
提交代码到远程后,发现提交错误,需要撤回刚才的提交
连招如下:
git log
#获取到刚刚提交版本的前一个版本号A
git reset [版本号A]
git reset --hard
git push --force