繁体   English   中英

Git从一个分支移动到另一个分支

[英]Git move from one branch to another branch

我是Git的新手,没有为我想要完成的任务提供太多帮助。

我有一个master分支https://my.company.com/appid/WebApp/tree/DEV ,我从中获取了代码并进行了大量修改。 不幸的是,我无法将提交提交回去,我必须提交到一个完全不同的分支https://my.company.com/13179069/WebApp/tree/DEV ,其中13179069是我在工作场所的ID。 我尝试使用GitHub桌面工具执行此操作,但无济于事。

我认为您无法提交到master分支意味着您没有这样做的权限。

(i)在这种情况下,您应该首先在https://my.comapny.com/appid/WebApp/tree/DEV上创建存储库的分支。 假设13179069也是您的GitHub ID,您创建的派生将具有URL https://my.comapny.com/13179069/WebApp/tree/DEV

是有关如何创建fork以及如何创建fork的本地克隆的文档。

(ii)接下来,您可以使用git checkout -b <new_branch_name>在fork上创建一个分支,然后进行所有需要进行的更改。 也许只是复制粘贴当前未分支的仓库中已更改的文件。

(iii)完成此操作后,执行git status检查是否更改了所有必需的文件,然后git add <file_names>其中一些文件,或者git add . 如果所有更改的文件都属于一个提交。

(iv)现在,使用您的消息和/或签名进行git commit 如果您有更多提交,请通过执行(iii)再次登台

(v)现在,您应该设置上游和原点。 通过遵循此操作

完成所有这些操作后,只需将分支推送到远程原点,并通过git push -f origin <new_branch_name> ,然后按照此命令将“ Pull Request”创建到原始存储库即可。

具有合并权限的人将把您的提交合并到原始存储库的母版中。 希望对您有所帮助,请让我知道是否需要任何澄清。

您会混淆一些事情。 https://my.company.com/appid/WebApp/tree/DEV不是“分支”。 它是远程存储库的URL。 tree/DEV看起来是多余的。 该存储库可以包含多个分支,并且可以通过公开。 HTTP(看起来像在这里完成的一样)。 从url看来,完成开发的分支称为DEV 既然你说你的东西,这是令人困惑的master 您可以使用git branch命令仔细检查吗? 让我重申一下您的情况,以确保我做对了。

  1. 您已从存储库克隆(我们称其为origin )。
  2. 在分支X上进行了一些更改(我认为它是DEV但您说它是master )。
  3. 无法将更新的X推回origin
  4. 想要将X推送到其他存储库https://my.company.com/appid/WebApp/tree/DEV (我们称其为mine )。

如果这是您所需要的,则可以轻松解决您的问题。 所有你需要做的是增加mine作为一个新的远程使用

  git remote add mine https://my.company.com/13179069/WebApp/tree/DEV

现在您可以像这样将分支推到mine

  git push mine X

这会将同一个分支推到另一个遥控器上

如果是OTOH,您确实希望按照问题标题中的说明(但我对此表示怀疑)将提交从一个分支移动到另一个分支 ,则需要执行以下操作。

让我们假设原始存储库看起来像从源克隆时那样。 C4是当前为master的提交。

C1 - C2 - C3 - C4 (master)

现在您做了一些额外的提交,您的本地存储库如下所示

C1 - C2 - C3 - C4 - C5 - C6 - C7(master)

糟糕! 这3个额外的提交应该已经进入了另一个分支。 首先,请在此时创建一​​个分支dev

git branch dev

现在,看起来像这样

C1 - C2 - C3 - C4 - C5 - C6 - C7(master, dev)

现在,我们将使master移回原点位置(C4)。

git reset --hard master C4

现在,看起来像这样

C1 - C2 - C3 - C4(master) - C5 - C6 - C7(dev)

现在,您可以将自己的存储库添加为新的远程存储库(例如mine ),然后像上面提到的那样将dev推送到该存储库。

答案可能是特定的配置(github实例),具体取决于您的工作流程,但是听起来的方式,在您的情况下,您应该将https://my.company.com/appid/WebApp/tree/DEV叉入您自己的配置中回购。 克隆该文件,执行您的工作,提交,将您的更改推送到github中的存储库中,然后对从您的存储库到“主”存储库的这些更改发出请求请求。

旁注。 原始问题中的术语似乎有些混乱。 git是分布式SCM。 您将提交到本地克隆(除非您已放置了额外的钩子,否则无论您的遥控器是什么,它都很有可能起作用)。 我从远程回购中提取提交并将其推送到远程回购中,这很可能是您无法执行的步骤,因为您的工作流希望您经过额外的一跳。

您似乎没有权限提交master分支。 但是正如您所写的那样,您已经在master分支中做了很多修改,现在您想在另一个分支中进行提交。

您不必再次编写代码。 请执行以下步骤,可能会对您有所帮助。

  1. 使用以下命令存储当前更改。

    git存储

    上面的命令会将修改后的代码存储在临时内存中。

  2. 使用以下命令签出到新分支。

    git结帐

  3. 使用以下命令将更改应用于当前分支。

    git stash适用

    上面的命令将从临时内存中获取修改后的代码,并应用于当前分支。

注意 :确保您具有在分支中提交代码的适当权限。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM