我正在做一个教程,教程实际上提供了一个git仓库,可以用来派生和使用.当我派生仓库时,我只派生了master分支,因为我认为这是我唯一需要的.
下一个任务是从那个仓库中 checkout 一个特定的分支。我不太清楚该怎么做。
我知道,我可以简单地创建一个新的回购协议,并再次分叉整个事情,但这将把我扔回到开始,并在一定程度上扰乱流。
因此,我尝试将源代码repo(由教程提供)添加为remote(在我的forked repo旁边), checkout 分支,将其推送到我自己的forked repo并相应地重定基。
这不起作用。
我确实添加了源代码repo作为remote,当我运行git remote
时,它就列在那里了。但是,没有一个分支是这样的。当我使用git branch
时,我看到的只是我自己的master分支。
我也试过'git fetch -t source/分支,但也不管用。
我看到this answer,这基本上是我尝试,但当我尝试结帐时,我得到这个错误:
# German
# fatal: 'source/branch' ist kein Commit und es kann kein Branch 'branch' aus diesem erstellt werden.
# English
# fatal: 'source/branch' is not a commit and branch 'branch' could not be created
有没有什么方法可以正确地做到这一点,而不是从头开始,通过分叉源repo agian?你能解释一下为什么我的方法没有工作吗?
2条答案
按热度按时间v8wbuo2f1#
当我使用
git branch
时,我看到的只是我自己的master分支。正确,因为
git branch
只列出了你 * 创建 * 的 * 本地 * 分支,1而你没有 * 创建 * 任何其他本地分支。但是当你说git branch --all
时,你看到了 * 所有 * 分支。然后你可以在本地 checkout 它们中的任何一个。我将演示(如果你愿意,可以在你的机器上进行沿着),我进入https://github.com/BLeeEZ/amperfy(随机选择的!)并创建一个fork,犯了和你一样的错误,我选择只使用
master
分支,然后使用GitHub给我的指令将我的fork克隆到我自己的计算机上:现在,我仍然假装是你,我意识到我需要所有的树枝;所以我决定添加原始的作为第二个远程。通常将其称为
upstream
(而不是source
),所以我将这样做:现在我必须使用
fetch
才能从upstream
中得到分支(也许这是您忘记的步骤?您没有在任何地方提到它):好的,当我说仅仅是
git branch
时,我只看到了我自己的master
分支,正如您所说:但是当我说
git branch --all
的时候,它们都在那里!您可以看到,我确实拥有来自
upstream
的所有分支,这是与您的source
相对应的第二个遥控器。最后,假设我想在本地检查其中一个分支,我将检查
gapless
:很快,我就创建了一个对应于
upstream/gapless
的本地gapless
分支,如果需要的话,我现在可以使用这个分支,并最终将它推到我自己的fork:1.你可能会说:那么
master
是从哪里来的呢?我从来没有“创建”过它。好吧,你确实“创建”了它。当你使用git clone
时,Git会帮你节省一个步骤,将远程分支的默认分支 checkout 为本地分支,从而为你创建它。实际上,你可以在克隆时取消这一步骤(通过说-n
),从而最终根本没有本地分支。这实际上可以是一件非常有用的事情,我经常这样做。3pmvbmvn2#
我已经介绍了如何在使用
Forking Strategy
时处理来自PR的远程分支,以及如何将本地更改提交回原始fork分支,这也会更新PR。这需要您具有远程repo的write
权限。否则,您只能将PR发送给原始作者。我使用BitBucket服务器。
https://blog.jeremyfiel.com/bitbucket-pull-pr-and-commit-local-changes-remote-forks