Github 添加一个仓库作为一个现有克隆的分支

Fal*_*rri 25 git version-control github

所以我有一个从 github 上的上游源克隆的 git 存储库。我对其进行了一些更改(在 master 分支中未提交)。我想要做的是将我的更改作为一个新分支推送到我的 github 页面上,并且让 github 仍然将其视为一个分支。

那可能吗?我对 git 和 github 相当陌生。我的问题甚至有意义吗?

我能想到的最简单的方法(我确定这是最绕的方法)是在 github 上分叉 repo。在本地将其克隆到不同的目录。添加上游源代码库。在那个新的分叉仓库中创建一个分支。将我的代码更改手动复制到新的本地存储库中。然后把它推回我的github。

这是一个常见的用例,有一种更简单的方法可以在不复制目录的情况下做到这一点吗?

我想我是在这里问而不是 SO 因为我在 linux 上使用命令行 git 并且这里的人给出了更好的答案 imo =]

Chr*_*sen 28

您可以从现有存储库中完成所有操作(无需将 fork 克隆到新的(本地)存储库、创建分支、复制提交/更改等)。

  1. 准备好您的提交以供发布。

    优化任何现有的本地提交(例如使用git commit --amend和/或git rebase --interactive)。

    提交您想要发布的任何未提交的更改(我不确定您的意思是否暗示您在本地master上有一些提交和一些未提交的更改,或者只是一些未提交的更改;顺便说一句,未提交的更改不是“在分支”,它们严格位于您的工作树中)。

    重命名您的分支,为它提供您想要的“新分支”名称。这不是绝对必要的(您可以从任何分支推送到任何其他分支),但如果您的本地分支和 GitHub 分支中的分支具有相同的名称,从长远来看它可能会减少混淆。

    git branch -m master my-feature
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将上游 GitHub 存储库
    (eg)分叉github.com:UpstreamOwner/repostory_name.git
    (eg) github.com:YourUser/repository_name.git

    这是在 GitHub 网站(或使用 GitHub API 的“客户端”)上完成的,不涉及本地 Git 命令。

  3. 在您的本地存储库(最初从上游 GitHub 存储库克隆并在其master 中进行更改的存储库)中,将您的 fork 存储库添加为远程存储库:

    git remote add -f github github.com:YourUser/repository_name.git
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将您的分支推送到您在 GitHub 上的 fork 存储库。

    git push github my-feature
    
    Run Code Online (Sandbox Code Playgroud)
  5. 或者,重命名遥控器,以便您的叉子称为“原点”,上游称为“上游”。

    git remote rename origin upstream
    git remote rename github origin
    
    Run Code Online (Sandbox Code Playgroud)

    重命名遥控器的一个原因是因为您希望能够在git push不指定存储库的情况下使用(默认为“origin”)。