跳转到内容

git remote

Terminal window
# 查看所有远程仓库别名
git remote
# 查看详细信息(URL和权限)
git remote -v
# 输出:
# origin https://github.com/user/repo.git (fetch)
# origin https://github.com/user/repo.git (push)
# 查看某个远程仓库的详细信息
git remote show origin
# 显示:URL、跟踪分支、本地分支状态等
Terminal window
# 查看所有分支的跟踪关系
git branch -vv
# 输出:
# * main 123abcd [origin/main] 最新提交
# feature 456defg [origin/feature] 功能开发
# 查看远程分支列表
git branch -r
# 输出:
# origin/main
# origin/feature
# origin/dev
# 查看所有分支(本地+远程)
git branch -a

Terminal window
# 添加主要远程仓库(通常命名为origin)
git remote add origin https://github.com/user/repo.git
# 添加多个远程仓库(用于多平台同步)
git remote add github https://github.com/user/repo.git
git remote add gitlab https://gitlab.com/user/repo.git
git remote add gitee https://gitee.com/user/repo.git
Terminal window
# 删除远程仓库别名
git remote remove origin
# 或者使用rm(效果相同)
git remote rm origin
Terminal window
# 修改远程仓库URL
git remote set-url origin https://new-url.com/repo.git
# 修改推送URL(保持拉取URL不变)
git remote set-url --push origin https://new-push-url.com/repo.git
# 重命名远程仓库别名
git remote rename origin upstream

Terminal window
# 获取所有远程仓库的更新(不自动合并)
git fetch
# 获取特定远程仓库的更新
git fetch origin
# 获取特定分支的更新
git fetch origin main
# 获取所有远程分支和标签
git fetch --all
# 获取并清理已删除的远程分支跟踪
git fetch --prune
# 等同于:git fetch -p
Terminal window
# 拉取当前分支跟踪的远程分支并合并
git pull
# 拉取指定远程分支到当前分支
git pull origin main
# 使用rebase方式合并(保持线性历史)
git pull --rebase
# 拉取特定标签
git pull origin v1.0.0
Terminal window
# 方法1:先fetch查看,再决定是否合并(推荐)
git fetch origin
git log origin/main # 查看远程更新
git merge origin/main # 确认后合并
# 方法2:直接pull(自动合并)
git pull origin main
# 方法3:rebase方式(适合个人分支)
git pull --rebase origin main

Terminal window
# 推送到跟踪的远程分支
git push
# 推送到指定远程分支
git push origin main
# 推送本地分支到远程不同名称分支
git push origin local-branch:remote-branch
# 强制推送(谨慎使用!)
git push --force origin main
# 或使用更安全的强制推送
git push --force-with-lease origin main
Terminal window
# 推送新分支并建立跟踪关系
git push -u origin new-branch
# 等同于:
git push --set-upstream origin new-branch
# 推送所有分支
git push --all origin
# 推送标签
git push origin v1.0.0
git push --tags # 推送所有标签
# 删除远程分支
git push origin --delete feature/old
# 删除远程标签
git push origin --delete tag v0.1.0

Terminal window
# 查看所有跟踪关系
git branch -vv
# 设置本地分支跟踪远程分支
git branch --set-upstream-to=origin/main main
# 或推送时设置:
git push -u origin main
# 取消跟踪关系
git branch --unset-upstream main
# 创建新分支并跟踪远程分支
git checkout -b new-branch origin/main
Terminal window
# 场景:同步远程main分支到本地feature分支
git fetch origin
git checkout feature
git merge origin/main
# 使用rebase保持干净历史
git checkout feature
git rebase origin/main
# 重置本地分支到远程状态(丢弃本地提交)
git fetch origin
git reset --hard origin/main

Terminal window
# 添加多个远程仓库
git remote add upstream https://github.com/original/repo.git
# 从不同远程拉取
git fetch upstream
git merge upstream/main
# 推送到不同远程
git push github main
git push gitlab main
# 查看所有远程
git remote -v
Terminal window
# 克隆包含子模块的仓库
git clone --recurse-submodules https://github.com/user/repo.git
# 已有仓库初始化子模块
git submodule update --init --recursive
# 更新子模块到最新
git submodule update --remote
Terminal window
# 克隆为镜像(用于备份)
git clone --mirror https://github.com/user/repo.git
# 推送镜像更新
git push --mirror

Terminal window
# 测试SSH连接
ssh -T git@github.com
# 测试远程仓库访问
git ls-remote origin
# 查看远程引用
git ls-remote --heads origin
Terminal window
# 错误:远程分支已删除,本地仍显示
git fetch --prune
# 错误:推送冲突(其他人已推送)
git fetch origin
git rebase origin/main
git push origin main
# 错误:非快进推送
git pull --rebase origin main
git push origin main
# 恢复误删的远程分支
git fetch origin
git checkout -b recovered-branch origin/deleted-branch
git push origin recovered-branch

Terminal window
# 1. 开始新功能前同步
git checkout main
git pull origin main
# 2. 创建功能分支
git checkout -b feature/new-feature
# 3. 开发并提交
git add .
git commit -m "feat: 新功能"
# 4. 推送到远程
git push -u origin feature/new-feature
# 5. 创建Pull Request后,继续开发...
git add .
git commit -m "fix: 修复问题"
git push origin feature/new-feature
# 6. PR合并后清理
git checkout main
git pull origin main
git branch -d feature/new-feature
git push origin --delete feature/new-feature
Terminal window
# 1. 基于最新main创建热修复分支
git fetch origin
git checkout -b hotfix/urgent origin/main
# 2. 修复并测试
git add .
git commit -m "fix: 紧急修复"
# 3. 推送到远程
git push -u origin hotfix/urgent
# 4. 快速合并到main
git checkout main
git merge hotfix/urgent
git push origin main
Terminal window
# 定期清理过期分支
git fetch --prune
# 查看可删除的已合并分支
git branch --merged main | grep -v "main"
# 批量删除已合并分支
git branch --merged main | grep -v "main" | xargs git branch -d
# 同步所有远程分支信息
git remote update origin --prune

Terminal window
# 设置默认推送行为
git config --global push.default simple # 推荐
# 或
git config --global push.default current
# 设置pull的默认行为
git config --global pull.rebase false # merge(默认)
git config --global pull.rebase true # rebase
git config --global pull.ff only # 仅快进合并
# 设置凭证缓存
git config --global credential.helper cache

操作类型常用命令用途
查看git remote -v, git branch -vv查看远程状态
拉取git fetch, git pull获取远程更新
推送git push, git push -u推送本地更改
分支git push --delete, git branch -d分支管理
调试git remote show, git ls-remote问题排查
Terminal window
git status # 查看状态
git fetch origin # 获取更新
git pull origin main # 同步主线
# ...开发...
git add . # 暂存更改
git commit -m "msg" # 提交更改
git push origin branch-name # 推送更改