版本控制 (版本控制或源代码管理)是一种记录文件或文件集合的更改的方法,以便您以后可以调用特定版本。 版本控制系统(或简称VCS )是一种记录文件系统上文件更改的工具。
有许多版本控制系统,但Git目前是最受欢迎和经常使用的,特别是对于源代码管理。 版本控制实际上可以用于计算机上的几乎任何类型的文件,而不仅仅是源代码。
版本控制系统/工具提供了一些功能,允许个人或一群人:
- 创建项目的版本。
- 准确跟踪变化并解决冲突。
- 将更改合并为通用版本。
- 回滚并撤消对所选文件或整个项目的更改。
- 访问项目的历史版本以比较随时间的变化。
- 看看谁最后修改了可能导致问题的内容。
- 创建项目的安全异地备份。
- 使用多台机器来处理单个项目等等。
Git等版本控制系统下的项目主要有三个部分,即:
- 存储库 :用于记录项目文件状态或更改的数据库。 它包含新项目的所有必需的Git元数据和对象。 请注意,这通常是从网络或远程服务器上的另一台计算机克隆存储库时复制的内容。
- 工作目录或区域 :存储您可以处理的项目文件的副本(进行添加,删除和其他修改操作)。
- 暂存区域:Git目录中的文件(在Git下称为索引),用于存储有关更改的信息,您可以将其提交(保存文件或文件集的状态)到存储库。
有两种主要类型的VCS,主要区别在于存储库的数量:
- 集中版本控制系统(CVCS) :此处每个项目团队成员都获得自己的本地工作目录,但是,他们只将更改提交到单个中央存储库。
- 分布式版本控制系统(DVCS) :在此基础上,每个项目团队成员都可以获得自己的本地工作目录和Git目录,以便他们进行提交。 在个人在本地提交之后,其他团队成员无法访问更改,直到他/她将其推送到中央存储库。 Git是DVCS的一个例子。
此外, Git存储库可以是裸存储库(没有工作目录的存储库) 或非裸存储库(具有工作目录的存储库)。 共享 (或公共或中央)存储库应始终是裸的 - 所有Github存储库都是裸的。
使用Git学习版本控制
Git是一个免费的开源,快速,强大,分布式,易于使用和流行的版本控制系统,对于大型项目非常有效,并且具有卓越的分支和合并系统。 它旨在处理数据,就像一个迷你文件系统的一系列快照,存储在Git目录中。
Git下的工作流程非常简单:您对工作目录中的文件进行修改,然后有选择地将那些已更改的文件添加到临时区域,成为下一次提交的一部分。
准备好后,执行提交,从提交区域获取文件并将该快照永久保存到Git目录。
要在Linux中安装Git ,请使用适当的命令进行选择:
$ sudo apt install git [On Debian/Ubuntu] $ sudo yum install git [On CentOS/RHEL]
安装Git后,建议您通过提供您的全名和电子邮件地址告诉Git您的身份,如下所示:
$ git config --global user.name “Aaron Kili” $ git config --global user.email “[email protected]”
要检查Git设置,请使用以下命令。
$ git config --list
查看Git设置
创建一个新的Git存储库
共享存储库或集中式工作流程非常常见,我们将在此处演示。 例如,我们假设您的任务是为组织中各个部门的系统管理员/程序员设置远程中央存储库,以处理名为bashscripts的项目,该项目将存储在服务器上的/ projects / scritpts /下。
SSH进入远程服务器并创建必要的目录,创建一个名为sysadmins的组(将所有项目团队成员添加到该组,例如用户admin),并在此目录上设置相应的权限。
# mkdir-p /projects/scripts/ # groupadd sysadmins # usermod -aG sysadmins admin # chown :sysadmins -R /projects/scripts/ # chmod 770 -R /projects/scripts/
然后初始化一个裸项目存储库。
# git init --bare /projects/scripts/bashscripts
初始化Git共享存储库
此时,您已成功初始化了一个裸Git目录,该目录是项目的中央存储工具。 尝试列出目录列表以查看其中的所有文件和目录:
# ls -la /projects/scripts/bashscripts/
列出Git共享存储库
克隆一个Git存储库
现在通过SSH将远程共享Git存储库克隆到本地计算机(如果安装了Web服务器并进行了适当配置,也可以通过HTTP / HTTPS进行克隆,例如Github上的大多数公共存储库),例如:
$ git clone ssh://[email protected]_server_ip:/projects/scripts/bashscripts
要将其克隆到特定目录( 〜/ bin / bashscripts ),请使用以下命令。
$ git clone ssh://[email protected]_server_ip:/projects/scripts/bashscripts ~/bin/bashscripts
将共享Git存储库克隆到本地
您现在在非裸存储库(具有工作目录)中拥有项目的本地实例,您可以创建项目的初始结构(即添加README.md文件,不同类别的脚本的子目录,例如recon存储侦察脚本,sysadmin ro store sysadmin脚本等):
$ cd ~/bin/bashscripts/ $ ls -la
创建Git项目结构
检查Git状态摘要
要显示工作目录的状态,请使用status命令 ,该命令将显示您所做的任何更改; Git没有跟踪哪些文件; 那些已经上演的变化等等。
$ git status
检查Git状态
Git阶段的变化和提交
接下来,使用带有-A
开关的add命令 -A
所有更改并执行初始提交。 -a
标志指示命令自动暂存已修改的文件, -m
用于指定提交消息:
$ git add -A $ git commit -a -m "Initial Commit"
做Git承诺
将本地提交发布到远程Git存储库
当项目团队领导时,既然已经创建了项目结构,就可以使用push命令将更改发布到中央存储库,如图所示。
$ git push origin master
推送到Centrol Git存储库
现在,您的本地git存储库应该与项目中央存储库(源)保持同步,您可以通过再次运行status命令来确认这一点。
$ git status
检查Git状态
您还可以通过将存储库克隆到本地计算机来通知您的同事开始处理项目。
创建一个新的Git分支
分支允许您处理项目的功能或快速修复问题,而无需触及代码库(主分支)。 要创建新分支然后切换到它,请分别使用branch和checkout命令。
$ git branch latest $ git checkout latest
或者,您可以使用带有-b
标志的checkout命令一步创建新分支并切换到该分支。
$ git checkout -b latest
例如,您还可以基于另一个分支创建新分支。
$ git checkout -b latest master
要检查您所在的分支,请使用branch命令 (星号字符表示活动分支):
$ git branch
检查Active Branch
创建并切换到新分支后,在其下进行一些更改并进行一些提交。
$ vim sysadmin/topprocs.sh $ git status $ git commit add sysadmin/topprocs.sh $ git commit -a -m 'modified topprocs.sh'
合并从一个分支到另一个分支的变化
要将分支测试下的更改合并到主分支,请切换到主分支并执行合并。
$ git checkout master $ git merge test
将测试分支合并为Master
如果您不再需要特定分支,可以使用-d
开关将其删除。
$ git branch -d test
从远程中央存储库下载更改
假设您的团队成员已将更改推送到中央项目存储库,您可以使用pull命令将任何更改下载到项目的本地实例。
$ git pull origin OR $ git pull origin master #if you have switched to another branch
从中央存储库中提取更改
检查Git存储库并执行比较
在最后一节中,我们将介绍一些有用的Git功能,这些功能可以跟踪存储库中发生的所有活动,从而使您能够查看项目历史记录。
第一个功能是Git log,它显示提交日志:
$ git log
查看Git提交日志
另一个重要的功能是show命令 ,它显示各种类型的对象(例如提交,标签,树等等):
$ git show
Git Show Objects
您需要知道的第三个重要功能是diff命令 ,用于比较或显示分支之间的差异,显示工作目录和索引之间的更改,磁盘上两个文件之间的更改等等。
例如,要显示主分支和最新分支之间的差异,可以运行以下命令。
$ git diff master latest
显示分支之间的差异
另请参阅 : 主持开源项目的10种最佳Git替代方案
摘要
Git允许一组人使用相同的文件一起工作,同时记录文件随时间的变化,以便他们以后可以调用特定的版本。
这样,您可以使用Git来管理源代码,配置文件或存储在计算机上的任何文件。 您可能需要参考Git在线文档以获取更多文档。