Linux(服务器编程7.1):---git的学习

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。学到了这一节,有必要做一下总结。
对于github新手,未搭建好环境的先可以参考该博客搭建:github新手使用指南.

一、git的原理

在这里插入图片描述
Workspace: 工作区,就是你平时存放项目代码的地方
Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息-----git add后存储地方
Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本—git commit后存储后的地方
Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换–git push后存储的地方
github : 可以将服务器远程仓库的代码提交到github上;

二、git的操作

看上面的原理,刚开始根本就看懂,只有在实操后才能理解-----------与实际的公司管理代码操作类似。
git的工作流程一般是这样的:
1、服务器建立一个remote仓库;
2、 git clone到本地worksapce,;
3、在工作目录中添加、修改文件;
4、将需要进行版本管理的文件add到暂存区域;
5、将暂存区域的文件commit到git仓库;
6、本地的修改push到远程仓库,如果失败则执行第5步
7、git pull将远程仓库的修改拉取到本地,如果有冲突需要修改冲突。回到第三步
因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

1,建立一个Remote仓库
首先我们在服务器上新建一个test文件夹,我是在linux下新建的目录。在目录下执行 git init --bare, git init也可以,加上–bare防止数据被入侵拷贝,因为目录下 workspace上传过来的代码你是无法查看的,生成以下文件表示仓库(相当于原理图上的remote)已经建好。
在这里插入图片描述
2,建立本地仓库(Respository)
因为我只有一台电脑,远程仓库和本地仓库都在同一个linux上。打开另一终端,新建另一个文件夹git_test,使用命令:git clone linux@192.168.1.11:/home/linux/work/vip/git_test/test ------linux为服务器账号,@后面为ip地址,:后为远程仓库的路径。生成一个test的文件夹,进入test,执行ll -a,里面有一个.git文件,就生成了一个本地仓库。
在这里插入图片描述
3,使用touch命令新建一个READ.md文件,touch README.md,随便增加内容;使用git status查看本仓库的状态,显示有一个README.md文件被修改(新建或者修改都会这么现实)-----红色;
在这里插入图片描述
4,按照上面提示,使用git addREADME.md,将README.md添加到暂存区(原理图上的index中),add后 git status查看状态,如下所示。且为绿色------未commit的


3,提交,执行git commit README.md -m “first file” , -m之后的为提交的注释,相当于归档备注,便于后续追踪,查看;修改多次提交后,git reset --hard HEAD^----回退上一个版本 git reset --hard[地址]----地址可以通过git relog查看;
在这里插入图片描述
在这里插入图片描述
4,推送到服务器仓库,使用命令: git push origin master (origin 为远端,master为主分支)。此时要输入服务器的密码,如果需要免密push,可以在客户端ssh-keygen -t rsa 生成密匙,将ras----.pub 文件中内容复制到服务器.ssh的authorized_keys文件中,设置好了无需登录。
在这里插入图片描述
这里我们实现了简单的git clone远程服务器的代码,并修改代码实现归档。

三、扩展部分:

1,bransh分支就是就是一个代码的副本,可以基于分支进行独立开发,开发不同的功能的时候需要用到分支。比如我们创建Bug分支或者Feature分支,等开发好了再合并到主干上。
在这里插入图片描述
git bransh develop //创建分支develop-----如果对分支不是很清楚,可以安装sourcetree客户端软件,图形化很明了;
git branch //查看分支
git checkout develop # 切换到develop分支
git push -u origin develop //push以后才能在远程仓库看到,使用git bransh 查看
git merge develop //合并分支

2,修改程序编译,在开发过程中,会生成中间文件和运行文件,git status 会有报add,然而中间件不需要提交到远端,如何解决?
vi .gitignore //在仓库目录下新建一个.gitignore文件,将*.out, *.o放入到文件中,git status后不会报add
git add .gitignore
git commit .gitignore -m “add .gitignore file”
git push origin develop //将.gitignore文件push到远程仓库

3,不同分支合并merger冲突怎么解决的?
测试:
现在远端修改一个文件README.md,本地修改一个文件README.md;
本地修改好后:
git add READ.md
git commit READ.md -m “add read”
git push origin master
//会弹出错误,提示要求先pull(如果本地仓库与远端仓库有差异,会提示)
执行git pull
生成了冲突文件
修改冲突文件进行合并即可;

4, git rebase -i
对之前所有的commit的备注进行整理提交 因为commit -m “add function” 多次,备注都 可能是一样的,修改bug就很麻烦,

5,git submodule add url(github模块地址)子模块 //path----自己放到哪个文件夹的路径;
栗子:git submodule add git@github.com:Fang-create/pthread_pool.git ./3rd
实际开发需要用放到开源库放入到自己的仓库上,不会干扰git库;如果开源库更新,直接git submodule update --init //可以拿到了最新源码
.gitmodule 存储submodule指定的分支-----待研究,管理分支
git push也会更新子模块
如果对开源项目修改-----则需要先在github fork(有个fork选项),在选择fork后的地址,执行上面步骤;

6,将我们服务器的代码推送到github仓库
1>,先在网页github下 New repository—test.git---->完成拿到ssh地址:git@github.com:Fang-create/test.git
在服务器仓库端:
2>,将本地仓库与github关联,在本地仓库的文件夹下执行: git remote add origin git@github.com:Fang-create/test.git
3>,推送到远程仓库----git push -u origin master(github上没有文件才带-u),打开github,在test目录下会看到服务器上的源码;(注意:如果有提示git pull,需要在执行git push之前,先执行git pull origin master,修改有冲突的后,保存才能push)

7,遇到的问题:
fata error : error refusing to update check out branch:refs/heads/master


解决方法:在服务器的仓库目录打开.git/config文件,在最后添加

[receive]
denyCurrentBranch = ignore

四、公司版本管理的标准流程

在这里插入图片描述
Master : 稳定压倒一切,禁止尚review和测试过的代码提交到这个分支上,Master上的代码是可以随时部署到线上生产环境的。
Develop :开发分支,我们的持续集成工作在这里,code review过的代码合入到这里,我们以下要讲的BUG fix和feature开发都可以基于develop分支拉取,修改完之后合入到develop分支。
Feature :功能开发和change request的分支,也即我们每一个feature都可以从devlop上拉取一个分支,开发、review和测试完之后合入develop分支。
Hotfix :紧急修改的分支,在master发布到线上出现某个问题的时候,算作一个紧急布丁。从master分支上拉取代码,修改完之后
合入develop和master分支。
Release :预发布分支,比如0.1、0.2、1.12版本,我们一般说的系统测试就是基于这些分支做的,如果出现bug,则可以基于该release分支拉取一个临时bug分支。
Bug : bug fix的分支,当我们定位、解决后合入develop和Release分支,然后让测试人员回归测试,回归测试后由close这个bug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值