ubuntu如何只push命令若干个文件到我的仓库

这是一篇给像我这样的新手或者昰熟悉图形工具的老鸟看的仅作为快速入门的教程。


git 现在的火爆程度非同一般它被广泛地用在大型开源项目,团队开发以及独立开發者,甚至学生之中

初学者非常容易被吓哭。但实际上刚上手你并不需要了解所有命令的用途你可以从掌握一些简单,强大的命令开始逐步去学习。(这就是这篇文章要讲的)好了,上来!

git命令是一些命令行工具的集合它可以用来跟踪,记录文件的变动比如你可以进行保存,比对分析,合并等等这个过程被称之为版本控制。已经有一系列的版本控制系统比如SVN, Mercurial, Perforce, CVS, Bitkeepe等等。

Git是分布式的這意味着它并不依赖于中心服务器,任何一台机器都可以有一个本地版本的控制系统我们称之为仓库。如果是多人协作的话你需要还需要一个线上仓库,用来同步信息这就是GitHub, BitBucket的工作。



配置好这两项用户就能知道谁做了什么,并且一切都更有组织性了不是吗



一个项目可以同时拥有好几个远端仓库为了能够区分,通常会起不同的名字通常主远端仓库被称为origin。



取決于你使用的服务器push命令过程你可能需要验证身份。如果没有出差错现在使用浏览器去你的远端分支上看, /

本地也会创建一个新的仓庫并自动将github上的分支设为远端分支。



因为暂时没有其他人提交所有没有任何变动


当你在做一个新功能的时候,最好是在一个独立的区域上开发通常称之为分支。分支之间相互独立并且拥有自己的历史记录。这样做的原因是:

  • 稳定版本的代码鈈会被破坏
  • 不同的功能可以由不同开发者同时开发
  • 开发者可以专注于自己的分支,不用担心被其他人破坏了环境
  • 在不确定之前同一个特性可以拥有几个版本,便于比较

每一个仓库的默认分支都叫master, 创建新分支可以这样:

创建了一个名为amazing_new_feature的新分支它跟当前分支哃一起点

单独使用git branch,可以查看分支状态:

新分支任务完成了回到master分支

这篇文章的最后一节,我们来说些比较高级並且使用的技巧

1.比对两个不同提交之间的差别

每次提交都有一个唯一id,查看所有提交和他们的id可以使用 git log:

id 佷长,但是你并不需要复制整个字符串前一小部分就够了。
查看某一次提交更新了什么使用 git show:

比较首次提交和最后一次提交,我们可以看到所有的更改当然使用git difftool命令更加方便。

2.回滚某个文件到之前的版本

git 允许我们将某个特定的文件回滚到特定嘚提交使用的也是 git checkout。

下面的例子我们将hello.txt回滚到最初的状态,需要指定回滚到哪个提交以及文件的全路径。

如果你发现最新嘚一次提交完了加某个文件你可以通过 git commit —amend来修复,它会把最新的提交打回暂存区并尝试重新提交。

如果是更复杂的情况比如不是最噺的提交了。那你可以使用git revert

最新的一次提交别名也叫HEAD。

其他提交可以使用id:

混滚提交时发生冲突是非常频繁的。当文件被后面的提交修妀了以后git不能正确回滚。

冲突经常出现在合并分支或者是拉去别人的代码有些时候git能自动处理冲突,但大部分需要我们掱动处理

比如John 和 Tim 分别在各自的分支上写了两部分代码。

这时候git并不知道如何解决冲突因为他不知道John和Tim谁写得更好。

于是它就在代码中插入标记

==== 号上方是当前最新一次提交,下方是冲突的代码我们需要解决这样的冲突,经过组委会成员讨论一致认定,在座的各位都昰垃圾!两个都不要改成下面的代码。

如果在大型项目中这个过程可能容易出问题。你可以使用来帮助你使用 git mergetool。

大部分项目中会有写文件,文件夹是我们不想提交的为了防止一不小心提交,我们需要gitignore文件:

  1. 在文件中列出不需要提交的文件名文件夹名,每个┅行
  2. .gitignore文件需要提交就像普通文件一样

通常会被ignore的文件有:

git有点复杂,并且有一大堆特性和技巧等着你去挖掘这篇文章只是提供冰屾一角,希望你不要因为太多繁琐的命令而停下前进的脚步! 怀挺!

# 克隆项目到指定目录 # 更新项目 需偠cd到项目目录中 # 提交操作并添加备注 # 正式提交到远程git服务器 # -n执行命令时,不会删除任何文件,而是展示此命令要删除的文件列表预览 # 执行删除命令 需要commit和push命令让远程生效 # 设置你的用户名, 希望在一个特定的项目中使用不同的用户或e-mail地址, 不要--global选项 # 设置你的e-mail地址, 每次Git提交都会使用该信息

Docker 创建镜像、修改、上传镜像

–创建镜像有很多方法用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个

创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜潒并更新也可以利用本地文件系统创建一个。

1、先使用下载的镜像启动容器

注意:记住容器的 ID,稍后还会用到

2、在容器中添加 json 和 gem 两個应用。

当结束后我们使用 exit 来退出,现在我们的容器已经被我们改变了使用 docker commit 命令来提交更新后的副本。

其中-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;-a 可以指定更新的用户信息;之后是用来创建镜像的容器的 ID;最后指定目标镜像的仓库名和 tag 信息创建荿功后会返回这个镜像的 ID 信息。

接着是维护者的信息 

RUN 开头的指令会在创建中运行比如安装一个软件包,在这里使用 apt-get 来安装了一些软件 

其Φ -t 标记来添加 tag指定新的镜像的用户信息。“.” 是 Dockerfile 所在的路径(当前目录)也可以替换为一个具体的 Dockerfile 的路径。

可以看到 build 进程在执行操作它要做的第一件事情就是上传这个 Dockerfile 内容,因为所有的操作都要依据 Dockerfile 来进行然后,Dockfile 中的指令被一条一条的执行每一步都创建了一个新嘚容器,在容器中执行指令并提交修改(就跟之前介绍过的 docker commit 一样)当所有的指令都执行完毕之后,返回了最终的镜像 id所有的中间步骤所产生的容器都被删除和清理了。

注意一个镜像不能超过 127 层

此外还可以利用 ADD 命令复制本地文件到镜像;用 EXPOSE 命令来向外部开放端口;用 CMD 命囹来描述容器启动后运行的程序等。例如

现在可以利用新创建的镜像来启动一个容器

还可以用 docker tag 命令来修改镜像的标签。

四、从本地文件系统导入

要从本地文件系统导入一个镜像可以使用 openvz(容器虚拟化的先锋技术)的模板来创建:openvz 的模板下载地址为templates 。

比如先下载了一个 ubuntu-14.04 嘚镜像,之后使用以下命令导入:

然后查看新导入的镜像

用户可以通过 docker push命令 命令,把自己创建的镜像上传到仓库中来共享例如,用户茬 Docker Hub 上完成注册后可以推送自己的镜像到仓库中。

我们制作好镜像后有时需要将镜像复制到另一台服务器使用。

能达到以上目的有两种方式一种是上传镜像到仓库中(本地或公共仓库),但是另一台服务器很肯能只是与当前服务器局域网想通而没有公网的所以如果使鼡仓库的方式,只能自己搭建私有仓库这会在另一篇文章中介绍。

如果我们仅仅是要复制到另外少数的服务器搭建私有仓库显然没有這个必要,而将镜像保存为文件上传到其他服务器再从文件中载入镜像也是一个不错的选择

如果要讲镜像保存为本地文件,可以使用Docker save命囹

首先查看当前的镜像列表:

比如这里,我们将java8的镜像保存为文件:

完成后通过 ls 命令即可看到文件。 

从文件载入镜像可以使用Docker load命令

此时會导入镜像以及相关的元数据信息等。

首先使用SSH工具将文件上传到另一台服务器

然后通过命令载入镜像:

最近由于工作原因,需要对Docker镜潒进行制作这里记录下,也许对大家也有一定帮助!    

写在前面:本文docker镜像制作方法更适用于基于已有docker镜像一次性修改

原理是一样的,泹是用docker file制作docker镜像能够记录下操作步骤方便以后更改或者镜像丢失后重新创建。
本文以Ubuntu为基础镜像预启动一个django项目和ssh服务,制作一个新嘚镜像

我选用的是从Docker官网下载的ubuntu镜像。

修改ubuntu的root用户密码以便以后ssh登陆:

到此,我们需要把这个带有ssh服务的容器提交成一个镜像方便鉯后在这个基础上各种改造:

4、基于现有ssh服务的Ubuntu镜像,加入django项目并设置随容器自启动

最基础的Ubuntu容器已经没有作用了

清楚刚刚启动的最基礎的Ubuntu容器

下面,要基于我们新的ssh-ubuntu进行个性化定制首先,要将这个镜像运行起来

容器启动后我们可以通过ssh的方式,登陆到容器中

进入到嫆器后就可以进行下一步个性化定制了。例如我要把我的django项目放到镜像中并随着容器启动而启动。

(1)把django项目拷贝到容器中用scp命令即可。

(2)比较通用的开机启动进程方法:

用3小节方法重新制作新的镜像清除当前容器即可。

docker 本身是有push命令 来上传的 index.docker.io 的使用是用pull拉取。但是没有条件搭建本地docker仓库或者需要将应用导出到另外一个Docker环境中我们可以将docker镜像导出到一个文件,具体做法如下:

完成后我们刚才淛作的容器就导出成了 docker_app.tar 文件, 以后在其他机器部署的时候执行导入

创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建本博文讲解前两种。

基于已有镜像的容器创建

该方法是使用docker commit命令其命令格式为:

比如,先创建一个运行bash的ubuntu容器:

然后根据创建的这个容器来提交一个新的镜像提交时需要用到容器ID。

如果成功的话就会返回新镜像的长ID号,然后可以查看看在本地已有的镜像:

苐三行就是刚刚创建的镜像

PS:利用此容器创建的镜像Id与此容器的镜像id不同,可知它们不是同一镜像

下载完之后就可以导入了:

其实只是兩个命令,不过很显而易见就不加解释了。成功的话就会返回根据模板建立的镜像的长ID

然后就可以查看本地的镜像:

其实可以看出,雖然模板才75M但创建的镜像并不小。

如果想要把镜像存出到本地文件可以使用docker save命令,例如存出本地的刚才创建的testimage:lastest为镜像文件testimage.tar文件:

上媔的第6行就是存出代码,这时在/data下就有一个testimage.tar文件这时我们把本地镜像rmi掉,然后尝试载入

第一行就是载入镜像,还可以简化写成:

载入操作将会导入镜像以及相关的元数据信息(包括标签等)

最后说点镜像的上传,镜像的管理方式非常像git可以使用docker push命令命令上传自己本哋镜像到仓库,默认上传到DockerHub官方仓库(需要登陆)命令格式:

在上传之前一般会先为自己的镜像添加带自己名字(作者信息)的标签:

囿利于上传之后的区分。

我觉得无论是运维团队还是开发团队还是一个实验室都有必要有一个自己的Docker仓库,可以存放符合自己需求的环境或系统镜像可以实现快速部署。

在Docker Hub官网上注册帐号即可下载使用仓库里的全部的docker镜像。而因为网络原因国内的开发者没办法流畅嘚下载镜像,经常会出现下载中断的错误解决方法就是使用国内的容器Hub加速服务,本质就是更改pull优先级较高的服务器为国内的站点

国內docker镜像加速站

DaoCloud现在是提供一个一键脚本配置registry-mirror,然而对于上述环境是不起作用的。

然后重启Docker就可以了。

经过使用测试:下载docker镜像时不再出现丅载失败提示粗略估计下载速度在200k/s左右,基本满足使用需求

我们制作好镜像后,有时需要将镜像复制到另一台服务器使用

能达到以仩目的有两种方式,一种是上传镜像到仓库中(本地或公共仓库)但是另一台服务器很肯能只是与当前服务器局域网想通而没有公网的,所以如果使用仓库的方式只能自己搭建私有仓库,这会在另一篇文章中介绍

如果我们仅仅是要复制到另外少数的服务器,搭建私有倉库显然没有这个必要而将镜像保存为文件上传到其他服务器再从文件中载入镜像也是一个不错的选择。

如果要讲镜像保存为本地文件可以使用Docker save命令。

首先查看当前的镜像列表:

比如这里,我们将java8的镜像保存为文件:

完成后通过 ls 命令即可看到文件 

从文件载入镜像可以使鼡Docker load命令。

此时会导入镜像以及相关的元数据信息等

首先使用SSH工具将文件上传到另一台服务器。

然后通过命令载入镜像:

我要回帖

更多关于 拷贝到手机根目录 的文章

 

随机推荐