代码之家  ›  专栏  ›  技术社区  ›  Noor A Shuvo

无法从上游创建新分支

  •  2
  • Noor A Shuvo  · 技术社区  · 8 年前

    我想从上游建一个新的分支。我所做的是

    $ git init
    $ git clone https://github.com/nalam-nmef/LearnGitWithGithubFlow.git
    $ git remote add upstream https://github.com/twentyTwo/LearnGitWithGithubFlow.git
    

    然后,从上游创建一个新分支

    $ git checkout -b changes1 upstream/master
    

    但在这一点上发生了一个错误。上面写着

    致命:无法更新路径并同时切换到分支“changes1” 时间。您是否打算签出不能 作为提交解决?

    之后我要做的就是把那根新树枝插到我的叉子上

    $ git push -u origin changes1
    

    也就是说,我总是在本地为新的更改请求创建一个分支。分支是从上游/主分支创建的。在本地提交更改并将其推送到我的fork。然后,创建一个到上游主机的请求。但是,我犯了个错误 $ git checkout -b changes1 upstream/master

    这是怎么回事?什么是最佳实践?

    2 回复  |  直到 8 年前
        1
  •  4
  •   VonC    8 年前

    你得去拿 upstream 第一。

    git fetch upstream
    git checkout -b changes1 upstream/master
    

    默认情况下,仅 origin 被克隆/提取。
    类型:

    git remote -v
    

    你会看到你的遥控器。

    理想的, 上游 URL应该 不 与 起源 一个(应该是你的叉子)。
    上游 应该引用分叉的原始repo URL。


    第二,不要:

    git init
    git clone ...
    

    会克隆一个git回购协议 里面 另一个git repo,这就是为什么git remote-v只显示在上游。

    请改为:

    cd /a/path
    git clone https://github.com/twentyTwo/LearnGitWithGithubFlow.git
    cd LearnGitWithGithubFlow
    git checkout -b changes1
    

    (不需要origin/master:默认情况下,origin/master已经签出)

        2
  •  1
  •   Noor A Shuvo    8 年前

    所以,简而言之,如果您想从上游分支创建一个新分支,这些步骤是

    • 首先是期望的回购;
    • 克隆你的分叉回购协议
    • 回购中的cd
    • 添加上游
    • 逆流而上
    git clone https://github.com/forkedRepo/demoRepo.git
    cd demoRepo\
    git remote add upstream https://github.com/originalRepo/demoRepo.git
    git fetch upstream
    
    • 从上游创建新分支

    git签出-b newLocalBranchName上游/上游

    • 把那根新树枝插到我的叉子上

    git push-u源newOriginBranchName