我意识到这听起来不太清楚,但我自己仍然很困惑。我正在阅读 Git 电子书,但我不能 100% 确定我已经完全理解它。如果有人觉得有信息缺失,请告诉我,以便我补充。
截至前一周,我们现在已经建立了一个自托管的 git 存储库和服务器。该存储库是主存储库,并且当前位于暂存环境中。从这里,我们准备好后手动重新部署到生产环境。
现在(一如既往),要进行更改,有人只需访问文件并在其所在的服务器上进行所需的更改。已经发生过多次用户互相保存工作成果并丢失很多东西的情况。
我们想要做什么:从这个主控创建分支以让人们在其上编写代码,但如果分支可以本地存储在用户计算机上,而不是存储在主存储库所在的测试服务器上,那将是理想的。 p>
对于测试代码:该怎么做?是否会将更改的文件从本地分支推送到主分支并在那里尝试?它实际上只是在服务器上创建多个分支,但在本地切换到这些分支吗?
代码无法独立于其他任何内容进行测试,因此在任何情况下都需要将其添加到主/部署版本中。
我的任务是为我们的环境设置 git,因此我希望使其尽可能轻松且简单。
最佳答案
Git 和版本控制一开始设置起来可能会很困惑,所以我会尝试分别回答您问题中的具体 Gist :
"[..] to make changes, someone just access' the file and makes the needed changes on the server [...]"
您肯定会希望停止将文件直接写入生产服务器上的磁盘。理想情况下,您需要做的是通过持续集成服务器自动处理部署,例如 Jenkins 或 TeamCity 。
"[...] if the branches could be stored locally on user machines, not on test server where master repo is [...]"
这就是 Git 和版本控制的全部意义。您可以将文件托管在 Git 存储库上,并让每个开发人员克隆该存储库的本地副本 ( git clone
)。这使他们能够处理自己独立的代码副本,同时偶尔pull
荷兰国际集团 origin
的最新更改。然后他们会push
他们的更改回到origin
当代码完成时。
"What we are looking to do: Create branches from this master to let people write code on".
在这里您询问Git Flow 。您应该从 master
创建一个单个分支叫develop
,以及 feature
的每个分支从 develop
分支出来。当单个功能完成后,应将其 merge 回 develop
.
develop
应该连接分支(最好通过 CI)以部署到您的开发和测试环境。您需要部署develop
每当有更改时都会发送到开发服务器。
"For testing code: What would be the way to do it?"
"Code cannot be tested independently of anything else, so it will need to be added to master/deployed version in any case."
您想要在 develop
上进行测试。当候选版本中的所有功能(您最终希望部署到生产的一组更改)完成后,您将需要部署 develop
分支到测试环境。在这里你可以测试这个版本的develop
,而其他开发者可以自由推送 develop
的更高版本到开发环境——测试环境不会更新。
对测试环境上的测试感到满意后——当您想要将代码部署到生产中时,您可以最终 merge develop
返回master
(如果您正在处理正确的发布计划,最好使用 release
分支)。 master
然后连接到您的生产环境。
通过遵循 Git Flow,您只能将代码部署到 master
经过彻底测试后,未经测试的代码永远不会投入生产。
关于git - 管理自托管存储库和测试的分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52048315/