将 base 分支从 forked master 更改为 remote master
Change base branch to remote master from forked master
我将一个 repo 分叉到我自己的 Repo A
,创建了一个新分支 A 并做了一些工作,然后将远程 repo 更改为我将为其发出拉取请求 Repo B
的那个。但是我的分支仍在跟踪 Repo A
master 分支上的提交 如何将我的基础更改为 Repo B
的主分支?我已经推送到正确的远程分支
我已经尝试过`git rebase --onto master
(commit 1) - master
\-- (commit 2) - (commit 3) - demo
\-- (commit 4) - (commit 5) - PRO
(commit 1) - master
|-- (commit 2) - (commit 3) - demo
\-- (commit 4) - (commit 5) - PRO
Git
Git 本身没有基本分支的概念。分支(大多数情况下——人们以不同的方式使用这个词;参见 What exactly do we mean by "branch"?)只是一个名称,名称包含提交的哈希 ID。名称标识的提交称为 提示提交 。该提交几乎肯定至少有一个 parent 提交 并且 parent(s) 也在分支上。 parent 提交有自己的 parent;这些提交也在分支上。你得到的链,从顶端开始向后工作,枚举分支上的所有提交。
如果你移动 分支标签——Git 将让你任意移动它——更改哪些提交在分支上,而不更改任何内部的任何内容承诺自己。只要提交本身仍在存储库中,您就可以创建任意数量的分支名称来查找它们。将提交视为形成一系列连接:
C--D--E <-- branch1
/
...--A--B
\
F--G--H <-- branch2
您可以在任何您喜欢的地方添加和删除标签,而无需实际更改任何内容(除了现在有一个提交名称 B
):
C--D--E <-- branch1
/
...--A--B <-- branch3
\
F--G--H <-- branch2
git rebase
所做的是复制一些提交集,例如,将新副本放在这组提交中更合适的位置。例如,假设当前 仅 可从 branch2
到达的三个提交——从右边开始向左边工作,我们找到 H
,然后 G
,然后 F
——如果它们出现在 branch1
上的 last 提交之后,将会得到改进。为此,您可以 运行:
git checkout branch2
git rebase --onto branch1 branch3
告诉 Git:从我所在的位置 branch2
开始查找提交,但在两个分支汇合的 branch3
处停止。现在您有了正确提交的列表,将它们一一复制,从 F
开始,然后是 G
,最后是 H
。在开始复制提交之前,请检查提交 E
.
我们将 F
的副本称为 F'
,以表示它与 F
的相似程度,即使它具有不同的哈希 ID。复制完成后,图片将如下所示:
F' <-- HEAD
/
C--D--E <-- branch1
/
...--A--B <-- branch3
\
F--G--H <-- branch2
rebase 将继续复制 G
和 H
,然后作为最后一幕,会将名称 branch2
向上拉,使其指向 H
:
F'-G'-H' <-- branch2 (HEAD)
/
C--D--E <-- branch1
/
...--A--B <-- branch3
\
F--G--H [abandoned]
因为 git log
默认情况下不会 显示 任何被放弃的提交,当你 运行 git log
你会看到:
F'-G'-H' <-- branch2 (HEAD)
/
C--D--E <-- branch1
/
...--A--B <-- branch3
它会看起来像 提交移动了。他们没有:他们被更新的更闪亮的提交所取代,而旧的沉闷的提交仍然在存储库中。 (如果新的闪亮的东西坏了,你可以把你的名字 branch2
改回原来的名字,只要你在它们过期之前抓住它们。默认情况下它们至少可以使用 30 天。 )
Git中心
GitHub 基础分支的概念是,根据 this GitHub page:
the parent repository's default branch.
parent 存储库 的概念同样是 GitHub 特定的:Git 存储库没有 parents .
GitHub 帮助页面接着说:
If the default parent repository isn't correct, you can change both the parent repository and the branch with the drop-down lists ...
因此,要更改 parent 存储库,请使用 GitHub 网络界面。选择正确的 parent 存储库后,基础分支将是该存储库的默认分支。要更改 GitHub-hosted 存储库的默认分支,请使用 GitHub 网络界面(如 this page 中所述)。
有关协作的更多 GitHub 信息,请从 this page 开始。
我将一个 repo 分叉到我自己的 Repo A
,创建了一个新分支 A 并做了一些工作,然后将远程 repo 更改为我将为其发出拉取请求 Repo B
的那个。但是我的分支仍在跟踪 Repo A
master 分支上的提交 如何将我的基础更改为 Repo B
的主分支?我已经推送到正确的远程分支
我已经尝试过`git rebase --onto master
(commit 1) - master
\-- (commit 2) - (commit 3) - demo
\-- (commit 4) - (commit 5) - PRO
(commit 1) - master
|-- (commit 2) - (commit 3) - demo
\-- (commit 4) - (commit 5) - PRO
Git
Git 本身没有基本分支的概念。分支(大多数情况下——人们以不同的方式使用这个词;参见 What exactly do we mean by "branch"?)只是一个名称,名称包含提交的哈希 ID。名称标识的提交称为 提示提交 。该提交几乎肯定至少有一个 parent 提交 并且 parent(s) 也在分支上。 parent 提交有自己的 parent;这些提交也在分支上。你得到的链,从顶端开始向后工作,枚举分支上的所有提交。
如果你移动 分支标签——Git 将让你任意移动它——更改哪些提交在分支上,而不更改任何内部的任何内容承诺自己。只要提交本身仍在存储库中,您就可以创建任意数量的分支名称来查找它们。将提交视为形成一系列连接:
C--D--E <-- branch1
/
...--A--B
\
F--G--H <-- branch2
您可以在任何您喜欢的地方添加和删除标签,而无需实际更改任何内容(除了现在有一个提交名称 B
):
C--D--E <-- branch1
/
...--A--B <-- branch3
\
F--G--H <-- branch2
git rebase
所做的是复制一些提交集,例如,将新副本放在这组提交中更合适的位置。例如,假设当前 仅 可从 branch2
到达的三个提交——从右边开始向左边工作,我们找到 H
,然后 G
,然后 F
——如果它们出现在 branch1
上的 last 提交之后,将会得到改进。为此,您可以 运行:
git checkout branch2
git rebase --onto branch1 branch3
告诉 Git:从我所在的位置 branch2
开始查找提交,但在两个分支汇合的 branch3
处停止。现在您有了正确提交的列表,将它们一一复制,从 F
开始,然后是 G
,最后是 H
。在开始复制提交之前,请检查提交 E
.
我们将 F
的副本称为 F'
,以表示它与 F
的相似程度,即使它具有不同的哈希 ID。复制完成后,图片将如下所示:
F' <-- HEAD
/
C--D--E <-- branch1
/
...--A--B <-- branch3
\
F--G--H <-- branch2
rebase 将继续复制 G
和 H
,然后作为最后一幕,会将名称 branch2
向上拉,使其指向 H
:
F'-G'-H' <-- branch2 (HEAD)
/
C--D--E <-- branch1
/
...--A--B <-- branch3
\
F--G--H [abandoned]
因为 git log
默认情况下不会 显示 任何被放弃的提交,当你 运行 git log
你会看到:
F'-G'-H' <-- branch2 (HEAD)
/
C--D--E <-- branch1
/
...--A--B <-- branch3
它会看起来像 提交移动了。他们没有:他们被更新的更闪亮的提交所取代,而旧的沉闷的提交仍然在存储库中。 (如果新的闪亮的东西坏了,你可以把你的名字 branch2
改回原来的名字,只要你在它们过期之前抓住它们。默认情况下它们至少可以使用 30 天。 )
Git中心
GitHub 基础分支的概念是,根据 this GitHub page:
the parent repository's default branch.
parent 存储库 的概念同样是 GitHub 特定的:Git 存储库没有 parents .
GitHub 帮助页面接着说:
If the default parent repository isn't correct, you can change both the parent repository and the branch with the drop-down lists ...
因此,要更改 parent 存储库,请使用 GitHub 网络界面。选择正确的 parent 存储库后,基础分支将是该存储库的默认分支。要更改 GitHub-hosted 存储库的默认分支,请使用 GitHub 网络界面(如 this page 中所述)。
有关协作的更多 GitHub 信息,请从 this page 开始。