Github 添加存储库作为现有克隆的分支

Github 添加存储库作为现有克隆的分支

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

那可能吗?我对 git 和 github 还很陌生。我的问题有意义吗?

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

这是一个常见的用例,有一种更简单的方法可以做到这一点而无需复制目录吗?

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

答案1

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

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

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

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

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

    git branch -m master my-feature
    
  2. 将上游 GitHub 存储库
    (例如)分叉github.com:UpstreamOwner/repostory_name.git
    (例如)github.com:YourUser/repository_name.git

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

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

    git remote add -f github github.com:YourUser/repository_name.git
    
  4. 将您的分支推送到 GitHub 上的分支存储库。

    git push github my-feature
    
  5. (可选)重命名遥控器,以便您的分叉被称为“origin”,上游被称为“upstream”。

    git remote rename origin upstream
    git remote rename github origin
    

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

答案2

有一个工具:hub

hub是一个命令行工具,它git可以通过额外的功能和命令来扩展它,从而使 GitHub 的使用变得更加容易

现在你可以:

# cd to a cloned repo with uncommited changes
git checkout -b feature
git commit -am 'done with feature'
git fork
git push YOUR_USER feature
# git pull-request

相关内容