首页 » 网站建设 » php模仿git技巧_Docker模拟多人协作进行Git操作

php模仿git技巧_Docker模拟多人协作进行Git操作

访客 2024-12-14 0

扫一扫用手机浏览

文章目录 [+]

开始前的准备

1.安装docker运用,命令行输入docker -v

php模仿git技巧_Docker模拟多人协作进行Git操作

如果涌现上面的提示就解释docker下载成功了!然后让我们启动docker做事

php模仿git技巧_Docker模拟多人协作进行Git操作
(图片来自网络侵删)

service docker start11

接下来我们要拉取git镜像包,我这里利用的是阿里云镜像

git clone docker pull registry.cn-hangzhou.aliyuncs.com/kancloud/git11

下载成功我们来启动三个容器

docker run -it --name yi -d registry.cn-hangzhou.aliyuncs.com/kancloud/git:latest /bin/bash

然后用 docker ps 来查看我们正在运行中的容器

开启三个终端分别进入三个容器内

docker exec -it [容器的ID] /bin/bash11

现在我们就有三个终端了!

一、GItHub

在github上注册账号,创建一个库(接下来为了区分我们把github上面的这个库叫做远程仓库),创建之后呢,由于github号召大家代码开源,以是你的代码所有人都可以看到,但是并不代表谁都可以向你的远程库里面提交代码,在这里安全配置是通过id_rsa.pub来进行掌握的,如何获取id_rsa.pub在这里我们就不过多先容了,大家可以看看我的这篇博客

http://blog.csdn.net/li_haijiang/article/details/75668343

在分别获取id_rsa.pub后我们要把他们填入github中,如图所示

1.点击用户头像,不才拉列表中选择settings

2.在左边选择SSH and GPG keys

3.然后再右边就可以看到New SSH key

4.把我们得到id_rsa.pub填入第二个输入框,在第一个框里填入标识名

我们把远程仓库起名为itxdl,让我们在客户终端看看是否能连通远程仓库吧

首先在yi里面进行操作

#后面的这个地址是github给出来的地址git clone git@github.com:lihaijiang123/itxdl.git1212

下载成功后我们来查看一个,可以创造itxdl这个仓库已经被我们拉下来了,进入库里查看里面的文件,便是github上创建的库

成功!

二、本地仓库的提交与撤回

通过git init命令把这个目录变成Git可以管理的仓库,我们刚刚拉下来的itxdl库已经是一个可被git管理的仓库了,以是不须要再git init

下面我们拉入一个laravel框架到宿主机上,然后推送到github上

#宿主git add

把稳 : git上传.env文件是不会上传的

在终端yi的文件夹中下载下来

git clone git@github.com:lihaijiang123/itxdl.git11

可以看到itxdl库已经克隆到我们本地文件夹

进入文件夹,可以创造我们的文件夹中就有了laravel这个框架的全部内容

我们前辈行本地操作

首先我们新建一个User掌握器,在里面新建index方法,查看一下

第一步:利用命令 git add UserController.PHP添加到暂存区里面去。
如下:

现在我们已经提交了一个UserController.php文件到本地仓库了,我们下面可以通过命令git status来查看是否还有文件未提交,如下:

解释没有任何文件未提交,但是我现在连续来改下UserController.php内容,比如我不才面添加show方法,利用git status来查看下结果,如下:

上面的命令见告我们 readme.txt文件已被修正,但是未被提交的修正。

接下来我想看下readme.txt文件到底改了什么内容,如何查看呢?可以利用如下命令:

git diff UserController.php11

如上可以看到,UserController掌握器里面新增了一个show方法;

知道了对文件做了什么修正后,我们可以放心的提交到仓库了,提交修正和提交文件是一样的2步

git add UserController.phpgit commit -m \公众UserController新增show方法\"大众1212

版本退回

现在我连续对UserController.php进行修正,新建add方法

实行提交

git add UserController.phpgit commit -m \公众UserController.php增加add方法\"大众1212

那么我现在想查看下历史记录,如何查呢?我们现在可以利用命令 git log 演示如下所示:

git log11

git log命令显示从最近到最远的显示日志,如果嫌上面显示的信息太多的话,我们可以利用命令 git log –pretty=oneline 演示如下:

如果利用版本回退操作,我想把当前的版本回退到上一个版本

有两种方法:

git reset --hard HEAD^11

那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。
那如果要回退到前100个版本的话,利用上面的方法肯定未便利,我们可以利用下面的简便命令操作:git reset –hard HEAD~100 即可。

未回退之前的UserController.php内容如下:

git reset hard -- HEAD^11

可以看到,内容已经回退到上一个版本了。
可以连续利用git log 来查看下历史记录信息

我们看到 新建add方法内容没有了,但是现在我又想回退到最新的版本,如:有add方法的内容要如何规复呢?我们可以通过版本号回退,利用命令方法如下:

git reset --hard 版本号11

但是现在的问题如果我已经关掉过一次命令行或者增加add方法的版本号我并不知道呢?要如何知道增加add方法内容的版本号呢?可以通过如下命令即可获取到版本号:

git reflog11

通过上面的显示我们可以知道,增加add方法的版本号是fcb6553.我们现在可以命令

git reset --hard fcb655311

修正一下add方法里的内容 , 在我未提交之前,我创造添加i am a boy内容有误,以是我得立时规复以前的版本,现在我可以有如下几种方法可以做修正:

第一:如果我知道要删掉那些内容的话,直接手动变动去掉那些须要的文件,然后add添加到暂存区,末了commit掉。

第二:我可以按以前的方法直接规复到上一个版本。
利用 git reset --hard HEAD^

但是现在我不想利用上面的2种方法,我想直接想利用撤销命令该如何操作呢?首先在做撤销之前,我们可以先用 git status 查看下当前的状态。
如下所示:

这时Git会见告你,git checkout -- file 可以丢弃事情区的修正,如下命令:

git checkout -- file11

命令 git checkout -- UserController.php 意思便是,把UserController.php文件在事情区做的修正全部撤销,这里有2种情形,如下:

UserController.php修正后,还没有放到暂存区,利用 撤销修正就回到和版本库千篇一律的状态。

其余一种是UserController.php已经放入暂存区了,接着又作了修正,撤销修正就回到添加暂存区后的状态。

对付第二种情形,我想我们连续做demo来看下,如果现在我对add方法添加一行 内容为111111111,我git add 增加到暂存区后,接着添加内容22222222,我想通过撤销命令让其回到暂存区后的状态。
操作如下

#规复到没有22222的状态git checkout -- UserController.php123123

把稳:命令git checkout -- file 中的 -- 很主要,如果没有 -- 的话,那么命令变成创建分支了。

删除文件

如果我现在目录添加一个文件TestController.php,然后提交,然后删掉

git add TestController.phpgit commit -m \"大众新增TestController掌握器\"大众rm TestController.php123123

只要没有commit之前,如果我想在版本库中规复此文件如何操作呢?

可以利用如下命令 git checkout – b.txt,如下所示:

#放弃事情区里的操作,规复到上次提交后的样子git checkout -- TestController.php1212

三、提交远程仓库

1.首先设置我们的身份

获取远程库的信息

当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。

要查看远程库的信息 利用 git remote

要查看远程库的详细信息 利用 git remote –v

可以用git push推送到远程仓库,那么我们就利用这个命令

推送成功!这是我们到github上查看一下

可以看到有三个掌握器 succeed !

这时我们加入第二个终端 “er”

克隆github上的仓库 ,保持终端er和终端yi的内容同等

git clone git@github.com:lihaijiang123/itxdl.git11

然后回来终端yi连续干活,修正一下UserController.php后提交到远程,这时终端er和github上的内容不一致了,我们在终端er修正UserController.php的内容后推送看看会怎么样呢

这里git提示我们提交失落败,缘故原由是远程包含我所坐的操作,并且提示我可以先利用git pull ...然后在git push

实行git pull后提示下载成功,但是合并有冲突,须要手动办理,办理的方法和分支管理中的 办理冲突完备一样。
办理后,提交,再push,我们查看一下UserController.php

<<< HEAD是当前本地分支的指针

====下面的是远程的分 , 手动办理冲突就好了

然后提交,推送

成功!我们来github看一下

ok,终端yi和终端er的冲突已经办理了

四、创建与合并分支

在版本退却撤退里,我们已经知道,每次提交,Git都把它们串成一条韶光线,这条韶光线便是一个分支。
截止到目前,只有一条韶光线,在Git里,这个分支叫主分支,即master分支。
HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,以是,HEAD指向的便是当前分支。

首先,我们来创建dev分支,然后切换到dev分支上。

//本地创建和远程对应的分支git checkout -b 本地分支名 origin/远程分支名//创建分支并切换单该分支上git checkout -b dev//查看分支git branch123456123456

git branch查看分支,会列出所有的分支,当前分支前面会添加一个星号。
然后我们在dev分支上连续做demo,比如我们现在在TestController.php里新建一个index方法,然后提交到本地仓库

git branch

PS : (如果想提交当前dev分支可以利用git push origin dev)

这时我们再切换回master分支,查看TestController.php文件,里面并没有index了掌握器

git checkout master

由于当前不是分支dev,现在我们可以把dev分支上的内容合并到分支master上了,可以在master分支上,利用如下命令

git merge dev11

把稳到上面的Fast-forward信息,Git见告我们,这次合并是“快进模式”,也便是直接把master指向dev确当条件交,以是合并速率非常快。

合并完成后,我们可以接着删除dev分支了

分支冲突

当两条分支对同一个文件同一个文本块进行了不同的修正,并试图合并时,Git不能自动合并的,称为冲突(conflict),办理冲突需人手动修正,和上面说的两个人办理冲突的方法是一样的

分支管理策略

常日合并分支时,git一样平常利用”Fast forward”模式,在这种模式下,删除分支后,会丧失落分支信息,现在我们来利用带参数 --no-ff来禁用”Fast forward”模式。
当不该用fast forward模式后,删除的分支在git log中同样可以查的到的

git merge --no-ff -m \"大众注释\公众 dev

首先master主分支该当是非常稳定的,也便是用来发布新版本,一样平常情形下不许可在上面干活,干活一样平常情形下在新建的dev分支上干活,干完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

BUG分支

在开拓中,会常常碰到bug问题,那么有了bug就须要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

比如我在开拓中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的事情还没有提交.并不是我不想提交,而是事情进行到一半时候,我们还无法提交,比如我这个分支bug要2天完成,但是我issue-404 bug须要5个小时内完成。
怎么办呢?还好,Git还供应了一个stash功能,可以把当前事情现场 ”隐蔽起来”,等往后规复现场后连续事情。
如下:

git statsh11

现在我可以通过创建issue-404分支来修复bug了。

首先我们要确定在那个分支上修复bug,比如我现在是在主分支master上来修复的,现在我要在master分支上创建一个临时分支,演示如下:

git checkout -b issue-40411

修复完成后,切换到master分支上,并完成合并,末了删除issue-404分支。

git checkout master

然后在切换回dev分支,我们事情现场被保存到去哪里呢?我们可以利用命令 git stash list来查看下

git stash list11

那么我们怎么规复事情区呢

//规复不删除git stash apply//删除保存的内容git stash drop//另一种方法是 规复的同时并删除git stash pop12345671234567

Git是帮助我们提高事情效率的,而不是让我们由于他觉得到难的,git到这里我们就先容这么多了,祝您事情愉快,下面给大家总结一下git的命令

标签:

相关文章

大数据整顿,重塑数据生态,守护数字未来

随着信息技术的飞速发展,大数据时代已经来临。大数据在为我们的生活带来便捷的也引发了一系列问题,如数据泄露、隐私侵犯、算法歧视等。为...

网站建设 2024-12-16 阅读0 评论0

大数据时代,介绍数据的力量与未来

大数据时代,数据已成为国家、企业、个人争夺的宝贵资源。在这个信息爆炸的时代,大数据如何改变我们的生活、推动社会进步?本文将从大数据...

网站建设 2024-12-16 阅读0 评论0

大数据时代,信息传送的变革与创新

随着信息技术的飞速发展,大数据已经渗透到各行各业,成为推动社会进步的重要力量。在这样一个信息爆炸的时代,如何高效、准确地传送大数据...

网站建设 2024-12-16 阅读0 评论0