zoukankan      html  css  js  c++  java
  • 7.11实习培训日志-Git Linux

    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 及其区别

  • 相关阅读:
    bootstrap表头固定
    JS:二维数组排序和获取子级元素
    JavaScript 变量声明提升
    一道经典面试题-----setTimeout(function(){},0)
    排序
    基础知识:Promise(整理)
    几个兼容相关的重要函数
    JSON
    关于由ajax返回的数据在for循环中只能取到最后一个数的问题
    如果要遍历除了for循环,你还知道什么?——JavaScript的各种遍历方式
  • 原文地址:https://www.cnblogs.com/sufferingStriver/p/9297038.html
Copyright © 2011-2022 走看看