欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Docker模擬多人協(xié)作進(jìn)行Git操作

今天我們利用Docker模擬出兩個(gè)終端,來進(jìn)行g(shù)it提交操作

創(chuàng)新互聯(lián)建站主營周至網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都APP應(yīng)用開發(fā),周至h5小程序定制開發(fā)搭建,周至網(wǎng)站營銷推廣歡迎周至等地區(qū)企業(yè)咨詢

開始前的準(zhǔn)備

1.安裝docker應(yīng)用,命令行輸入docker -v

Docker模擬多人協(xié)作進(jìn)行Git操作

如果出現(xiàn)上面的提示就說明docker下載成功了!然后讓我們啟動(dòng)docker服務(wù)

service docker start

接下來我們要拉取Git鏡像包,我這里使用的是阿里云鏡像

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

Docker模擬多人協(xié)作進(jìn)行Git操作

下載成功我們來啟動(dòng)三個(gè)容器

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

然后用 docker ps 來查看我們正在運(yùn)行中的容器

Docker模擬多人協(xié)作進(jìn)行Git操作

開啟三個(gè)終端分別進(jìn)入三個(gè)容器內(nèi)

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

Docker模擬多人協(xié)作進(jìn)行Git操作

現(xiàn)在我們就有三個(gè)終端了!


一、GItHub

在github上注冊(cè)賬號(hào),創(chuàng)建一個(gè)庫(接下來為了區(qū)分我們把github上面的這個(gè)庫叫做遠(yuǎn)程倉庫),創(chuàng)建之后呢,因?yàn)間ithub號(hào)召大家代碼開源,所以你的代碼所有人都可以看到,但是并不代表誰都可以向你的遠(yuǎn)程庫里面提交代碼,在這里安全配置是通過id_rsa.pub來進(jìn)行控制的,如何獲取id_rsa.pub在這里我們就不過多介紹了,大家可以看看我的這篇博客

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

在分別獲取id_rsa.pub后我們要把他們填入github中,如圖所示
1.點(diǎn)擊用戶頭像,在下拉列表中選擇settings
2.在左邊選擇SSH and GPG keys
3.然后再右邊就可以看到New SSH key
4.把我們獲得id_rsa.pub填入第二個(gè)輸入框,在第一個(gè)框里填入標(biāo)識(shí)名

Docker模擬多人協(xié)作進(jìn)行Git操作

我們把遠(yuǎn)程倉庫起名為itxdl,讓我們?cè)诳蛻艚K端看看是否能連通遠(yuǎn)程倉庫吧

首先在yi里面進(jìn)行操作

#后面的這個(gè)地址是github給出來的地址git clone git@github.com:lihaijiang123/itxdl.git

Docker模擬多人協(xié)作進(jìn)行Git操作

下載成功后我們來查看一個(gè),可以發(fā)現(xiàn)itxdl這個(gè)倉庫已經(jīng)被我們拉下來了,進(jìn)入庫里查看里面的文件,就是github上創(chuàng)建的庫

Docker模擬多人協(xié)作進(jìn)行Git操作

成功!

二、本地倉庫的提交與撤回

通過git init命令把這個(gè)目錄變成Git可以管理的倉庫,我們剛剛拉下來的itxdl庫已經(jīng)是一個(gè)可被git管理的倉庫了,所以不需要再git init

下面我們拉入一個(gè)laravel框架到宿主機(jī)上,然后推送到github上

#宿主git add *
git commit -m "all clean laravel"git push origin master

注意 : git上傳.env文件是不會(huì)上傳的

終端yi的文件夾中下載下來

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

可以看到itxdl庫已經(jīng)克隆到我們本地文件夾

Docker模擬多人協(xié)作進(jìn)行Git操作
進(jìn)入文件夾,可以發(fā)現(xiàn)我們的文件夾中就有了laravel這個(gè)框架的全部內(nèi)容

Docker模擬多人協(xié)作進(jìn)行Git操作

我們先進(jìn)行本地操作

首先我們新建一個(gè)User控制器,在里面新建index方法,查看一下

Docker模擬多人協(xié)作進(jìn)行Git操作

第一步:使用命令 git add UserController.php添加到暫存區(qū)里面去。如下:

Docker模擬多人協(xié)作進(jìn)行Git操作

現(xiàn)在我們已經(jīng)提交了一個(gè)UserController.php文件到本地倉庫了,我們下面可以通過命令git status來查看是否還有文件未提交,如下:

Docker模擬多人協(xié)作進(jìn)行Git操作

說明沒有任何文件未提交,但是我現(xiàn)在繼續(xù)來改下UserController.php內(nèi)容,比如我在下面添加show方法,使用git status來查看下結(jié)果,如下:

Docker模擬多人協(xié)作進(jìn)行Git操作

上面的命令告訴我們 readme.txt文件已被修改,但是未被提交的修改。

接下來我想看下readme.txt文件到底改了什么內(nèi)容,如何查看呢?可以使用如下命令:

git diff UserController.php

Docker模擬多人協(xié)作進(jìn)行Git操作

如上可以看到,UserController控制器里面新增了一個(gè)show方法;

知道了對(duì)文件做了什么修改后,我們可以放心的提交到倉庫了,提交修改和提交文件是一樣的2步

git add UserController.phpgit commit -m "UserController新增show方法"

版本退回

現(xiàn)在我繼續(xù)對(duì)UserController.php進(jìn)行修改,新建add方法

Docker模擬多人協(xié)作進(jìn)行Git操作

執(zhí)行提交

git add UserController.phpgit commit -m "UserController.php增加add方法"

那么我現(xiàn)在想查看下歷史記錄,如何查呢?我們現(xiàn)在可以使用命令 git log 演示如下所示:

git log

Docker模擬多人協(xié)作進(jìn)行Git操作

git log命令顯示從最近到最遠(yuǎn)的顯示日志,如果嫌上面顯示的信息太多的話,我們可以使用命令 git log –pretty=oneline 演示如下:

Docker模擬多人協(xié)作進(jìn)行Git操作

如果使用版本回退操作,我想把當(dāng)前的版本回退到上一個(gè)版本
有兩種方法:

git reset --hard HEAD^

那么如果要回退到上上個(gè)版本只需把HEAD^改成 HEAD^^以此類推。那如果要回退到前100個(gè)版本的話,使用上面的方法肯定不方便,我們可以使用下面的簡便命令操作:git reset –hard HEAD~100即可。

未回退之前的UserController.php內(nèi)容如下:

Docker模擬多人協(xié)作進(jìn)行Git操作

git reset hard -- HEAD^

Docker模擬多人協(xié)作進(jìn)行Git操作

可以看到,內(nèi)容已經(jīng)回退到上一個(gè)版本了??梢岳^續(xù)使用git log 來查看下歷史記錄信息

Docker模擬多人協(xié)作進(jìn)行Git操作

我們看到 新建add方法內(nèi)容沒有了,但是現(xiàn)在我又想回退到最新的版本,如:有add方法的內(nèi)容要如何恢復(fù)呢?我們可以通過版本號(hào)回退,使用命令方法如下:

git reset --hard 版本號(hào)

但是現(xiàn)在的問題假如我已經(jīng)關(guān)掉過一次命令行或者增加add方法的版本號(hào)我并不知道呢?要如何知道增加add方法內(nèi)容的版本號(hào)呢?可以通過如下命令即可獲取到版本號(hào):

git reflog

Docker模擬多人協(xié)作進(jìn)行Git操作

通過上面的顯示我們可以知道,增加add方法的版本號(hào)是fcb6553.我們現(xiàn)在可以命令

git reset --hard fcb6553

Docker模擬多人協(xié)作進(jìn)行Git操作

修改一下add方法里的內(nèi)容 , 在我未提交之前,我發(fā)現(xiàn)添加i am a boy內(nèi)容有誤,所以我得馬上恢復(fù)以前的版本,現(xiàn)在我可以有如下幾種方法可以做修改:

第一:如果我知道要?jiǎng)h掉那些內(nèi)容的話,直接手動(dòng)更改去掉那些需要的文件,然后add添加到暫存區(qū),最后commit掉。

第二:我可以按以前的方法直接恢復(fù)到上一個(gè)版本。使用 git reset --hard HEAD^

但是現(xiàn)在我不想使用上面的2種方法,我想直接想使用撤銷命令該如何操作呢?首先在做撤銷之前,我們可以先用 git status 查看下當(dāng)前的狀態(tài)。如下所示:

Docker模擬多人協(xié)作進(jìn)行Git操作

這時(shí)Git會(huì)告訴你,git checkout -- file 可以丟棄工作區(qū)的修改,如下命令:

git checkout -- file

命令 git checkout -- UserController.php 意思就是,把UserController.php文件在工作區(qū)做的修改全部撤銷,這里有2種情況,如下:

UserController.php修改后,還沒有放到暫存區(qū),使用 撤銷修改就回到和版本庫一模一樣的狀態(tài)。  
另外一種是UserController.php已經(jīng)放入暫存區(qū)了,接著又作了修改,撤銷修改就回到添加暫存區(qū)后的狀態(tài)。

對(duì)于第二種情況,我想我們繼續(xù)做demo來看下,假如現(xiàn)在我對(duì)add方法添加一行 內(nèi)容為111111111,我git add 增加到暫存區(qū)后,接著添加內(nèi)容22222222,我想通過撤銷命令讓其回到暫存區(qū)后的狀態(tài)。操作如下

#恢復(fù)到?jīng)]有22222的狀態(tài)git checkout -- UserController.php

注意:命令git checkout -- file 中的 -- 很重要,如果沒有 -- 的話,那么命令變成創(chuàng)建分支了。

刪除文件

假如我現(xiàn)在目錄添加一個(gè)文件TestController.php,然后提交,然后刪掉

git add TestController.phpgit commit -m "新增TestController控制器"rm TestController.php

只要沒有commit之前,如果我想在版本庫中恢復(fù)此文件如何操作呢?

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

#放棄工作區(qū)里的操作,恢復(fù)到上次提交后的樣子git checkout -- TestController.php

三、提交遠(yuǎn)程倉庫

1.首先設(shè)置我們的身份

Docker模擬多人協(xié)作進(jìn)行Git操作

獲取遠(yuǎn)程庫的信息

當(dāng)你從遠(yuǎn)程庫克隆時(shí)候,實(shí)際上Git自動(dòng)把本地的master分支和遠(yuǎn)程的master分支對(duì)應(yīng)起來了,并且遠(yuǎn)程庫的默認(rèn)名稱是origin。

要查看遠(yuǎn)程庫的信息 使用 git remote  
要查看遠(yuǎn)程庫的詳細(xì)信息 使用 git remote –v

可以用git push推送到遠(yuǎn)程倉庫,那么我們就使用這個(gè)命令

Docker模擬多人協(xié)作進(jìn)行Git操作

推送成功!這是我們到github上查看一下

Docker模擬多人協(xié)作進(jìn)行Git操作

可以看到有三個(gè)控制器 succeed !


這時(shí)我們加入第二個(gè)終端 “er”

克隆github上的倉庫 ,保持終端er和終端yi的內(nèi)容一致

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

然后回來終端yi繼續(xù)干活,修改一下UserController.php后提交到遠(yuǎn)程,這時(shí)終端er和github上的內(nèi)容不一致了,我們?cè)诮K端er修改UserController.php的內(nèi)容后推送看看會(huì)怎么樣呢

這里git提示我們提交失敗,原因是遠(yuǎn)程包含我所坐的操作,并且提示我可以先使用git pull ...然后在git push

Docker模擬多人協(xié)作進(jìn)行Git操作

執(zhí)行git pull后提示下載成功,但是合并有沖突,需要手動(dòng)解決,解決的方法和分支管理中的 解決沖突完全一樣。解決后,提交,再push,我們查看一下UserController.php

Docker模擬多人協(xié)作進(jìn)行Git操作

<<< HEAD是當(dāng)前本地分支的指針
====下面的是遠(yuǎn)程的分 , 手動(dòng)解決沖突就好了

然后提交,推送

Docker模擬多人協(xié)作進(jìn)行Git操作

成功!我們來github看一下

Docker模擬多人協(xié)作進(jìn)行Git操作

ok,終端yi和終端er的沖突已經(jīng)解決了

四、創(chuàng)建與合并分支

在版本后退里,我們已經(jīng)知道,每次提交,Git都把它們串成一條時(shí)間線,這條時(shí)間線就是一個(gè)分支。截止到目前,只有一條時(shí)間線,在Git里,這個(gè)分支叫主分支,即master分支。HEAD嚴(yán)格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當(dāng)前分支。

首先,我們來創(chuàng)建dev分支,然后切換到dev分支上。

//本地創(chuàng)建和遠(yuǎn)程對(duì)應(yīng)的分支git checkout -b 本地分支名 origin/遠(yuǎn)程分支名//創(chuàng)建分支并切換單該分支上git checkout -b dev//查看分支git branch

Docker模擬多人協(xié)作進(jìn)行Git操作

git branch查看分支,會(huì)列出所有的分支,當(dāng)前分支前面會(huì)添加一個(gè)星號(hào)。然后我們?cè)赿ev分支上繼續(xù)做demo,比如我們現(xiàn)在在TestController.php里新建一個(gè)index方法,然后提交到本地倉庫

git branch
vim TsetController.phpgit add TestController.phpgit commit -m "Test控制器新建index方法"

PS :  (如果想提交當(dāng)前dev分支可以使用git push origin dev)

這時(shí)我們?cè)偾袚Q回master分支,查看TestController.php文件,里面并沒有index了控制器

git checkout master
cat TestController.php

因?yàn)楫?dāng)前不是分支dev,現(xiàn)在我們可以把dev分支上的內(nèi)容合并到分支master上了,可以在master分支上,使用如下命令

git merge dev

Docker模擬多人協(xié)作進(jìn)行Git操作

注意到上面的Fast-forward信息,Git告訴我們,這次合并是“快進(jìn)模式”,也就是直接把master指向dev的當(dāng)前提交,所以合并速度非常快。

合并完成后,我們可以接著刪除dev分支了

Docker模擬多人協(xié)作進(jìn)行Git操作

分支沖突

當(dāng)兩條分支對(duì)同一個(gè)文件同一個(gè)文本塊進(jìn)行了不同的修改,并試圖合并時(shí),Git不能自動(dòng)合并的,稱為沖突(conflict),解決沖突需人手動(dòng)修改,和上面說的兩個(gè)人解決沖突的方法是一樣的

分支管理策略

通常合并分支時(shí),git一般使用”Fast forward”模式,在這種模式下,刪除分支后,會(huì)丟掉分支信息,現(xiàn)在我們來使用帶參數(shù) --no-ff來禁用”Fast forward”模式。當(dāng)不使用fast forward模式后,刪除的分支在git log中同樣可以查的到的

git merge --no-ff -m "注釋" dev

git log --graph --pretty=oneline --abbrev-commit

首先master主分支應(yīng)該是非常穩(wěn)定的,也就是用來發(fā)布新版本,一般情況下不允許在上面干活,干活一般情況下在新建的dev分支上干活,干完后,比如上要發(fā)布,或者說dev分支代碼穩(wěn)定后可以合并到主分支master上來。

BUG分支

在開發(fā)中,會(huì)經(jīng)常碰到bug問題,那么有了bug就需要修復(fù),在Git中,分支是很強(qiáng)大的,每個(gè)bug都可以通過一個(gè)臨時(shí)分支來修復(fù),修復(fù)完成后,合并分支,然后將臨時(shí)的分支刪除掉。

比如我在開發(fā)中接到一個(gè)404 bug時(shí)候,我們可以創(chuàng)建一個(gè)404分支來修復(fù)它,但是,當(dāng)前的dev分支上的工作還沒有提交.并不是我不想提交,而是工作進(jìn)行到一半時(shí)候,我們還無法提交,比如我這個(gè)分支bug要2天完成,但是我issue-404 bug需要5個(gè)小時(shí)內(nèi)完成。怎么辦呢?還好,Git還提供了一個(gè)stash功能,可以把當(dāng)前工作現(xiàn)場 ”隱藏起來”,等以后恢復(fù)現(xiàn)場后繼續(xù)工作。如下:

git statsh

現(xiàn)在我可以通過創(chuàng)建issue-404分支來修復(fù)bug了。

首先我們要確定在那個(gè)分支上修復(fù)bug,比如我現(xiàn)在是在主分支master上來修復(fù)的,現(xiàn)在我要在master分支上創(chuàng)建一個(gè)臨時(shí)分支,演示如下:

git checkout -b issue-404

修復(fù)完成后,切換到master分支上,并完成合并,最后刪除issue-404分支。

git checkout master
git merge --no-ff -m "合并404分支" issue-404git branch -d issue-404

然后在切換回dev分支,我們工作現(xiàn)場被保存到去哪里呢?我們可以使用命令 git stash list來查看下

git stash list

那么我們?cè)趺椿謴?fù)工作區(qū)呢

//恢復(fù)不刪除git stash apply//刪除保存的內(nèi)容git stash drop//另一種方法是 恢復(fù)的同時(shí)并刪除git stash pop

Git是幫助我們提高工作效率的,而不是讓我們因?yàn)樗杏X到難的,git到這里我們就介紹這么多了,祝您工作愉快,下面給大家總結(jié)一下git的命令


Docker模擬多人協(xié)作進(jìn)行Git操作

名稱欄目:Docker模擬多人協(xié)作進(jìn)行Git操作
文章位置:http://aaarwkj.com/article14/iggege.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、自適應(yīng)網(wǎng)站、靜態(tài)網(wǎng)站企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
最新天堂av资源在线观看| 久久99精品国产99久久无| 美女丝袜美腿魅惑男人| 国产三级全黄在线播放| 色男人天堂亚洲男人天堂| 中文字幕丰满人妻不满中出片| 欧美亚洲另类在线第一页| 美女午夜福利精品视频| 日本丝袜福利在线观看| 国产三级视频在线观看视频 | 国产高清大片一级黄色| 免费黄片视频大全在线播放| 国产一级成人免费视频| 日韩久久精品五月综合| 精品裸足人妻少妇二区三区| 国产乱一伦一性一情一色| 99热视频这里只有精品| 亚洲黄色av乱码在线观看| 中文字幕乱码在线观看一区| 国产在线一区二区三区蜜桃| 国产黄色自拍av网站| 国产无遮挡又黄又爽网站| 国产一区中文字幕在线| 国产黄色免费精品网站| 久热99在线视频免费观看| 亚洲少妇熟女一区二区三区| 国产原创中文剧情性感av| 可以直接看内射的视频| 天天操天天日天天干夜夜情欢| 蜜桃视频在线视频免费观看| 青青草原一区二区三区| 亚洲精品福利在线视频| 国产姐弟操大率悠荡笕| 新人妻一区二区在线视频| 久久国产亚洲欧美日韩精品| 中文字幕一区二区不卡顿| 91人妻成人精品一区二区| 久久精品国产免费夜夜嗨| 亚洲少妇午夜福利视频| 久久熟妇少妇亚洲精品| 中文字幕久久亚洲一区|