github项目提交

在 Git 中,originupstream 是两种常见的远程仓库(remote)名称,它们在使用场景和功能上有明显区别。以下是两者的核心差异及设置方法:


一、originupstream 的区别

类型 含义 操作权限 典型场景
origin 默认的远程仓库名称,通常指向你 个人克隆的远程仓库(如自己创建的仓库或 fork 的副本) 可自由推送(push)和拉取(pull)代码,拥有完整操作权限。 日常开发中提交代码到自己的远程仓库,或从自己的仓库同步更新。
upstream 指向 原始项目的远程仓库(如开源项目的官方仓库) 通常仅有拉取(fetch)权限,无法直接推送代码(除非你是项目维护者)。 保持本地仓库与原始项目同步更新,或贡献代码时通过 origin 提交 PR 到 upstream

关键区别

  • 用途origin 是个人开发的主战场,而 upstream 用于跟踪原始项目更新。
  • 权限origin 可读写,upstream 通常只读。
  • 生命周期upstream 需要手动设置,origin 在克隆仓库时自动生成。

二、如何设置 originupstream

1. 查看当前远程仓库配置

git remote -v

输出示例:

origin  git@github.com:your-username/your-repo.git (fetch)
origin  git@github.com:your-username/your-repo.git (push)

2. 设置 origin

  • 克隆仓库时自动生成
    git clone git@github.com:your-username/your-repo.git
    
  • 手动修改 origin 的 URL(如切换协议或更换仓库地址):
    git remote set-url origin git@github.com:new-username/new-repo.git
    

3. 设置 upstream

  • 添加 upstream 指向原始仓库(常用于 fork 的项目):
    git remote add upstream git@github.com:original-owner/original-repo.git
    
  • 验证是否添加成功
    git remote -v
    
    输出应包含 upstream 的 URL:
    origin    git@github.com:your-username/your-repo.git (push)
    upstream  git@github.com:original-owner/original-repo.git (fetch)
    

4. 同步 upstream 的更新到本地

git fetch upstream
git checkout main  # 切换到本地主分支
git merge upstream/main  # 合并上游仓库的最新代码

5. 推送本地修改到 origin

git push origin main

三、高级操作示例

关联本地分支与 upstream 分支

git branch --set-upstream-to=upstream/main main

此命令将本地 main 分支与 upstream/main 分支关联,后续 git pull 可直接拉取上游更新。

删除无效的 upstreamorigin

git remote remove upstream  # 删除 upstream
git remote remove origin    # 删除 origin(谨慎操作!)

四、典型工作流示例

  1. 开发新功能

    • upstream 拉取最新代码:git fetch upstream && git merge upstream/main
    • 在本地创建功能分支:git checkout -b feature/new-feature
    • 提交到 origingit push origin feature/new-feature
  2. 贡献代码到开源项目

    • 通过 origin 提交 Pull Request 到 upstream 仓库。

总结

  • 区别origin 是个人仓库,用于日常开发;upstream 是原始仓库,用于同步更新。
  • 设置:通过 git remote addgit remote set-url 管理远程仓库。
  • 最佳实践:定期从 upstream 拉取更新,通过 origin 提交代码,保持仓库同步。

ssh免密登录配置

https://docs.github.com/zh/authentication/connecting-to-github-with-ssh/working-with-ssh-key-passphrases

Ref

https://stephenzhou.net/2019/04/23/git-pr-tsg/

posted @ 2024-12-05 16:41  惜阳茕影  阅读(55)  评论(0)    收藏  举报