git - 管理自托管存储库和测试的分支

标签 git version-control self-hosting

我意识到这听起来不太清楚,但我自己仍然很困惑。我正在阅读 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 .

Git Flow (simple)

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/

相关文章:

c# - 使用反射的 Wcf 动态托管

xcode 提交丢失的文件或目录

svn - 在Windows 7计算机上安装哪个svn客户端?

visual-studio - 基本 SVN 用法

java - 如何查看java源代码的修订历史

server - 是否可以免费托管一个 Realm-Database?

c# - 在 WPF 中自托管 WCF

git - 独立的开发和部署 git 存储库

当标签已经存在于远程时​​,Git 强制推送标签

git - 具有 MAC 的 Parallels 中的 Visual Studio 不断重新加载项目