我的git工作流程是否正确且符合我的团队?

我正在帮助一些人参与一个项目,我之前没有合作过使用过
Git,所以我很生气,想要做到这一点.

背景

没有分叉.我被建议直接克隆回购,然后分支.

origin / master包含当前版本的生产就绪代码

origin / develop包含下一版本的最新开发更改的代码

我的Git工作流程草案

>将repo克隆到我的本地计算机:

$git clone< origin-url>
>创建新分支:

$git checkout -b newFeature develop
>进行更改,分阶段并提交它们:

$git add .
$git commit -m "<message>"

>将更改推送到远程newFeature分支(此分支在原始仓库中尚不存在):

$git push origin newFeature

>提交拉取请求以将origin / newFeature合并到origin / develop中.
>接受拉取请求后删除本地分支:

$git branch -d newFeature

问题

>在我推动newFeature分支之前,我是否正确地认为我需要确保我的本地开发分支是最新的origin / develop?这样,我会帮助我的同事避免合并冲突并允许快速合并?
>最好的方法是什么?我应该定期将origin / develop分支拉到我的本地机器吗?
>当我尝试推动分支时,Git会通知我代码不是最新的吗?它会阻止推动吗?
>是否有必要在第2阶段专门开展发展?如果我只使用这个命令有关系吗?

$git checkout -b newFeature

最佳答案

Am I right in thinking that I need to ensure my local develop branch is up to date with origin/develop before I push up my newFeature branch? This way, I will help my colleague to avoid merge conflicts and allow for a fast-forward merge?

是.在你做推之前:

git checkout develop
git pull origin develop
git checkout newFeature
git rebase develop

这假定没有其他人像在你的场景中一样工作在newFeature上.如果其他人也得到你的分支,那么rebase可能需要与他们进行额外的沟通,或者你可能会(尽管我个人认为,因为它在所有级别上完全错误,尽管大多数人这样做),合并开发而改为newFeature.

What is the best way to do this? Should I pull the origin/develop branch to my local machine at regular intervals?

绝对.使用git,你可以尽可能频繁地提交,拉动,推动.你做得越早,你获得怪物合并的可能性就越小,这让你没有出路(在某种意义上你无法理解巨大的变化是什么).较小的单位更容易处理.

Will Git notify me that the code is not up to date when I try to push the branch? Will it block the push?

是的,它不会允许这样,并给你一个有意义的消息.你只能推快进,或者,如果快进不可能(即你分道扬),你可以进行强制推动,就像更换目标一样,会让你的同事遇到麻烦除非你是“所有人的主人”.在推送时你永远不能进行隐式合并,它是“或者/或”,设计.

请注意,此处的例外是“your”newFeature分支,假设您是唯一正在处理它的人.然后,在如上所示的rebase之后,您将完全处于“阻塞”状态,并且您必须使用“–force”来推送它到远程.只要没有其他人拉你的分支并继续工作,这很好.

Is it necessary to branch off develop specifically, at stage 2? Does it matter if I just use this command? git checkout -b newFeature

这个命令分支出工作目录中当前分支的任何内容,因此理论上如果你感到困惑就会出错.克隆后,默认情况下,主分支处于活动状态.所以,是的,您需要明确指定开发,或者事先进行git checkout开发.

点赞