我正在帮助一些人参与一个项目,我之前没有合作过使用过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
问题
我是否正确地认为在推高develop
分支之前,我需要确保我的本地origin/develop
分支机构与newFeature
保持同步?这样,我会帮助我的同事避免合并冲突,并允许快速合并?
最好的方法是什么?我应该定期将origin/develop
分支拉到我的本地机器吗?
当我尝试推送分支时,Git会通知我代码不是最新的吗?它会阻止推动吗?
是否有必要在第2阶段专门分支develop
?如果我只使用这个命令是否重要?
$ git checkout -b newFeature
答案 0 :(得分:2)
在我推动newFeature分支之前,我是否正确地认为我需要确保我的本地开发分支是最新的origin / develop?这样,我会帮助我的同事避免合并冲突,并允许快速合并?
是。在你推动之前:
git checkout develop
git pull origin develop
git checkout newFeature
git rebase develop
这假设没有其他人在newFeature
上工作,就像你的场景一样。如果其他人也得到你的分支,那么rebase
可能需要与他们进行额外的沟通,或者你可能会(尽管我讨厌这个,就个人而言,因为它在所有级别都是完全错误的,尽管大多数人这样做),将develop
合并到newFeature
中。
最好的方法是什么?我应该定期将origin / develop分支拉到我的本地机器吗?
绝对。使用git,你可以尽可能频繁地提交,拉动,推动。你做得越早,你获得怪物合并的可能性就越小,这让你没有出路(在某种意义上你无法理解巨大的变化是什么)。较小的单位更容易处理。
当我尝试推送分支时,Git会通知我代码不是最新的吗?它会阻止推动吗?
是的,它不会允许这样,并给你一个有意义的消息。你只能推快进,或者,如果快进不可能(即你分道扬),你可以进行强制推动,就像更换目标一样,会让你的同事遇到麻烦除非你是“所有人的主人”。在推送时你永远不能进行隐式合并,它是“或/或”,设计。
请注意,此处的例外是“您的”newFeature
分支,假设您是唯一正在处理它的人。然后,在如上所示的rebase之后,您将完全处于“阻塞”状态,并且您必须使用“--force”来推送它到远程。只要没有其他人拉你的分支并继续工作,这很好。
是否有必要在第2阶段专门开展发展?如果我只使用这个命令有关系吗?
git checkout -b newFeature
这个命令分支出工作目录中当前分支的任何内容,所以理论上如果你感到困惑可能会出错。在克隆之后,默认情况下,master
分支处于活动状态。所以,是的,您需要明确指定develop
,或事先做git checkout develop
。