Appearance
git 远程仓库
在我们使用 git remote add origin <url> 添加一个远程仓库后, 一般会使用 git push origin main 向名为 origin 的远程仓库推送本地 main 分支上的所有的内容
而后, 我们每次要向远程的 origin 仓库推送 本地 main 分支的内容都要使用 git pull origin main 命令
git 中提供了一个选项 --set-upstream 用于为本地分支设置一个远程的上游分支, 这使得我们之后推送内容时可以只使用 git push 命令进行推送
bash
# 推送 main 分支的内容并设置远程仓库的上游分支
git push --set-upstream origin main
# 在此之后, 我们在 main 分支上推送内容时, 可以只使用 git push 命令
git push在了解了上面的内容后, 我们来看看 lazygit 中远程仓库的操作
lazygit 设置远程仓库的上游分支
在 lazygit 中, Shift + p 的推送操作其实使用的就是 git push --set-upstream 命令
lazygit 会在我们按下 Shift + p 后, 询问我们选择哪一条远程分支作为该本地分支的上游, 然后推送, 对应的 git 命令就是 git push --set-upstream origin main
而后, 我们再推送 main 分支的内容时, 只需要按下 Shift + p, lazygit 就会向我们设置好的上游推送, 对应的 git 命令就是 git push
lazygit 添加多个远程仓库
在 lazygit 的 branch 面板 的 Remotes 标签下, 按下 n 并在填入对应的 remote name(远程仓库名) 和 remote url(远程仓库地址) 后, Enter 就可以添加一个远程仓库
lazygit 多个远程仓库的推送
从上面提到的内容可以知道, 我们在使用 lazygit 推送一次代码后, lazygit 会为我们设置好上游分支
这会使得我们在后续的推送和拉取操作都默认在该上游分支进行, 如果存在多个远程仓库的情况下, 我们就不能指定推送和拉取的远程仓库了
在 lazygit 中, 提供了 u 按键, 让我们可以操作上游分支
在 branch 面板 按下 u 后, 会出现如下菜单, 可以暂时只关注 Unset upstream of selected branch(取消设置上游分支) 和 Set upstream of selected branch(设置上游分支) 两个选项

Unset upstream of selected branch(取消设置上游分支)可以重置当前分支的上游分支Set upstream of selected branch(设置上游分支)可以为当前分支的设置上游分支
所以, 如果我们想向不同的远程仓库推送, 只需要在 branch 面板 按下 u 选择 Set upstream of selected branch(设置上游分支) 后, 选择对应的远程分支即可
1.在视频中可以看到, 我们添加了两个远程仓库, 分别为 origin 和 upstream, 当我们第一次 Shift + p 的时候, lazygit 会提示我们为当前的 main 分支选择一个上游, 我们首先选择了 origin main 作为上游并推送
点击展开查看详情👀
2.接下来, 我们也想把本地 main 分支上的内容推送到远程的 upstream main 分支上, 这只需要在 branch 面板 按下 u 选择 Set upstream of selected branch(设置上游分支) 之后, 我们再选择 upstream main 作为上游, 最后推送即可
点击展开查看详情👀
在 lazygit 中运行 git 命令
在 lazygit 中, 是允许我们执行 git 命令的, 只需要按下 : 后输入 git <命令> 就可以执行对应的 git 命令了
例如, 我们要向 upstream main 这条远程分支推送内容, 在按下 : 后输入 git push upstream main 就可以推送了
对配置文件的影响
使用了 --set-upstream 选项后, git 其实会在该仓库的配置文件(.git/config )中添加一些内容
git 仓库默认配置
ini
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@gitee.com:gin18/git-study.git
fetch = +refs/heads/*:refs/remotes/origin/*git 仓库 --set-upstream 后的配置
ini
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@gitee.com:gin18/git-study.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
remote = origin
merge = refs/heads/main在上面列出的配置中, 可以看出使用 git push --set-upstream origin main 后, git 在 .git/config 文件中添加的是以下的内容
这就是本地 main 分支对应的上游 origin main
ini
[branch "main"]
remote = origin
merge = refs/heads/main