Git

git子模块

  1. 先在GitHub创建两个空的respository,一个super_project和一个sub_project。
  2. 然后在git bash中向库中写入一些文件。
  3. 在super_project中用git submodule add git@github.com:dengyouquan/sub_project.git module1添加子模块

添加成功后,在父仓库根目录增加了.gitmodule文件。

[submodule "module1"]
path = module1
url = git@github.com:dengyouquan/sub_project.git

在.git/config中有子模块的描述。

[submodule "module1"]
url = git@github.com:dengyouquan/sub_project.git

.git文件详解

  1. hooks(钩):存放一些shell脚本
  2. Info:exclude:存放仓库的一些信息
  3. logs:保存所有更新的引用记录
  4. objects:存放所有的git对象
  5. 标识你项目里的每个分支指向了哪个提交(commit)
  6. description:仓库的描述信息,主要给gitweb等git托管系统使用
  7. index:暂存区(stage),一个二进制文件

git命令

	git checkout -- filename #丢弃工作区的修改
git reset -- filename
git reset [HEAD] filename #丢弃暂存区的修改,不会改动工作区
git checkout HEAD filename #丢弃暂存区,工作区的修改
git reset --hard commit_id #回退版本 HEAD^:上一个版本,HEAD^^:上上个版本,HEAD~100:100个^
	git reset --hard [HEAD^] #工作目录回到上次提交时的状态,但是新增文件工作区保留(未提交的回退)
git reset --soft HEAD^ #这次提交之后的所有变更都移动到暂存区
git reset --mixed HEAD^ #这次提交之后的所有变更都移动到未暂存阶段
git revert HEAD #撤消最近的一个提交(已提交的回退)
git commit --amend #重写历史
git rebase -i  [startpoint]  [endpoint] #合并多个commit为一个完整commit -i是以交互模式运行
git rebase [startpoint] [endpoint] --onto [branchName] #将某一段commit粘贴到另一个分支上

git 删除分支

git branch -D[--delete] BranchName #删除本地分支
git branch -r -D origin/BranchName #删除本地的远程分支
git push origin -d[--delete] BranchName #远程删除git服务器上的分支

git误删

git reset --hard误删

  1. 新增文件:无影响
  2. 已经commit的文件:git checkout @HEAD{0} -- filename(可以通过git reflog查看)
  3. 已经add的文件:git fsck --lost-found在.git/lost-found目录下找找看有没有你丢失的文件,有的话复制出来,如果是文本,直接改成正确扩展名。
  4. 没有add的文件:据说不行

git提交

  1. 新建自己分支20631
  2. 本地拉取分支
git pull -all #拉取全部分支
git pull hand 20631 #拉取选择分支
  1. 去develop分支git pull
  2. 去20631分支git merge develop [目标分支]
  3. git push上传

linux培训

linux简介

  1. 桌面版:Ubuntu/Fedora/CentOs
  2. 服务器版:RedHat/CentOs

虚拟机工具

  1. VirtualBox
  2. Vagrant
vagrant up #在Vagrantfile
#记得在bios界面更改VT-x支持
vagrant ssh vagrant halt #关闭虚拟机

linux安装配置

  1. 安装vagrant
  2. 安装DockerToolbox(只能安装到C盘)

查找命令

  1. type 命令可以帮助我们识别某一个特定的命令是由 shell 内置的还是由一个单独的包提供的。
  2. find 实际搜寻硬盘查询文件名称
find <指定目录> <指定条件> <指定动作>
find . -name "my*" -ls
  1. locate 配合数据库查看文件位置

locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

locate /etc/sh #etc目录下所有以sh开头的文件
  1. whereis #查看文件的位置 (二进制文件,man说明文件和源代码文件)
  2. which 查看可执行文件的位置

基本命令及系统归档

pwd   #输出当前的工作目录
alias #别名
man #查看手册
info #查看信息
head #输出文件首行
tail #输出文件尾行
env #查看环境变量

把制表符转换为空格

expand --tabs=1 filename
unexpand --tabs=1 filename > filename1

paste 按行合并文本文件,默认会以制表符来区分每个文件的行,用-d自定义的其它分隔符

paste -d= file1 file2

split分割与cat合并文件

split -b 50KB -d bash.pdf bash_  #文件分块
cat bash_00 bash_01 bash_02 bash_03 bash_04 bash_05 > bash.pdf #文件合并

tr 命令多用于一对一的替换(改变)字符,或者使用字符范围

cat filename | tr o O
cat filename | tr [a-z] [A-Z]

使用 uniq 和 sort 检查或删除重复的文字

  • uniq只能查出相邻的相同行
  • -k 参数默认第一个字段(使用空格分隔)为关键字段
sort file3 | uniq
sort -k2 file3 | uniq

cut 命令基于字节(-b)、字符(-c)、或者字段(-f)的数量, -d 参数来自定义分隔符(默认制表符)

cut -d: -f1,3 /etc/passwd

fmt 显示定宽内容

fmt -w100 /etc/passwd

pr 命令格式化打印内容

ls -l | pr -n --columns=3 -h "Files in /etc"

文件和目录管理

touch #创建空文件
file filename #判断文件类型
mkdir -p /path/path #创建全路径

重定向 stdin (fd 0)、 stdout (fd 1) 或 stderr (fd 2)

 > #重定向标准输出到一个文件。如果目标文件存在,内容就会被重写。
>> #添加标准输出到文件尾部。
2> #重定向标准错误输出到一个文件。如果目标文件存在,内容就会被重写。
2>> #添加标准错误输出到文件尾部。
&> #重定向标准错误和标准输出到一个文件。如果目标文件存在,内容就会被
重写。
< #使用特定的文件做标准输入。
<> #使用特定的文件做标准输入和标准输出。

管理 RHEL7 的用户和组

/etc/passwd  #用户帐户信息
/etc/group #存储组信息
adduser accountname #创建用户
useradd accountname #创建用户

[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]

  • [username] 和[Comment] 其意自明,就是用户名和备注
  • 第二个‘x’表示帐户的启用了密码保护(记录在/etc/shadow文件),密码用于登

    录[username]
  • [UID] 和[GID]是整数,它们表明了[username]的用户ID 和所属的主组ID技术|RHCSA 系列(三): 如何管理 RHEL7 的用户和组
  • [Home directory]显示[username]的主目录的绝对路径
  • [Default shell] 是当用户登录系统后使用的默认shell

[Group name]:[Group password]:[GID]:[Group members]

  • [Group name] 是组名
  • [Group password]这个组是否使用了密码 (如果是"x"意味着没有)
  • [GID] 和/etc/passwd中一样
  • [Group members]用户列表,使用“,”隔开。里面包含组内的所有用户
usermod [options] [username] #修改用户账户信息

参考文献

git submodule使用小结

Git Submodule管理项目子模块

Git的撤消操作 - 重置, 签出 和 撤消

恢复 git reset -hard 的误操作

Git rebase 用法小结

git checkout HEAD filename

Linux的五个查找命令:find,locate,whereis,which,type 及其区别

7.11实习培训日志-Git Linux的更多相关文章

  1. 7.10实习培训日志-markdown Git

    父模块github地址 一. markdown 1. markdown列表 html是一种发布的格式,markdown是一种书写的格式 区块引用 列表 图片 表格 html 标题 记笔记 写博客 2. ...

  2. 7.12实习培训日志 Linux Docker

    Linux 管理 RHEL7 的用户和组 用户的属性修改 chage -l [username] #查看用户信息 usermod --expiredate=YYYY-MM-DD [username] ...

  3. 7.30实习培训日志-SQL优化

    总结 今天早上考试,下午主要是老师引导我们学习SQL优化,晚上主要是同学的技术分享,杨松柏同学主要给我们分享了java的io的一些东西,c10k问题,bio(同步阻塞IO),NIO(同步非阻塞IO), ...

  4. 7.25实习培训日志-Oracle SQL(一)

    Oracle SQL(一) 重点 尽量避免select *,影响性能,不直观. 慎用Distinct,会排序,影响性能,用exists 排序尽量利用索引,索引有序 索引列不要加函数,会使索引失效 外连 ...

  5. 7.27实习培训日志-Oracle SQL(三)

    Oracle SQL(三) 视图 特性 简单视图 复杂视图 关联的表数量 1个 1个或多个 查询中包含函数 否 是 查询中包含分组数据 否 是 允许对视图进行DML操作 是 否 CREATE [OR ...

  6. 7.24实习培训日志-Docker-Compose

    Docker-Compose 对于昨天的考试,需要 项目根目录下需要docker/mysql/Dockerfile 文件用于构建mysql镜像 项目根目录下需要docker/java/Dockerfi ...

  7. 7.23实习培训日志-JDBC

    总结 今天下午考试,JDBC,这个本身很简单,但是需要我们Dockerfile+Docker Compose运行,这个东西就很复杂.原来学习时没有怎么看,这一次就很懵,完全不知道怎么弄,反正环境都没有 ...

  8. 7.19实习培训日志- java进阶

    java进阶 java集合 Collection List ArrayList jdk1.2,异步处理,性能高,线程不安全 Vector jdk1.0,同步处理,性能低,线程安全 Set HashSe ...

  9. 7.17实习培训日志-java基础

    总结 今天主要是学习了java基础,java面向对象方面的知识,然后下午老师讲了软件的设计模式,今天看了一部分,印象深刻的是单例模式,用枚举实现单例模式.晚上主要讲了maven的一些基础知识和idea ...

随机推荐

  1. git学习(4)---工作流

    一.目的 前三章介绍了git工具本身的操作,主要包含本地仓库操作和远程库操作两部分内容.接下来,我们将介绍怎样使用git进行项目开发,也叫做git工作流. git工作流分为三种模式:共享远程库模式.独 ...

  2. C#读取自定义的config

    今天说下C#读写自定义config文件的各种方法.由于这类文章已经很多,但是大多数人举例子都是默认的在app.confg或者web.config进行读写,而不是一般的XML文件,我主要写的是一般的Xm ...

  3. 多媒体开发之--- Live555 server 获取不到本地ip 全为0

    今天把wis-streamer live555 移植到8148上面跑起来了,运行testOnDemandRTSPServer的时候发现,本地IP地址居然为0.0.0.0; 于是乎就跟踪调试了下,看看它 ...

  4. 公网RTSP地址(持续更新)

    H264+AAC: rtsp://a2047.v1412b.c1412.g.vq.akamaistream.net/5/2047/1412/1_h264_350/1a1a1ae555c53196016 ...

  5. Java,获取文件的Base64字符串,解码Base64字符串还原文件

    在jdk1.8以前,获取文件Base64字符串需要用到第三方库,从1.8开始,Java中引入了Base64相关的类 以下是代码示例 获取文件的Base64编码字符串 import java.io.Fi ...

  6. Srvctl命令具体解释(10g)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/lovedieya/article/details/28169481 Srvctl命令   Srvct ...

  7. AbstractFactory Pattern

    AbstractFactory模式用来解决这类问题:要创建一组相关或者相互依赖的对象. AbstractFactory Pattern结构图 实现: #ifndef _PRODUCT_H_ #defi ...

  8. EF 编程经验

    http://blog.csdn.net/itmaxin/article/details/47662151 这篇文章里有一下东西可以参考,但是弟二个方法明显是不可行的,因为我做了实验直接attach ...

  9. Android 属性动画ObjectAnimator和ValueAnimator讲解

    区别: ObjectAnimator 是直接对某个view进行更改. ValueAnimator 根据 TimeInterpolator 在不断产生相应的数据,来传进view  ,view自己做改变. ...

  10. NSDate的具体使用(转载)

    NSDate的具体使用 时间与日期处理 主要有以下类: NSDate -- 表示一个绝对的时间点 NSTimeZone -- 时区信息 NSLocale -- 本地化信息 NSDateComponen ...