基本操作
- git add .
- git commit -m "fix: xxx"
- git push
开发工作流
常规操作
- 从
master
(正式环境)切分支feat-xxx-xxx
(当前业务简称) feat-xxx-xxx
代码merge
(合并)到text-release
(测试环境)- 测试环境通过测试后,将
feat-xxx-xxx
代码合并到master
- 从
多人多分支一次合并到
master
(俗称发车)- 测试通过后,从
master
切分支v2.x.x
(待发布版本) - 将
feat-xxx-xxx
、feat-yyy-yyy
等分支在github/gitlab网页上以New merge request
(mr)的形式发送合并请求(pull request
) - 等待相关负责人
code review
过后,再将v2.x.x
分支合并到master
- 测试通过后,从
mr存在冲突时(🌟为防止冲突建议使用这里的完整流程比较稳🌟)
- 从
master
切分支feat-xxx-xxx
feat-xxx-xxx
代码merge到rest-release
提交测试- 测试通过后,从
master
切分支v2.x.x
- 🚩
feat-xxx-xxx
合并v2.x.x
里面的代码(因为你在开发的过程中master/v2.x.x可能已经合了其他同事的代码了) - 这时有冲突解决冲突,并且本地代码最好再运行一遍确保万无一失
- 再将
feat-xxx-xxx
通过New merge request
的方式新建一个pull request
到v2.x.x
- 等待相关负责人
code review
过后Merge
代码
- 从
命令集
git stash
(代码暂存,非commit)
一般用在你在有代码修改的情况下需要切分支又不想提交commit时可用git stash
存储当前changegit stash save "save message"
给当前存储事件添加备注git stash list
查看stash存储列表git stash pop
恢复之前缓存的工作目录并删除这一条stash
git reset
(代码回退)- 第一步
git log
//获得commit信息 - 第二步 复制回退对应时间的commit hash值
- 第三步
git reset --soft xxxxxxx(commit hash值)
--hard
是不保存当前已修改的,--soft
是保存当前已修改的- 第四步
git push -f
//强制提交代码
- 第一步
git reflog
(时光穿梭机)- 代码被不小心回退了怎么修复回来?
- 第一步
git reflog
//获得所有的git操作 - 第二步
git reset --hard xxxxxxxx
git cherry-pick
- 修复到了指定hash点时,这个之后的就没了,如何加上来呢?
- 第三步
git cherry-pick xxxxxxx(需要被加上来的commit hash)
fork库拉取上游代码
- 第一步 添加upstream上游仓库的远程链接
git remote add upstream https://github.com/xx/repo
- 第二步
git pull upstream
- 或者拉取指定分支(如master)
git pull upstream master
本地更新远程分支列表
git remote update origin --prune
git fetch
是更新所有远程分支到本地(远程分支被删除的话本地origin更新后也会被删除)
git merge
(合并代码)- 合并Branch1代码到当前分支
git merge Branch1
- 合并Branch1代码到当前分支
git rebase
(合并提交的commit)- 🚩7/8操作最好在网页上通过创建
New merge request
来操作 - 一般步骤是merge,然后旁边有个选项是否rebase
- 如果勾选上,那么你merge过来的所有commits会被合并成一条commit
- 🚩7/8操作最好在网页上通过创建
git config
查看当前
.git
配置git config user.name git config user.email
设置当前
.git
用户/邮箱git config user.name "xxx" git config user.email "xxx@abc.com"
设置全局
.git
配置git config --global user.name "xxx" git config --global user.email "xxx@abc.com"
当存在多个gitlab/github账号时,
- 比如gitlab是公司的,邮箱也是公司发的,而github邮箱是自己的
- 这个时候最好不要直接共用全局配置
- 最好在单个项目内配置
- 因为
- git是以邮箱为准去匹配指定用户的
多个ssh钥匙共存
参考:https://www.cnblogs.com/hafiz...
为公司生成一对秘钥ssh key
ssh-keygen -t rsa -C 'yourEmail@xx.com' -f ~/.ssh/gitlab-rsa
为github生成一对秘钥ssh key
ssh-keygen -t rsa -C 'yourEmail2@xx.com' -f ~/.ssh/github-rsa
在~/.ssh目录下新建名称为config的文件(无后缀名)(可通过
vim config
创建)。
用于配置多个不同的host使用不同的ssh key,内容如下:# gitlab Host gitlab.com HostName gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab-rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github-rsa
远程办公之git代理
#只对github.com
git config --global http.https://github.com.proxy socks5://127.0.0.1:1080
#取消代理
git config --global --unset http.https://github.com.proxy
// 查看当前代理设置
git config --global http.proxy
git config --global https.proxy
// 设置当前代理为 http://127.0.0.1:1080 或 socket5://127.0.0.1:1080
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080
// 删除 proxy
git config --global --unset http.proxy
git config --global --unset https.proxy
大厂真心累🥱,做的活都一样,只不过更加精细化一些。也就在发布日当天发布过后才有一、、个人时间充充🔋
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。