前言
随着 git 的使用普遍化,现在更需要关注使用的规范流程,在此纪录。
目录
- 漂亮的徽章
- 更好的 pull
- 配置代理及取消代理
- rebase 命令修改 commit 提交历史
- Git-merge 时忽略文件
漂亮的徽章
持续集成
npm
自定义
可以自定义修改 左侧 label 文字,右侧颜色
其他
更好的 pull
起因
git pull origin xxx --rebase
# 直接按 rebase 的方式执行 pull
git config --global pull.rebase true
使用 rebase 就感觉所有人都在同一条直线上开发一样,很干净的 log,看着很舒服,而直接使用 pull 的 log 看起来就很乱。
git pull --rebase
* | b9feea8 - chore: 添加C前往A埋点 (6 hours ago) <yanyue404>
* | b3047fe - fix: ISO8601 time (6 hours ago) <yanyue404>
* | bfb6c84 - test: formatTimeStr 兼容 ios (7 hours ago) <yanyue404>
* | 0e13196 - chore: IOS 时间处理 (22 hours ago) <yanyue404>
* | f15a0e8 - chore: 游客在名片页面进行授权 (24 hours ago) <yanyue404>
* | ee8b125 - chore: 完善个人名片 (25 hours ago) <yanyue404>
* | deb7a5a - chore: 个人名片添加用户角色校验 (26 hours ago) <yanyue404>
* | 5106b02 - chore: 开始识别用户角色 (27 hours ago) <yanyue404>
* | f16b6af - chore: 更换 appid (31 hours ago) <yanyue404>
* | 7216da4 - chore: 同步 code (31 hours ago) <yanyue404>
* | 9e542b4 - chore: uat 更新 (6 days ago) <yanyue404>
* | 473e311 - fix: 修改环境 (6 days ago) <yanyue404>
* | f54ae0f - chore: 埋点 (5 hours ago) <yanyue404>
git pull
* | ae57454 - feat: token 过期强制重新认证 (2 days ago) <yanyue404>
* | 1b02194 - Merge remote-tracking branch 'origin/prod' into prod (2 days ago) <Joe>
|\ \
| * | 6284b85 - fix: 登录流程短视频播放 (2 days ago) <yanyue404>
| * | 2bcb162 - styles: canvas 分享图位置优化 (2 days ago) <yanyue404>
| * | d4c66a6 - chore: 页面分享控制 (2 days ago) <yanyue404>
| * | 91baa28 - chore: 个人名片非分享人文字修改 (2 days ago) <yanyue404>
* | | 60715e9 - 修改保单判断 (2 days ago) <Joe>
|/ /
* | 85f1032 - Merge remote-tracking branch 'origin/prod' into prod (2 days ago) <Joe>
|\ \
| * | ab884df - feat: 个人名片分享页授权 (4 days ago) <yanyue404>
* | | e603434 - 优化加载速度 (2 days ago) <Joe>
|/ /
* | a255e59 - 微调样式 评论换行 (4 days ago) <Joe>
* | 7251630 - Merge remote-tracking branch 'origin/prod' into prod (4 days ago) <Joe>
|\ \
| * | 1bd08fc - chore: loading 优化 (4 days ago) <yanyue404>
* | | 7bc0e9e - 修改视频列表问题 (4 days ago) <Joe>
|/ /
* | 9e328af - 1.取消我的视频 个人名片换上来 (4 days ago) <Joe>
配置代理及取消代理
Error: Filed to connecto to github.com port 443: Time out
# 设置
git config --global http.proxy http://127.0.0.1:51349
# 取消
git config --global --unset http.proxy
rebase 命令修改 commit 提交历史
合并最近提交的历史,将 ba4358d
到 a549037
变为一个 commit
# 输入
git log --online
# 输出
ba4358d (HEAD -> master, origin/master, origin/HEAD) docs: 重
ba4358d Update README.md
ba4358d Update README.md # 此条目以上合并为一条
36f95d9 docs
0312afb init
准备合并
git rebase -i 36f95d9 | git rebase -i HEAD~3
选择合并
# 输出
pick ba4358d '注释**********'
pick ba4358d '注释*********'
pick ba4358d '注释**********'
# pick 的意思是要会执行这个 commit
# squash 的意思是这个 commit 会被合并到前一个commit (省略写法 s)
# 在 vim 命令下输入 i 进入编辑模式,编辑完成后 :eq 保存退出
# 输入
pick 3ca6ec3 '注释**********'
s 1b40566 '注释*********'
s 53f244a '注释**********'
保存完成后,你有两个选择
git rebase --continue # 确认 rebase
git rebase --abort # 取消 rebase
#确认后,就可以上传到远程了。
如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口, 输入:wq
保存并推出:
# This is a combination of 4 commits.
#The first commit’s message is:
注释......
# The 2nd commit’s message is:
注释......
# The 3rd commit’s message is:
注释......
# Please enter the commit message for your changes. Lines starting # with ‘#’ will be ignored, and an empty message aborts the commit.
查看历史,已经改变
git log --oneline
d2d71a5 (HEAD -> master) Update README.md
36f95d9 docs
0312afb init
git push -f # 强制覆盖远程
git commit --amend -m "新的注释" # 修改最新的 git commit 注释
Git-merge 时忽略文件
提醒: 只能 master 合并其他分支时忽略其他分支上的文件, 其他分支合并 master 无法忽略 master 上的文件. (master 为默认主分支)
- 创建自定义 merge driver
git config --global merge.ours.driver true
- 在要被 merge 的分支上创建.gitattributes 文件,并且在文件中置顶不 merge 的文件名
project.config.json merge=ours
fetch.js merge=ours
app.js merge=ours
- 回到要合并到的分支 master,执行 merge:
git merge uat
在 uat
分支上的project.config.json
、fetch.js
、app.js
就不会被合并了 !
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。