maino/main 的关联关系就是由分支的“remote tracking”属性决定的。main 被设定为跟踪 o/main —— 这意味着为 main 分支指定了推送的目的地以及拉取后合并的目标。

    当你克隆时, Git 会为远程仓库中的每个分支在本地仓库中创建一个远程分支(比如 o/main)。然后再创建一个跟踪远程仓库中活动分支的本地分支,默认情况下这个本地分支会被命名为 main

    有两种方法设置这个属性,第一种就是通过远程分支检出一个新的分支,执行:
    git checkout -b totallyNotMain o/main
    就可以创建一个名为 totallyNotMain 的分支,它跟踪远程分支 o/main。

    image.png

    git checkout -b foo o/main
    git pull
    image.png

    image.png

    git checkout -b foo o/main
    git commit
    git push
    image.png

    另一种设置远程追踪分支的方法就是使用:git branch -u 命令,执行:
    git branch -u o/main foo
    这样 foo 就会跟踪 o/main 了。如果当前就在 foo 分支上, 还可以省略 foo:
    git branch -u o/main

    image.png

    git branch -u o/main
    git commit
    git push
    image.png