是否有更简洁的方法来执行此 git 工作流程?
Is there a cleaner way of executing this git workflow?
我是 运行 一个由 3 名初级开发人员组成的团队,他们都在同一个 Gitlab 存储库上编写代码。我采用了以下工作流程来同步更改。它有效,但它很麻烦,我觉得我缺少一种更清洁的方法。 master 分支受到保护,因此只有我可以推送或合并到其中。
工作流程如下:
拉高手
git pull origin master
创建本地开发分支
git checkout -b master_teammember1dev
进行更改,将它们提交到 master_teammember1dev 分支并将它们推送到 Gitlab
git commit -am "changes"
git push origin master_teammember1dev
- 创建一个合并请求,我将审核并合并到主控中
合并请求获得批准后,重新将本地仓库与 Gitlab 远程同步:
拉副本
git pull origin master
删除本地dev分支
git branch -D master_teammember1dev
重置头部跟随远程主控
git reset --hard origin/master
分科高手
git checkout -b master_teammember1dev
- 继续开发
有更好的方法吗?
好吧,这取决于您愿意偏离该模型多远。
一个好的基本模型是让每个开发人员在某个易于访问的服务器上拥有自己的 backed-up 裸存储库。然后,每个开发人员将拥有(至少)2 个遥控器:1)主要的遥控器,他们从中拉出;和 2) 他们的自己的遥控器,一旦它干净整洁,他们就会将自己的更改历史推送到该遥控器。
作为集成商,您将能够从开发人员的遥控器中拉取内容,并推送到主要的遥控器——有效地将这些更改发布给所有人。
如果我作为你们的一名初级开发人员陷入这种(有点不典型的)情况,我会做以下事情:
- 运行
git fetch
更新 origin/master
- 运行
git checkout -b my_branch origin/master
根据origin/master
的状态新建分支
- 工作并提交我的更改,使用
git add -p
和 从不 使用 git commit -am
,这是提交更改的最糟糕的可能方式。它肯定会因不小心犯了一些你不想做的事情而最终咬你一口
- 使用
git push origin my_branch
将我的分支推送到远程,等待您执行合并
- 重复。不需要其他命令;从
#1
开始,当我 fetch
并准备好再次开始工作时,我将获得我的更改以及最新的 origin/master
。
也就是说,您的初级开发人员应该可以自由使用他们想要的任何工作流程。对 Git 的熟悉应该发展到您不担心这些 micro-optimizations 工作流程的程度。他们可以在本地分支和合并,但是他们希望与您和他们的同行完全隔离,根本不要求每个开发人员都遵循相同的 branching/merging 模型,只要他们在推动方式上保持一致。
我是 运行 一个由 3 名初级开发人员组成的团队,他们都在同一个 Gitlab 存储库上编写代码。我采用了以下工作流程来同步更改。它有效,但它很麻烦,我觉得我缺少一种更清洁的方法。 master 分支受到保护,因此只有我可以推送或合并到其中。
工作流程如下:
拉高手
git pull origin master
创建本地开发分支
git checkout -b master_teammember1dev
进行更改,将它们提交到 master_teammember1dev 分支并将它们推送到 Gitlab
git commit -am "changes" git push origin master_teammember1dev
- 创建一个合并请求,我将审核并合并到主控中
合并请求获得批准后,重新将本地仓库与 Gitlab 远程同步:
拉副本
git pull origin master
删除本地dev分支
git branch -D master_teammember1dev
重置头部跟随远程主控
git reset --hard origin/master
分科高手
git checkout -b master_teammember1dev
- 继续开发
有更好的方法吗?
好吧,这取决于您愿意偏离该模型多远。
一个好的基本模型是让每个开发人员在某个易于访问的服务器上拥有自己的 backed-up 裸存储库。然后,每个开发人员将拥有(至少)2 个遥控器:1)主要的遥控器,他们从中拉出;和 2) 他们的自己的遥控器,一旦它干净整洁,他们就会将自己的更改历史推送到该遥控器。
作为集成商,您将能够从开发人员的遥控器中拉取内容,并推送到主要的遥控器——有效地将这些更改发布给所有人。
如果我作为你们的一名初级开发人员陷入这种(有点不典型的)情况,我会做以下事情:
- 运行
git fetch
更新origin/master
- 运行
git checkout -b my_branch origin/master
根据origin/master
的状态新建分支
- 工作并提交我的更改,使用
git add -p
和 从不 使用git commit -am
,这是提交更改的最糟糕的可能方式。它肯定会因不小心犯了一些你不想做的事情而最终咬你一口 - 使用
git push origin my_branch
将我的分支推送到远程,等待您执行合并 - 重复。不需要其他命令;从
#1
开始,当我fetch
并准备好再次开始工作时,我将获得我的更改以及最新的origin/master
。
也就是说,您的初级开发人员应该可以自由使用他们想要的任何工作流程。对 Git 的熟悉应该发展到您不担心这些 micro-optimizations 工作流程的程度。他们可以在本地分支和合并,但是他们希望与您和他们的同行完全隔离,根本不要求每个开发人员都遵循相同的 branching/merging 模型,只要他们在推动方式上保持一致。