0%

1
2
3
4
5
6
7
8
9
10
11
单行数学表达式:
$a \ne 0$

多行数学表达式:
$$
\begin{aligned}
a &= b + c \\
&= d + e + f + g \\
&= h + i
\end{aligned}
$$

i=0i2\sum_{i=0}^\infty i^2

\sum/\frac{采样项本期值}{采样项基期值} / {采样项个数}
(/)\sum(\frac{采样项本期值}{采样项基期值} / {采样项个数})
/\sum \frac{采样项本期值}{采样项基期值} / {采样项个数}

123

1. Resource

  • 七天年化收益率

    七天年化收益率 等于 七天的总收益率(百分比) 除以 7, 再乘以 365

    七天年化收益率=七天的总收益率÷7×365\text{七天年化收益率} = \text{七天的总收益率} \div 7 \times 365

1. tag操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 查看tag
git tag
# 更新本地tags
git pull --tags
# 推送tags
git push --tags
# 删除本地tag
git tag -d ${tag_name}
# 删除远程tag
git push origin :refs/tags/${tag_name}

# 清理远端没有的本地分支
# 先删除全部, 之后重新获取
git tag -l | xargs git tag -d
git fetch --tags

  • master
    主分支, 功能稳定
  • develop
    开发分支, 体现开发状态的分支
    用于 DEV, QA 环境测试构建, 在 PRD 环境测试完成后合并到 master 分支
  • feature
    新功能开发分支
    从 master 或 develop 创建该分支
    用于本地环境开发自测, 开发完成后合并到 develop 分支
  • release
    发布分支, 准备发布上线的分支
    从 develop 创建该分支
    如果 PRD 环境出现问题, 则从 develop 分支开始修复, 再次合并到 release 分支; 如果 PRD 环境测试完成, 功能确定之后, 合并到 master 分支
    允许在 release 分支上做版本修改等小细节处理, 不必合并回 develop
  • hotfix
    线上问题紧急修复
    从 release 或 master 创建该分支
    修复完成后, 需要合并到 develop, release, master

1. 查看分支

1
2
3
4
5
6
# 查看当前分支名称
git branch
# 查看本地与远程仓库有哪些分支
# -a 表示查看所有分支
# -v 显示最近更新相关信息
gti branch -av

2. 创建+切换分支

1
git checkout -b dev origin/dev

3. 切换分支

1
git checkout dev

4. 手动建立追踪关系

1
2
git branch --set-upstream dev origin/dev
git branch --set-upstream-to=origin/${branch} master

5. 获取代码更新

1
2
3
4
5
6
git fetch
git merge

git pull

git pull origin dev:dev

6. 合并分支

1
2
3
4
# 先切换到要主分支
git checkout ${branch_id}
# 合并作业分支到主分支
git merge ${another_branch_id}

7. 删除分支

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 删除本地分支
# -D, --delete 表示删除分支
# 不能删除当前分支, 需要切换到其他分支后删除
git branch -D ${local_branch_id}

# 删除远端分支
# 如果需要重命名远程分支, 没有直接命令, 只能删除后重新推送
git push -d origin ${remote_branch_id}
# 或者推送一个空分支
git push origin :${remote_branch_id}

# 删除没有与远程分支绑定的本地分支
git remote prune origin
# 或者
git fetch -p

8. 分支重命名

1
2
3
# -m 表示重命名本地分支名称
git branch -m ${old_name} ${new_name}
# 之后删除远程老分支后重新推送

8.1. 同步远程分支, 删除远端不存在的分支

1
git remote prune origin

9. Resource

Git 分支模型

1. 同步 fork 的代码

1
2
3
4
5
6
7
8
# 指定一个上游仓库
# upstream为你自己为同步源取的别名
git remote add upstream ${git-url-fork-by}
git fetch upstream/${branch_id}
# --no-commit 防止 fast-forward 后直接 commit
git merge upstream/${branch_id} --no-commit
# 如果文件有差异, 可以checkout fork 分支上的文件
git checkout upstream/${branch_id} ${file_path}

1. gerrit 提交

1
2
3
4
gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ravenfu@10.25.20.102:hooks/commit-msg ${gitdir}/hooks/
git commit --amend --reset-author
git commit --amend --author 'ravenfu <ravenfu@aliyun.com>'
git push origin head:refs/for/zxq_dev

1. 添加文件到索引

1
2
3
4
5
6
7
# 添加文件到仓库
# -f 强制添加 ignore 的文件
# -u 只添加修改的文件
git add ${file_path}
# 添加所有文件
# . 也可以使用 --all, -A 代替
git add .

2. 推送代码

1
2
3
4
# 推送前需要先获取并合并远程代码更新内容
# -u 用于第一次推送时, 将当前代码分支与远程代码分支建立追踪关系.
# -u 也可用手动方式建立关联
git push -u origin master

3. 本地dev提交到远程dev分支

1
git push origin dev:dev

4. 记录仓库变更

1
2
3
# -m 必填项, 提交内容的注释
# 此时只是记录本地仓库的变更, 需要推送的远程仓库
git commit -m ${commit_msg}

5. 查看变更日志

1
2
3
4
5
# 查看变更日志
# 日志内容有 commit-id, author, date, commit-msg
git log

git log --graph --pretty=oneline --abbrev-commit

6. 解决冲突

1
2
3
4
5
6
7
# 存入草稿
git stash
# 获取并合并远程仓库更新
git pull
# 取出草稿, git会自动合并
# 需要手动修改冲突
git stash pop

7. 查看改动差异

1
2
3
4
5
# 默认与 Head 比较, 显示差异
git diff ${patch_id}

# 显示摘要而非整个 diff
git diff --stat

8. 文件回滚

1
2
3
4
5
6
7
8
# 回退单个文件
git reset ${commit_id} ${file_path}
# 指定文件路径回滚
# 默认回滚到 Head
git chekcout -- ${file1} ${file2} ${file3}
git checkout .
git checkout HEAD .
git checkout HEAD ${file}

9. 回退某次提交

1
2
# 若已提交到远程仓库, 需要回退本次提交
git revert ${commit_id}

10. 合并本地 commit

1
2
3
# 软重置到最早的 commit-id, 并保持文件的修改
git reset --soft ${latest_commit-id}
# 之后重新提交

1. 远程仓库映射管理

1
2
3
4
5
6
7
8
9
10
11
12
13
# 显示有哪些远程仓库
git remote

# origin 为使用者定义的远程仓库名称
# 远程仓库可以有多个
# 远程仓库名称不一定叫 origin, origin 只是大家常用的远程仓库名称
git remote show origin

# 本地仓库新初始化, 将本地仓库与远程仓库绑定
git remote add origin ${git_url}

# 修改远程仓库地址
git remote set-url origin ${git_url}

2. 多仓库

1
2
3
4
5
6
7
# 添加第二个仓库
git remote add gitee git@gitee.com:Ravenfu/spring-boot.git
# git remote set-url --add gitee git@gitee.com:Ravenfu/spring-boot.git
# 去掉 grafted
git filter-branch -- --all
# 提交
git push -u gitee master

1. clone

1
2
3
4
5
6
7
8
9
# 添加所有文件
# -b 指定下载远程代码的分支, 默认为 master
# directory 指定代码存放的目录, 如果没有指定则为当前目录下的, 创建项目名称的目录用于存放代码
# -o 设置远程仓库名称, 默认为 origin
#
# --depth=1, 表示只拉取最近的一个 reversion
# 如果想看历史版本, 可以再用 `git fetch --unshallow` 拉取
# 如果想要再次拉取所有分支 `git pull origin refs/heads/*:refs/remotes/origin/*` 拉取
git clone -b $branch_id --depth=1 $git_url $directory

1.1. github 上 git clone 太慢

有以下 2 种方式解决

  1. 只获取最近一层 reversion
    减少历史版本对 clone 操作的影响
1
2
3
4
5
# --depth=1 只获取最近一个 reversion
# -b master 只获取 master 分支
git clone --depth=1 -b master $url
# 之后再获取历史版本
git fetch --unshallow
  1. 配置 host
    git clone 特别慢是因为 github.global.ssl.fastly.Net 域名被限制了
    只要找到这个域名对应的 ip 地址, 然后在 hosts 文件中加上ip与域名的映射, 刷新 DNS 缓存就可以了
1
2
151.101.76.249 github.global.ssl.fastly.net
192.30.253.112 github.com

2. 导入外部项目

1
2
3
4
5
6
7
# https://www.oschina.net/question/82993_133520
# 从原始地址clone一份bare仓库
git clone --bare https://github.com/bartaz/impress.js.git

cd impress.js.git
# 导入项目
git push --mirror git@git.oschina.net:username/impress-js.git