我是Git的新手,并没有为我想做的任务找到太多帮助。
我有一个master
分支https://my.company.com/appid/WebApp/tree/DEV
,我从中获取了代码并进行了大量修改。不幸的是,我无法将我的提交推回到它,我必须承诺一个完全不同的分支https://my.company.com/13179069/WebApp/tree/DEV
,其中13179069是我工作场所的身份。我尝试使用GitHub桌面工具,但无济于事。
答案 0 :(得分:1)
我认为您无法提交主分支意味着您无权这样做。
(i)在这种情况下,您应首先在https://my.comapny.com/appid/WebApp/tree/DEV
上创建存储库的分支。您创建的fork将具有URL https://my.comapny.com/13179069/WebApp/tree/DEV
,假设13179069也是您的GitHub ID。
Here是关于如何创建fork的文档,还是创建fork的本地克隆。
(ii)接下来,您可以使用git checkout -b <new_branch_name>
在分叉上创建分支,然后进行所需的所有更改。也许只需从当前的未分支的非重制仓库中复制粘贴已更改的文件。
(iii)完成后,执行git status
检查是否所有必需文件都已更改,然后git add <file_names>
暂存其中一些文件,或git add .
如果全部更改的文件属于一个提交。
(iv)现在,使用您的消息和/或签名进行git commit
。如果您有更多提交,请通过执行(iii)
(v)现在,您应该设置上游和原点。按照this执行此操作。
完成所有这些操作后,只需将您的分支推送到远程源git push -f origin <new_branch_name>
,然后按照this创建对原始存储库的Pull Request。
具有合并权限的人员将您的提交合并到原始存储库的主服务器。希望这有帮助,如果您需要任何澄清,请告诉我。
答案 1 :(得分:1)
你混淆了一些事情。 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
推送到它。
答案 2 :(得分:0)
答案可能是一些特定的配置(github实例),具体取决于你的工作流程,但它听起来的方式,在你的情况下你应该把https://my.company.com/appid/WebApp/tree/DEV
分叉到你自己的回购中。克隆,执行您的工作,提交,将您的更改推送到github中的repo,然后从您的repo向“主”仓库发出拉动请求。
旁注。关于原始问题中的术语似乎有些混乱。 git是分布式SCM。你承诺你的本地克隆(无论你的遥控器是什么,这很可能都有效,除非有额外的钩子到位)。我从提交中提取并将提交推送到远程仓库,这可能是您无法执行的步骤,因为您的工作流程希望您通过额外的跃点。
答案 3 :(得分:0)
您似乎没有在master分支中提交的权限。 但正如您所写,您已在master分支中进行了大量修改,现在您想在另一个分支中提交它。
您不必再次编写代码。 请按照以下步骤对您提供帮助。
使用以下命令存储当前更改。
git stash
上面的命令会将修改过的代码存储在临时内存中。
使用以下命令结帐到您的新分行。
git checkout
使用以下命令将更改应用于当前分支。
git stash apply
以上命令将从临时内存中获取修改后的代码并应用于当前分支。
注意:确保您拥有在分支机构中提交代码的适当权限。