Git - 代码管理快速通关 👍
Kora 2021-7-1 git技术点 true 浏览量
# Git 基础开发命令
# 项目搭建
// 1. 拉取
$ git clone <http/ssh(线上仓库)>
$ git pull origin dev // 一般clone会携带所有分支信息,不需要单独拉取(所需拉取仓库分支)
// 2. 分支管理
$ git branch -a // 查看分支
$ git branch <newBranch> // 新增分支(勿重名)
$ git checkout <newBranch> // 切换分支(如 git checkout develop)
// 3. 上传流程
$ git add .
$ git commit -m<提交日志> // (如 git commit -m'初始版本')
$ git push // 默认提交 clone 线上仓库,可以 git push origin \*\*不同仓库(不建议使用)
// 新建分支与新建分支提交差异(上传流程最后一步)
$ git push --set-upstream origin <newBranch> // 上传线上新分支(如 git push --set-upstream origin develop)
# 项目开发中
/**
* 注意:如果团队合作且同分支开发,每次提交代码必须遵循如下流程
* 拉取 -> 无冲突 -> 上传
* (或)
* 拉取 -> 冲突 -> 回滚 -> 拉取 -> 回滚提取,合并 -> 上传
* **/
// 1. 拉取
$ git pull
// 冲突处理
$ git stash // 本地回滚
$ git pull
$ git stash pop // 回滚提取(需到项目内手动解决冲突,可全局搜索`<<<<<<<<<<`)
// 2. 上传
$ 同上(项目搭建上传流程)
# Git 拓展
# 多私钥配置
# 分支合并
/**
* 注意:
* 1. 合并时,合并分支与被合并分支均需提交线上
* 2. 若合并存在冲突,需手动解决冲突后提交代码(可全局搜索`<<<<<<<<<<`)
* **/
$ git merge dev // dev分支合并至当前所在分支
# 删除分支
// 1. 删除本地
$ git branch -D <分支名称> // 如 git branch -D develop
// 2. 删除线上
$ git push origin --delete <分支名称> // 如 git push origin --delete develop
# 分支重命名
$ git branch -m <oldName newName> // 本地更名(如 git branch -m develop develop2)
$ git push --delete origin <oldName> // 删除远程老分支
$ git push origin <newName> // 上传新分支
$ git branch --set-upstream-to origin/<newName> // 本地与远程建立连接
# 删除无用 commit
$ git log // 查看commitLog
$ git reset --hard <commit_id> // 本地回滚至指定commit_id
$ git push origin HEAD:master --force // 强制推送线上
# 切换至指定 commit
$ git log // 查看commitLog
$ git checkout <commit_id> // 切换指定commit_id
$ git checkout -b <newBranch commit_id> // 本地新建newBranch分支记录commit_id
$ git push --set-upstream origin <newBranch> // 强制推送线上
# Tag 的问题
/**
* 注意:
* 1. tag就是一个只读的branch,是静态的;
* 2. branch是一个分支;tag是分支上的一个里程碑;
* **/
// 1. tag标记、提交
$ git add .
$ git commit -m “fixed some bugs”
$ git tag -a <tag名> -m <tag备注> // 标记tag(如 git tag -a 1.0.1 -m "Release version 1.0.1")
$ git push origin --tags
// 2. tag删除
$ git tag -d <tag名> // 删除本地(如 git tag -d 1.0.1)
$ git push origin :refs/tags/<tag名> // 删除线上(如 git push origin :refs/tags/1.0.1)
// 3. 查看tag
$ git tag // 查看列表
$ git show <tag名> // 查看当前tag详细信息
// 4. tag升级
$ git checkout -b <迁出branch名> <tag名> // tag迁出分支(如 git checkout -b tagToBranch 1.0.1)
$ git checkout <迁出branch名> // 切换tag迁出分支,在此分支修改迭代
$ git tag -a <tag名> -m <tag备注> // 标记tag(如 git tag -a 1.0.2 -m "Release version 1.0.2")
$ git push origin --tags
# 异常问题
# 推送报错
GitLab: You are not allowed to force push code to a protected branch on this project
解决:
1. Settings -> Repository -> Protected Branches -> Unprotect // 不建议使用,处理完后建议重新打开
2. Settings -> Repository -> Protected Branches -> Allowed to push配置可修改角色
# push 代码超过 100M
fatal: fatal: sha1 file stdout write error: Broken pipe The remote end hung up unexpectedly error
解决:
git config http.postBuffer 524288000 // 提高提交上限(500*1024*1024 = 500M)
git config -l // 查看配置是否成功