[英]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
命令仔细检查吗? 让我重申一下您的情况,以确保我做对了。
origin
)。 X
上进行了一些更改(我认为它是DEV
但您说它是master
)。 X
推回origin
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分支中做了很多修改,现在您想在另一个分支中进行提交。
您不必再次编写代码。 请执行以下步骤,可能会对您有所帮助。
使用以下命令存储当前更改。
git存储
上面的命令会将修改后的代码存储在临时内存中。
使用以下命令签出到新分支。
git结帐
使用以下命令将更改应用于当前分支。
git stash适用
上面的命令将从临时内存中获取修改后的代码,并应用于当前分支。
注意 :确保您具有在分支中提交代码的适当权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.