【发布时间】:2017-05-01 14:30:41
【问题描述】:
TL;DR
我可以只将我所做的更改(即对 code3 和 code4 所做的更改)推送到我们的 UAT 分支而不触及 developer1 所做的更改(code1、code2 和 my-js.js)吗?
我认为我的情况最好用一个例子来说明。
开发人员通常在包含 7 个文件的 dev 分支上工作。
code1.php
code2.php
code3.php
code4.php
code5.php
my-js.js
my-css.css
该项目有 3 名开发人员。
developer1 = able to push new branches but not able to merge into any branch
developer2 = same access as developer1
developer3 = me. I have admin access to the repository. If developer1 and 2 needs to merge changes to the dev branch, they send it my way for approval
出现了一个新问题,该问题已分配给 developer1。 Developer1 git 拉上远程开发分支以获取最新代码。然后,他创建了一个名为“jira-ticket1”的新本地分支,并对文件 code1 和 code2 进行了更改。他还对 my-js.js 进行了更改
出现了另一个问题 (jira-ticket2),这已分配给 developer2。他还 git 拉上了远程 dev 分支,然后创建了一个名为“jira-ticket2”的新本地分支,并对 code5 进行了更改。
一天结束时,只有 developer1 完成了。他将他的新分支推送到我们的远程存储库中,然后创建了一个拉取请求供我批准。我在收到拉取请求 5 分钟后批准了它。
第二天早上,有一些紧急的事情 (jira-ticket3) 出现了,这被分配给了我。这张票要求我对 code3 和 code4 进行更改。在开始工作之前我还做了一个 git pull (从而获得了develop1所做的更改)。我还创建了一个新分支,然后在完成后推送并批准我的更改。
由于问题的紧迫性,测试人员只能测试我的更改,他已批准将其转到我们的 UAT 分支
现在我的问题
我可以将我所做的更改(即对 code3 和 code4 所做的更改)推送到我们的 UAT 分支而不触及 developer1 所做的更改吗?
通常显示在我的本地存储库上的唯一分支是 dev 和我自己的分支。
ps。我已经阅读了几个“类似”的问题,但我不确定这是否适用于我的情况。
【问题讨论】:
-
你能制作一个 tl;dr 版本吗?如果您想选择特定的提交,我有一个答案
-
我们处理这个的常用方式是一个ticket分支,稍后会被合并——这不是一个好的解决方案吗?分支到提交 1 之前。
-
@Mr.Alien 刚刚做到了。谢谢!
-
@kabanus 你能解释一下票务分行吗?当我批准 developer1 完成的提交时,我无法知道我会收到与 jira-ticket1 无关的紧急请求。
-
@mrjayviper 假设您有两个分支,master 和 branch1,现在您在 master 中提交了多个提交,并且您只想选择特定的提交,您可以先签出到 master 分支,然后使用
git cherry-pick HASH_ID_OF_BRANCH1_COMMIT,这将只选择 branch1 的特定提交并将其放入主分支。希望你能理解。
标签: git