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

时间:2017-03-03 13:57:13

标签: git

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

背景

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

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

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

我的Git工作流草稿

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

    $ git clone <origin-url>

  2. 创建新分支:

    $ git checkout -b newFeature develop

  3. 进行更改,暂存和提交:

    $ git add .
    $ git commit -m "<message>"
    
  4. 将更改推送到远程 newFeature 分支(此分支在原始仓库中尚不存在):

    $ git push origin newFeature
    
  5. 提交拉取请求以将origin/newFeature合并到origin/develop

  6. 接受拉取请求后删除本地分支:

    $ git branch -d newFeature

  7. 问题

    • 我是否正确地认为在推高develop分支之前,我需要确保我的本地origin/develop分支机构与newFeature保持同步?这样,我会帮助我的同事避免合并冲突,并允许快速合并?

    • 最好的方法是什么?我应该定期将origin/develop分支拉到我的本地机器吗?

    • 当我尝试推送分支时,Git会通知我代码不是最新的吗?它会阻止推动吗?

    • 是否有必要在第2阶段专门分支develop?如果我只使用这个命令是否重要?

      $ git checkout -b newFeature

1 个答案:

答案 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