Contributors Forks Issues MIT License Stargazers

Git简易自用笔记


基本知识

1、相关工具

gitweb

- fcgiwrap
  [https://blog.twofei.com/642/](https://blog.twofei.com/642/)
    - 使无法使用CGI的服务器可以跑CGI
- spawn-fcgi
    - 平滑创建fcgiwrap的socket
- repository
    - 仓库根目录
      $projectroot = "/home/git/repositories";
- 权限
    - 不能比调用者进程权限高
      clown git:nginx fcgiwrap.socket
- socket
    - unix:socket

gitosis

- writable

github

gitlab

2、protocol

  • local
  • http
  • ssh
  • git

3、常用hook

  • post-receive 服务端响应
  • pre-commit 客户端响应

4、常用配置Config

  • --global, --system 配置作用域
  • user 用户配置
  • core.editor 编辑器
  • list 列出当前配置
  • core.quotepath 显示中文
  • core.autocrlf 换行符格式
  • git config --global core.safecrlf false:是否保护crlf格式的文件

5、Attributes

  • merge=ours 本地优先
  • export-ignore 忽略归档

6、分支 branch

  • git branch 新的分支
  • merge 合并分支
  • conflict 冲突
  • rebase 变基
  • upstream 与远程同步

7、提交 Commit

  • log 日志
  • GPG tag 标签加密
  • revert 撤消
  • amend 补充
  • stash 贮藏未提交代码

8、追踪 Track

  • add cached 追踪文件
  • status 仓库状态
  • diff 与已追踪文件比较
  • checkout 定位到某快照
  • reset 重置快照

9、仓库 Repository

  • init 初始化
  • remote&fetch 远程映射与抓取
  • clone 克隆
  • pull&push 下拉与推送

10、标签 Git Tag

  • 用来发布某个版本
  • 指针指向某个快照
  • 可以认为是个别名

git目录下object文件过大清理

# 查看最大的 3 个文件
git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -n | tail -3

# 查询大文件的真实文件名与路径
git rev-list --objects --all | grep 829b9d04b876f058b56849f7296c270a12f3ce04

# 将该文件从历史记录的所有 tree 中移除
git filter-branch --index-filter 'git rm --cached --ignore-unmatch  dist.rar'

# 重新构建 objects
rm -rf .git/refs/original/

git reflog expire --expire=now --all

git fsck --full --unreachable

git repack -A -d

git gc --aggressive --prune=now

# 最后上传到远程
git push --force

Git 分支规范

分支表

分支 命名规范 示例 备注
master master master 主分支 - 上线时用该分支打版
develop develop develop 开发分支 - 项目分支合并到该分支进行测试, jenkins根据该分支 自动部署
release release-*** release-20220714v1.0 上线分支 - 项目复杂时可选, 用 master 打版时创建
feature feature-*** feature-some-business 项目分支 - 必须从 master 中创建项目代码为主分支下最新
hotfix hotfix-*** hotfix-some-bug 热修复分支 - 用来修复线上 bug 的分支, 必须从 master 中创建

补充说明与建议

  1. release 是β测试版本 即灰度版本, 最接近生产
  2. 各个分支改动建议
  3. master
    • 分支不能做任何 commit 操作
    • 必要情况下只可修改 pom 文件保证依赖包为正式环境
  4. develop
    • 尽量不做任何 commit 操作
    • 必要情况下只可修改 .properties 和增加日志打印操作
    • 遇到需要频繁打版测试时可在本地打版发布
    • 也可使用远程 debug 调试
    • 调试通过后用 stash/unstash 操作将代码转到 feature 上
  5. feature
    • 确认 develop 通过测试人员测试后才可将 feature 合并到 master
  6. hotfix
    • 修复 bug 后也需要通过合并到 develop 分支测试
  7. tag
    • 稳定版打上标签作为正式上线版本

results matching ""

    No results matching ""