软件构造心得(三)

 

软件配置管理之版本控制管理(以git为例)

  在软件配置管理中,版本控制是很重要的,它可以用于比对不同版本的差异以及进行回退版本等操作,在软件配置管理中占据着举足轻重的地位。早期的版本控制管理是通过简单的修改文件、项目名称来实现的,然而这样会有重复储存等众多缺陷。在git中,它每一次是储存发生变化的文件,对于不发生变化的文件不进行重复储存。

 

  它在版本上的更新采用了在有向图上的操作,一条A到B的有向边代表着从版本A修改到了版本B。一个点指向多个点说明产生了分支(branch),而多个点指向同一个点说明不同版本发生了合并(merge)。在git中,主要分为四个区域,分别是工作区、暂存区、本地仓库和远程仓库。一般往git上传输文件/项目,总要经过工作区 > 暂存区 > 本地仓库 > 远程仓库这几个步骤。

  一、管理本地仓库和管理远程仓库

  一开始机子中没有对应的本地仓库,也没有相连的远程仓库,因此需要建立对应的本地仓库和远程仓库。

  首先,建立空的本地仓库的指令为git init(在对应的文件夹位置输入它),成功建立本地仓库。需要注意的是,最好将其建在一个独立的文件夹(子目录)中,不要把它建在根目录等包含其他文件的目录中,这样上传的时候就不会有一些奇怪的错误产生。成功建立的标志是出现.git文件夹(可能被隐藏)。若将该.git文件夹删除,则就可以将本地仓库删除。

  其次,还需要将本地仓库与远程仓库关联,这样才能够上传文件。关联采用的是remote指令。其指令大致如下:

git remote -v  //查看所有远程仓库
git remote add [shortname] [url]   //添加远程仓库,并给予该仓库小名
git remote rm [name]  //删除远程仓库

  

  二、工作区 > 暂存区

  一般我们平常在本地写代码开发程序都位于工作区中,或者说工作区就处于本地电脑中的(可被看见的)位置(如包含.git文件夹的目录),而要让这些文件上传,就要把他们上传至暂存区然后再上传至本地仓库中。首先,我们需要将想要上传的文件放置到包含.git文件夹的目录中(即输入git init的目录中,注意的是 不是打开.git文件夹)。然后,有如下指令可以完成对于暂存区的管理以及对于文件从工作区到暂存区的跳转(即追踪文件):

git add [filename] //追踪该文件,即将该文件加入暂存区中
git status  //查看暂存区中的文件
git rm --cached [filename]   //从暂存区中删除该文件,工作区中不改变
git restore [filename]     //将工作区中的文件撤销到暂存区中的版本或本地仓库中的版本
git diff [filename]   //显示暂存区与工作区的差异

  需要注意的是上传至暂存区不是指整个文件的上传,而是指是否追踪某文件(最好将处理文件放置到包含.git的目录中,方便操作)。

 

  三、暂存区 > 本地仓库

  使用git add指令之后,只是将文件进行了追踪(即上传到暂存区中),仍需要进行下一步操作使其上传到本地仓库中。

  上传至本地仓库的核心指令是:

git commit -m [message] //将暂存区里的所有文件都上传至本地仓库中(覆盖)

  需要注意的是,上传信息message是必要的。git commit之后还会输出修改和添加的文件个数。若是想要上传暂存区中的部分文件,则有以下指令:

git commit [file1] [file2]...  -m [message]

  而若想查看暂存区与上次提交的差异,也有以下指令完成:

git diff --cached

 

  四、本地仓库 > 远程仓库

  将文件上传至本地仓库后,就可以将其上传至远程仓库了(当然也可以从远程仓库中下载下来),其中完成上传/下载的指令如下:

//上传至远程仓库并合并
git push <远程主机名(可用shortname)> <本地分支名>:<远程分支名>
//下载至本地仓库并合并
git pull <远程主机名(可用shortname)> <本地分支名>:<远程分支名>

//上面两个操作若本地分支名与远程分支名一致,则只需写一个,如以下两个指令等价:
git push origin master
git push origin master:master

//若本地与远程版本不一致,但仍想强制上传,则有以下指令:
git push --force
<远程主机名]> <本地分支名>:<远程分支名>

  五、下载项目:

  下载项目至本地的指令就很简单了,只需一步就可以从远程仓库下载至工作区中:

git clone [url]

  它会将项目直接下载至工作区中,若该位置没有.git文件夹且本机未创建过,它还会自动创建.git文件夹。

 

  对于版本不一致的处理:

  我的处理是重新把远程仓库中的项目git clone/git pull下来,然后在工作区中修改最后再git add、git commit、git push上传到远程仓库中。

posted @ 2022-06-11 21:10  立志马院的newbee  阅读(18)  评论(0编辑  收藏  举报