所以我有一个从 github 上的上游源克隆的 git 存储库。我对它做了一些更改(在主分支中未提交)。我想要做的是将我的更改作为新分支推送到我的 github 页面上,并且让 github 仍然将其视为分支。
那可能吗?我对 git 和 github 还很陌生。我的问题有意义吗?
我能想到的最简单的方法(我确信这是最迂回的方法)是在 github 上分叉 repo。将其本地克隆到不同的目录。添加上游原始存储库。在新的分叉存储库中创建一个分支。手动将我的代码更改复制到新的本地存储库中。然后将其推回我的github。
这是一个常见的用例,有一种更简单的方法可以做到这一点而无需复制目录吗?
我想我在这里问而不是SO,因为我在linux上使用命令行git,而且这里的人给出了更好的答案imo =]
答案1
您可以从现有存储库中完成这一切(无需将分支克隆到新的(本地)存储库、创建分支、复制提交/更改等)。
准备好发布您的提交。
细化任何现有的本地提交(例如使用
git commit --amend
和/或git rebase --interactive
)。提交您想要发布的任何未提交的更改(我不确定您是否想暗示您对本地有一些提交)掌握以及一些未提交的更改,或者只是一些未提交的更改;顺便说一句,未提交的更改并不“在分支上”,它们严格位于您的工作树中)。
重命名你的掌握分支,为其指定您想要的“新分支”名称。这并不是绝对必要的(您可以从任何分支推送到任何其他分支),但从长远来看,如果您的本地分支和 GitHub 分支中的分支具有相同的名称,它可能会减少混乱。
git branch -m master my-feature
将上游 GitHub 存储库
(例如)分叉github.com:UpstreamOwner/repostory_name.git
为
(例如)github.com:YourUser/repository_name.git
。这是在 GitHub 网站(或使用 GitHub API 的“客户端”)上完成的,不涉及本地 Git 命令。
在您的本地存储库中(最初是从上游 GitHub 存储库克隆的存储库,并且您的更改已在其掌握),将您的 fork 存储库添加为远程存储库:
git remote add -f github github.com:YourUser/repository_name.git
将您的分支推送到 GitHub 上的分支存储库。
git push github my-feature
(可选)重命名遥控器,以便您的分叉被称为“origin”,上游被称为“upstream”。
git remote rename origin upstream git remote rename github origin
重命名遥控器的原因之一是您希望能够
git push
在不指定存储库的情况下使用(默认为“origin”)。