Home Git 使用
Post
Cancel

Git 使用

显示当前分支

1
vim .bashrc

将下面的代码加入到文件的最后处

1
2
3
4
5
6
7
8
9
10
11
 function git_branch {
    branch="`git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //"`"
    if [ "${branch}" != "" ];then
        if [ "${branch}" = "(no branch)" ];then
            branch="(`git rev-parse --short HEAD`...)"
        fi
        echo " ($branch)"
    fi
 }

 export PS1='\u@\h \[\033[01;36m\]\W\[\033[01;32m\]$(git_branch)\[\033[00m\] \$ '

保存退出,执行加载命令

1
 source ~/.bashrc

常用操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
git clone xxx
git submodule update --init --recursive

# 查看远程分支
git branch -a

# 查看本地分支
git branch

# 切换分支 tx-84
git checkout tx-84
# 检查子模块是否版本对齐
git status
git submodule update --init


# 获取master最新代码
git checkout master
git pull # 将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中,这样master的最新代码就在origin/master
git fetch # git pull = git fetch + git merge

# 基于master创建分支
git checkout -b myfeature

# 合并commit
# 分支开发完成后,很可能有一堆commit,但是合并到主干的时候只希望有少量commit
git reset HEAD~5
git add xxx
git commit -m "Here's the bug fix that closes #28"

# 推到远程仓库
git push origin myfeature -f

# rebase代码
git checkout myfeature
git rebase origin/master
git push origin myfeature -f

# 查看commit更改
git show
git show --name-only
git show <commit-hash>
git log --oneline # 查看最近的提交

# 例如,把 e57b0e6 合并到 17cb931,不保留注释
pick 17cb931 fix && add batch del
f e57b0e6 fix && add batch del

# 指定需要合并版本号,处理从该版本后往后的commit,不包含该版本,会进入vi编辑器
git rebase -i 版本号
git commit -n --amend  # 或者使用这个命令将其合并进上一个commit

# 使用别人的patch测试,记得先fetch
git cherry-pick commit_id

给开源仓库提 pr 的流程

首先在 github 上 fork 你的目标仓库,这样你的主页就出现了一个 fork 的仓库。以 triton-lang 仓库为例。

然后进入本地现有仓库所在目录,通过命令行执行以下命令,将 fork 仓库的地址添加为现有仓库的一个远程地址。

1
git remote add forked git@github.com:tfruan2000/triton.git

接着,执行以下命令,将 fork 远程地址与原仓库的远程地址关联起来。

1
git remote add upstream git@github.com:tfruan2000/triton.git

至此,我们就成功将 fork 仓库添加到了现有仓库中。使用 git remote -v 查看一下

1
2
3
4
5
6
7
(triton_env) ➜  triton git:(rewrite-tensor-pointer-rtf) ✗ git remote -v
forked git@github.com:tfruan2000/triton.git (fetch)
forked git@github.com:tfruan2000/triton.git (push)
origin https://github.com/triton-lang/triton.git (fetch)
origin https://github.com/triton-lang/triton.git (push)
upstream git@github.com:tfruan2000/triton.git (fetch)
upstream git@github.com:tfruan2000/triton.git (push)

然后就可以把推到远端了,例如要推 rewrite-tensor-pointer-rtf 分支

1
git push forked rewrite-tensor-pointer-rtf:rewrite-tensor-pointer-rtf

然后进入自己 fork 的仓库链接,就可以发现已经可以发起 pr 了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 编译工具链
cd triton-linalg/triton
conda activate triton_env
pip3 install -e python --no-build-isolation

# 测试工具链
export PATH=/xxx/triton-linalg/triton/python/build/cmake..../bin:$PATH
triton-opt  -split-input-file -tritongpu-combine-tensor-select-and-if test/TritonGPU/combine-select-if.mlir

# 跑单元测试 lit
cd  python/build/cmake..../bin
lit test/Triton/rewrite-tensor-pointer.mlir -a

# 提前代码前
pre-commit run --from-ref origin/main --to-ref HEAD
This post is licensed under CC BY-NC-SA 4.0 by the author.

MLIR CodeGen 总结

GPU Arch Base Knowledge