我正在帮助一些人完成一个项目,但我以前从未协作使用Git,所以我生锈了,想正确地解决这个问题。
背景
没有叉子。建议我直接制作回购的克隆,然后分支。
origin/master
包含当前版本的生产准备代码
origin/develop
包含下一个版本的最新开发更改的代码
我的git工作流程
-
克隆我本地机器的存储库:
$ git clone <origin-url>
-
创建新分支:
$ git checkout -b newFeature develop
-
进行更改,舞台并提交它们:
$ git add . $ git commit -m "<message>"
-
将更改更改为远程 newfeature 分支(该分支在Origin Repo中尚不存在):
$ git push origin newFeature
-
提交拉动请求将
origin/newFeature
合并到origin/develop
中。 -
接受拉请请求时删除本地分支:
$ git branch -d newFeature
问题
-
我是否正确地认为我需要确保我的本地
develop
分支在推高newFeature
分支之前使用origin/develop
最新?这样,我将帮助我的同事避免合并冲突并允许快速合并? -
最好的方法是什么?我应该定期将
origin/develop
分支拉到本地机器吗? -
git会通知我,当我尝试推开分支时,代码不是最新的吗?它会阻止推动吗?
-
是否有必要在第2阶段特别分支
develop
?如果我只使用此命令,这是否重要?$ git checkout -b newFeature
我是否正确地认为我需要确保我的本地开发分支在推高newfeature分支之前与Origin/Deverition保持最新?这样,我将帮助我的同事避免合并冲突并允许快速合并?
是。在您推动之前:
git checkout develop
git pull origin develop
git checkout newFeature
git rebase develop
这假定没有其他在newFeature
上工作的人,就像您的情况一样。如果其他人也得到了您的分支机构,那么rebase
可能需要与他们进行其他交流,或者您可能需要(尽管我个人讨厌,因为在所有级别上这完全是错误的,尽管大多数人都是这样做的),但请合并develop
而是进入newFeature
。
最好的方法是什么?我应该定期将原点/发展分支拉到本地机器吗?
绝对。使用git,您会尽量频繁地进行,拉动,尽可能地做。这样做的时间越早,您的合并的可能性就越小,这使您无法出路(从某种意义上说,您无法理解巨大的变化所做的事情)。较小的单元更容易处理。
git会通知我,当我尝试推开分支时,代码不是最新的吗?它会阻止推动吗?
是的,它将不允许这样做,并给您一个有意义的信息。您只能推动快进,或者,如果不可能快速前进(即差异),您可以进行强制推动,就像更换目标一样,并且会让您在同事中陷入困境除非您是"所有人"。您永远无法在推动时进行隐式合并,它是"/或",设计。
请注意,此处的例外是"您的" newFeature
分支,假设您是唯一在此工作的人。然后,在您的重置如上所示之后,您将完全遇到这种"阻塞"情况,并且必须使用" - 力量",以将其推向遥控器。只要没有其他人拉你的树枝并在上面努力,这很好。
是否有必要在第2阶段进行专门开发?如果我只使用此命令,这有关系吗?
git checkout -b newFeature
此命令分支从您的工作目录中的当前分支中分开,因此从理论上讲,如果您感到困惑,可能会出错。克隆之后,默认情况下,master
分支处于活动状态。因此,是的,您要么需要明确指定develop
,要么事先进行git checkout develop
。