网站建设流量是怎么回事,wordpress 分类名称,2021最旺公司名字,杭州营销型网站建设排名宏观角度看软件版本控制版本控制的核心是这样一个简单的概念#xff0c;即对一个或者多个文件的追踪过程#xff0c;随着这些文件演变成一个或多个产品的过程。特别是版本控制追踪什么变化#xff0c;是什么改变了它#xff0c;为什么会这样。版本控制系统提供了一个有益的… 宏观角度看软件版本控制版本控制的核心是这样一个简单的概念即对一个或者多个文件的追踪过程随着这些文件演变成一个或多个产品的过程。特别是版本控制追踪什么变化是什么改变了它为什么会这样。版本控制系统提供了一个有益的说明这写说明在传统的文件管理中是找不到的。需要注意的是版本控制使用不仅是局限于程序员。版本控制可以被任何人用来维护文件目录因此即便你不是程序也可以继续阅读此文。版本控制系统有很多选项对于本文我将讨论Git。需要牢记的是不管你最终选择什么样的版本都只有一个相同的目的就是帮助你组织和保护你的源代码和文件。 版本控制的概念重要的是掌握基础概念特别是在你和你的团队集中某一具体版本控制系统之前。这里有三个具体的概念我将在本文中专注于此。源代码支持历史视角版本和评价说明回滚在一些版本控制系统中恢复某个文件是可能的在多数版本控制系统中整个目录的恢复也是可能的。得到一杯牛奶和你最好的饼干因为我在这里要告诉你犹豫是否改动源代码的日子已一去不复返。举个例子在Drupal社区存在模块的沙盒版本模块不过是产品代码的一个分支版本。倘若你在一个开发团队工作中弱化版本控制的使用在你重写工作中的产品代码不可避免地造成一些收益和宝贵时间的损失。 许多程序员会得到丰厚的报酬那在商业环境中损失是不可以接受的。Git利用一个数据库去追踪和报道变化。举个例子假设此刻我是一个是一个出色的Druper程序开发人员为起居写了软件模块。我认为我需要重写我的spectacular模块中的一个功能。我致力于将源代码返回至存储中这个新的致力版本存在于Git的一个简单类似数据库的系统中。我不再去担心追踪它们的变化相反Git会为我做这些工作。因为标注在致力过程中是必须的我能追溯我的标注如果我的模块是spectacular为什么我需要重写它。我确信你熟悉软件版本。比如Drupal发布都会有其版本号。在我写这篇文章时Drupal7.24核心版本已经发布了。如果你正在使用版本控制你或许会指Drupal7.24作为一个标签或者一个标记分支。标签或者标记具有里程碑式的意义。在我们深入之前你必须熟悉几个重要的术语。这些术语用一套规范的方式去定义你能将这些知识用于如果不是全部至少是多数的版本控制系统。存储-存储是个普遍术语。版本控制系统管理一个存储在Git中存储实际上就是一个数据库在那里文本和历史都得到维护和保存。工作集-工作集包括文件和文件夹。通常你会看到一个存储包含多个工作集这些工作集组织在通常称作项目中。当你编辑一个工作集时你顺带地就会升级存储。版本控制最重要的事情就是当你升级你的存储时你自动地创建了一个源代码支持不仅是保存。关于工作集有一点需要记住的是文件包含潜在的变化已不在存储中了。添加和检入-正如你猜测的那样添加是一个概念即你添加新的文件或者提交和查找存在的文件。返回/回滚-如果你需要返回到早前的文件版本你将会返回或者回滚在存储中任何版本的工作集。检出-如果你正在检出存储中的一个文件通常你会将主干带入你当地的工作集中。在一些案例中检出一个文件的活动或锁住这个文件以防其他的开发者使用。分布存储系统-通常假设你在一个分布存储系统中工作那真个存储都在你本地的开发框内。Git就是一种分布版本控制系统。如果你需要从存储中查询数据你可以拉出数据。如果你需要添加或者检查文本到存储中你可以推进数据。强烈建议即使不需要用到SSH去和存储交互如果它在一个远程服务其中。标签和标记-此概念用来说明一个具体存储的状态。你或许标签或者标记了一个你的Drupal模块版本你认为可以稳定发布的。分支和分叉-这是一个常见的概念即创建一个完整的存储拷贝。通常你会听到一个沙盒代码的术语它的意思是一个开发者已经分支或者分叉了一个项目存储。合并-如果你分支或者分叉了一个存储那么你将不可避免地想要把你的源代码推送到存储的主干或者主要分支中。推送分支或者分叉代码返回主干的过程就是指调用合并。 集中 VS. 分布版本控制系统在本文中我将深入的讨论Git作为一种分布版本控制系统。注意我不会深入探讨集中版本控制系统的细节集中版本控制系统不在本文讨论范围之内。在外壳集中版本控制系统常用于大型软件开发你通常会碰到的两个版本是Microsoft Team Foundation Server (TFS)和 Subversion.。我建议你花时间去学习集中版本控制系统尽管需要确定它们是否是你的开发坏境所需要的。分布版本控制工作与集中版本控制比较而言是不同的。特别是当你在本地开发机器上初始化存储。在你本地的开发存储机器上你有一个工作集你在存储中添加和升级了文件。因为我会讲到Git你应该知道可以用远端存储源代码。通常远端存储会用到GitHub。不去涉及太多细节GitHub是一个云服务借助于此你可以将本地存储放在云端。 Git的存储行为Git是一个分布版本控制系统它是一个开放代码项目这个项目会用到GNU通用公共许可证版本2因此它是免费的。你可以下载Git http://git-scm.com。下载Git并且在安装过程中在多数情况下安装时的诸多默认选项很多。然而出于本文的目的我将选择Git Bash作为仅有的壳类型因为我感觉Linux命令行shell很舒服。同样我也选择“Checkout Windows-style and commit Unix-style line endings”。在这个环境下我可以使用存储在苹果或者Linux操作系统开发环境中。安装之后你可以验证Git安装是否成功即发布来自Git Bash shell 的命令git–version。Git Bash shell 在安装过程有提供 git –version。如果你想看版本号以便git正确安装在开始版本控制时你需要创建整个存储或者一部分存储为你正在工作的项目。借用Git版本控制系统你创建自己的存储在你的本地开发机器上。记住重要的是Git存储需保存在你文件的相同目录中。为此本文我将在dev目录下进行工作。来自dev目录我将执行git init命令去初始化一个空的存储1git init接下来我会验证这个空的存储借用git status 命令1git status通常你会看到一条语句nothing to commit 特别在目录为空时。你应该意识到一个隐藏的目录称之为.git,在那里保存了所有存储元数据。如果你想回到Git存储和所有完好的编辑历史确保包括这个.git文件夹。在此你或许想提交文件给你的存储但在你做任何事情之前你必须设置两个Git配置项。记住版本控制系统倾向于显示说明。有鉴于此我必须确保所有的源代码编辑标记有我的名字和邮件。我设置两个配置项12git config user.name “web3”git config user.email a hrefmailto:examplewarrenbullock.meexamplewarrenbullock.me/a 提交文件现在我可以提交一些文件到我的存储中。有鉴于此我将通过Drupal7 网络端存储来说明版本控制。首先我得告诉Git去跟踪一个称为style.css的类型表单。1git add style.css如果询问我的Git工作集的状态它会告诉我文件在提交时变化紧随新文件名之后。因为我知道存在一个叫style.css文件它需要提交我发布git commit命令1git commit在上面的例子中我没有添加任何参数给commit命令。当你在用命令行工具特别是—m选项你只能添加一个简短的信息版本这条信息是条很重注释。如果你不选—m 选项命令行工具会给你打开一个默认的文本编辑器这样你就可以加入一个随之而来长的注释。我的默认文本编辑器是VIM。在我打入信息后我按下逃逸键然后我打入wq to save and quit。借助于保存这个注释并且推出VIM我边得知信息的状态1文件改变1插入。还有许多方法添加信息给一个文件提交。我能提供–a –m作为提交命令的一部分。–a简单地意味提交所有文件在一个工作的目录中。–m是提供一条信息文件在提交之前发生了什么变化。尽管我已经提交了sytle.css文件到存储中如果我发布git log命令我会看到我原始的检查译者注添加1git log默认的git log输出肯定让人困惑更优的选择是git log –online – all。这个log命令的变体将会仅仅展示当前存储中的changeset IDs 和文件注释。有机会你可以比较文件的两个不同版本。这个时常发生因为常常存在冲突Git不能确定那个文件版本需要保留。如果你想比较不同的style.css版本我会用到git diff命令1git diffstyle.css 返回到先前的某一个版本不可避免地你打算返回或者回滚到某处正在工作的源代码。这个过程很简单当你用版本控制系统特别是Git。关于这个我已经检查过我的style.css文件。我知道我我在存储有一个可以依靠的版本。当我意识到需要返回我的style.css文件是我简单地在主干存储中检出它。我做了明确地编辑并且提交了变化。很少的一部分选项将代码检出加入一个工作集中我能回滚多数当前的提交或者我能回归到一个特定的修订版本。如果我想回滚到许多当前的提交我可以发布git checkout HEAD style.css命名1git checkout HEAD style.css或者我可以回滚到任何特定的修订版本借助于checkout命令 伴随存储中问文件guid译者注数字标识符。当我发布git log –oneline—all命令 所有的与文件名相关的guid都会展示出来因此我可以回滚到一个特定修订版本比如此例中的98c121git checkout 98c12 sytle.css 创建一个标签和标记在此我仅有一个标识文件借助uchangeset标识符和guid比如98c12.然而通常的例子你需要鉴别真个存储状态在开发周期中一个特殊的位置。一个软件开发周期的例子或许是一个产品的发布。版本控制系统允许你提供人类可读的名字给整个存储在Drupal7的例子中它或许是-7.24。Tagging and labeling often times是可互换术语取决于你所用的版本控制系统。因为我们正在用Git我将要所指的过程作为标签tagging。在Git创建一个tag我能发布命令git tag1git tag drupal-7.24如果我想确切地了解tag中存在什么我可以发布命令1git show drupal-7.24正如你可以检出一个特定的文件到你的工作集你也可以检出一个特定的tag。我发布git checkout drupal-7.24:1git Checkout drupal-7.24标签是一个超级强有力的概念特别是和分支和合并联合在一起时。让我们假设你需要些一个特定代码为你的产品版本2.0.一种常见的策略是检出标签版本1.0。因为你已分支版本2.0你可以编辑写代码。稍后当你自信版本2.0已经可以发布了你或许会将版本1.0和2.0返回到你的干或者主要分支中。记住这是仅有的单一策略。你或许决定从不分支或者分叉代码。这全取决于你。 分支和合并或许多数用过的和有用的在版本控制系统的所有特征是分支。在Git中分支和合并是非常容易和相当轻量级的。我可以创建一个新的分支即发布git branch命令 紧随其后的是新分支的名称1git branch drupal-8.0.0如果我发布命令git branch 没有任何选项我能看到一个列表的当前分支附在我当前筛选的分支后。在Git中你当前筛选的分支标注在星号和绿色的文本之间。因为我确认过我在当前的主干分支中我会发布checkout命令在新的分支有效标记为活跃状态1git checkout drupal-8.0.0正如你所想象的那样这是一个为实验性代码的完美沙盒。你可以自由地做任何你想做的不需要考虑产品存储。分支相连是一个逆过程称之为合并。合并允许你在分支中所做的改变添加它们到重要的主干或者其它分支中。合并分支借用Git是很简单的。记住检查文件到你私人的分支常婵是指向前整合。它的逆过程称之为逆向整合包括你检查文件回到主要分支或者主干。唯一你可以决定是合适逆向或者向前整合代码。尽管我猜它取决于多少开发人员参与你的产品开发同时取决于你私有和主要分支的有多活跃。如果我想合并我的私有分支到主要分支或者主干我会发布git merge命令紧随其后的是我想合并的分支名1git merge drupal-8.0.0正如我早前陈述的那样分支和合并是粉盒版本控制系统两个重要的特征。用分支任何时候都可以确保主要分支和主干或者其他分支保持完整。 检验壳整合再次关注Git在许多例子中命令行接口针对的每个版本控制系统是你将会用到的然而许多版本控制系统同样也支持挂在操作系统shell通过shell整合概念。简单地说借用shell整合你可以通过你的操作系统的窗口层和文件取得交互。在微软windows系统中它会是windows Explorer在Mac OS X中它是Macintosh Finder在Linux分布中它是X windows system。借用shell整合你可以添加文件检入文件检出文件返回当前你所用的全部来自于shell的内部通常shell整合选项出现在一个目录菜单中。多数时候版本控制系统也会提供可视的状态显示器显示文件标识在查询状态。通常shell整合是一个可选的组建在安装版本控制系统中。 图形用户界面工具(GUI)除了命令行和shell整合这里还有另外一种流行的方法去访问一个版本控制系统的存储。这个方法通常指的是GUI tool。多数但非所有的GUI tool包括功能 允许你做一些与命令行确实相同的操作。比如添加检入和检出回滚、分支和合并。或许GUI tool工具最大的优势就是它能够可视化的检查存储并且在一个原始文件浏览器重打开文件。Git支持许多GUI tool。我推荐你看GUI 客户页在Git项目网址http://git-scm.com/downloads/guis。有许多可选项可供选择。我个人喜欢Windows的GitHub http://windows.github.com/因为它而已很好的早windows平台上运行并且可以直接整合GitHub云服务。GUI 工具主要在于个人爱好它们可以帮助你和你的团队工作神速。如果你不喜欢用命令行GUI 工具提供了一个很棒的选择。 选择版本控制此文中我已讨论了一种特定的版本控制系统。尽管Git是一种很棒的选择但它可能不适合你的开发环境。有很多版本控制系统可以选择。它们中比较流行的一些包括SubversionMicrosoft’s Team Foundation Server,还有Mercurial。你或许会问你怎么知道那个版本控制系统适合你的开发环境呢牢记这些考虑。如果你在一个大型的团队环境中工作所有的开发人员一起工作在一个相同的办公室那么你或许想试一试集中版本控制系统。Subversion、TFS或许很适合。如果你开始组建你自己的团队那我强烈推荐你使用Git或者Mercurial。Git会挂入很多集成开发环境并且提供GitHub云服务。正如你或许知道的那样GitHub是一个免费的开放项目。如果你需要保存商业代码它依旧是可以承受的。Git能搞定它对你而言很容易用Git存储在你本地设备上接着推进你的变化周期性地Git 枢纽服务器的云端服务器中。如果你的软件开发团队分在世界的各个角落里Git和Mercurial将是一个很棒的选择因为你可以输出和输入以及发送变化借用email而无需建立一个服务器基础设施去保存一个存储。如果你需要证明Git在现实世界中多么有效或许你感兴趣的例子是知道在你最喜爱的Linux分布中的kernel保存在Git存储中它的运作无需比如说这个开发团队很大分散在世界的各个角落里。选择一个你觉得运行不错的版本控制系统。如果你仅仅是开始你在选择是有很多回旋余地那我建议你使用Git。衷心希望你能采用一种你想要的版本控制系统。【转载自iHk-system.com|寻访诸神的网站】 转载于:https://blog.51cto.com/ayuepm/1382248