美文网首页程序员
linux,git基础命令

linux,git基础命令

作者: AQ王浩 | 来源:发表于2013-12-30 21:01 被阅读436次

    linux基础命令
    find
    find / -name targetfilename 查找文件
    按时间查找也有参数 -atime 访问时间
    —ctime 改变状态时间
    -mtime 修改时间
    find ./ -mtime 0:返回最近24小时内修改过的文件。
    find ./ -mtime 1 : 返回的是前48~24小时修改过的文件。而不是48小时以内修改过的文件。

    那怎么返回10天内修改过的文件?find还可以支持表达式关系运算,所以可以把最近几天的数据一天天的加起来:
    find ./ -mtime 0 -o -mtime 1 -o -mtime 2 ……虽然比较土,但也算是个方法了。

    宣传语

    历经两个半月的准备,三次大改版,十七次小改版。le1024终于要和大家见面了。

    le1024每天推荐1~3段,有趣、有爱、有故事的视频。

    为您工作、学习、生活之余增加一点快乐的感觉。程序员必看的快乐视频网站

    ls -la
    (1)将文件按从新到旧排列,取第一个。
    ls -t *.cpp | head -1
    (2)将文件按从旧到新排列,取最后一个。
    ls -rt *.cpp | tail -1
    history
    # export HISTTIMEFORMAT='%F %T '
    # history | more

    使用Ctrl + R 搜索历史的一个快键键
    
    如果想执行 第4条命令,那么可以执行!4
    
    !ps 输入!ps 并回车,将执行以ps打头的命令
    
    history | tail -4
    
    http://hi.baidu.com/linkage121/item/032729f5d30502c9521c2630
    

    sudo
    su是切换用户的命令,常用的方法是su - username
    mkdir
    linux mkdir 命令用来创建指定的名称的目录,
    要求创建目录的用户在当前目录中具有写权限,
    并且指定的目录名不能是当前目录中已有的目录。

    mkdir -p test2/test22 递归地创建多个目录
    
    rm -rf test2/test22 递归的删除创建的目录
    mkdir -m 777 test3  创建权限为777的目录
    

    touch
    -r 统一修改文件的修饰的日期
    528 touch zz.txt
    529 touch -r zz.txt log2012.log log2013.log
    touch -t 201211142234.50 log.log

    -a 或--time=atime或--time=access或--time=use  只更改存取时间。
    -c 或--no-create  不建立任何文档。
    -d  使用指定的日期时间,而非现在的时间。
    -f  此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题。
    -m 或--time=mtime或--time=modify  只更改变动时间。
    -r  把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同。
    -t  使用指定的日期时间,而非现在的时间。

    chmod
    http://www.cnblogs.com/peida/archive/2012/11/29/2794010.html

    每一个文件或目录的访问权限都有三组,每组用三位来表示,
    分别为文件作者的读,写和执行权限
    作者同组的用户的读,写和执行权限
    系统中其他用户的读,写和执行权限

    -rw-r--r-- 1 root root 296k 11-12 06:03 log2012.log
    第一个字符指定了文件类型.
    在普通意义上一个目录也是一个文件
    第一个字符是横线,表示是一个非目录的文件
    如果为d表示是一个目录,从第二字符开始到第十个字符,3个字符一组,
    分别表示了3组用户对文件或者目录的权限.权限字符用横线代表空许可
    r代表只读,w代表写,x代表可执行

    上述文件
    表示作者有读写权限
    作者同组的用户只有读权限
    其他用户只有读权限

    权限范围
    u 目录或者文件的当前用户
    g 目录或者文件的当前群组
    o 除了目录或者文件的当前用户或群组之外的用户或者群组
    a 所有的用户及群组

    r : 读权限, 用数字4表示
    w : 写权限, 用数字2表示
    x : 执行权限,用数字1表示

    • : 删除权限,用数字0表示

    chmod u=rwx,g=rw,o=r zz (注意逗号的后面不能有空格)

    chmod 764 zz

    chmod ug+x,o-x log2012.log

    chmod g=x log2012.log 把g的权限赋值为x

    chown
    http://www.cnblogs.com/peida/archive/2012/12/04/2800684.html
    http://wenson.iteye.com/blog/212739

    通过chown改变文件的拥有者和群组.普通用户不能将自己的文件该变成其他的拥有者,
    其操作权限一般为管理员.
        chown mail:mail log2012.log
    chown [选项]...[所有者][:[组]]文件...

        若
        chown root: log2012.log
        那么改变之后 root 的所选组也就变成root了
        sudo chown -R -v root:root
        改变指定目录以及其子目录下的所有文件的拥有者和群组 
        -R 处理制定目录以及其子目录下的所有文件
        -v 显示详细的处理信息
    

    apt-get apt-cache
    apt-cache search package 搜索包
      apt-cache show package 获取包的相关信息,如说明、大小、版本等
      apt-cache depends package 了解使用依赖
      apt-cache rdepends package 是查看该包被哪些包依赖
      sudo apt-get install package 安装包
      sudo apt-get install package - - reinstall 重新安装包
      sudo apt-get -f install 修复安装"-f = ——fix-missing"
      sudo apt-get remove package 删除包
      sudo apt-get remove package - - purge 删除包,包括删除配置文件等
      sudo apt-get update 更新源
      sudo apt-get upgrade 更新已安装的包
      sudo apt-get dist-upgrade 升级系统
      apt-get source package 下载该包的源代码
      sudo apt-get clean && sudo apt-get autoclean 清理无用的包
      sudo apt-get check 检查是否有损坏的依赖
    tar
    弄清两个概念:
    打包和压缩.
    打包是指将一大堆的文件或目录变成一个总的文件
    压缩是将一个大的文件通过一些压缩算法变成一个小文件
    这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩
    一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)

    http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html
    用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
    3.命令参数:
    必要参数有如下:
    -c 建立新的压缩文件
    -x 从压缩的文件中提取文件
    -t 显示压缩文件的内容
    -z 支持gzip解压文件
    -j 支持bzip2解压文件
    -v 显示操作过程
    -f 指定压缩文件

    tar -cvf log.tar log2012.log 仅打包,不压缩!
    tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
    tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩
    在参数 f 之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。 如果加 z 参数,则以 .tar.gz 或 .tgz 来代表 gzip 压缩过的 tar包; 如果加 j 参数,则以 .tar.bz2 来作为tar包名。

    tar -zxvf /opt/soft/test/log.tar.gz 将tar包解压缩
    http://www.cnblogs.com/peida/archive/2012/11/30/2795656.html

    tar
    解包:tar xvf FileName.tar
    打包:tar cvf FileName.tar DirName
    (注:tar是打包,不是压缩!)

    .gz
    解压1:gunzip FileName.gz
    解压2:gzip -d FileName.gz
    压缩:gzip FileName

    .tar.gz 和 .tgz
    解压:tar zxvf FileName.tar.gz
    压缩:tar zcvf FileName.tar.gz DirName

    .bz2
    解压1:bzip2 -d FileName.bz2
    解压2:bunzip2 FileName.bz2
    压缩: bzip2 -z FileName

    .tar.bz2
    解压:tar jxvf FileName.tar.b

    date
    date '+This date noew is =>%x, time is now =>%X, thank you!'
    This date noew is =>2013年12月23日, time is now =>21时40分15秒, thank you!

    sudo date -s 991128

    [root@Gman root]# date -d next-day +%Y%m%d
    20060328
    [root@Gman root]# date -d last-day +%Y%m%d
    20060326
    [root@Gman root]# date -d yesterday +%Y%m%d
    20060326
    [root@Gman root]# date -d tomorrow +%Y%m%d
    20060328
    [root@Gman root]# date -d last-month +%Y%m
    200602
    [root@Gman root]# date -d next-month +%Y%m
    200604
    [root@Gman root]# date -d next-year +%Y
    2007

    sudo date -s '131223 21:59:00'
    date -d '20131212 13:13:00'

    date 设置时间格式
    命令中各选项的含义分别为:
    -d datestr, --date datestr 显示由datestr描述的日期
    -s datestr, --set datestr 设置datestr 描述的日期
    -u, --universal 显示或设置通用时间
    cat
    1.一次显示整个文件。
    $ cat filename
    2.从键盘创建一个文件。
    $ cat > filename
    只能创建新文件,不能编辑已有文件.
    3.将几个文件合并为一个文件。
    $cat file1 file2 > file

    -n 或 –number 由 1 开始对所有输出的行数编号
    -b 或 –number-nonblank 和 -n 相似,只不过对于空白行不编号
    -s 或 –squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行
    -v 或 –show-nonprinting

    范例:
    把 linuxfile1 的档案内容加上行号后输入 linuxfile2 这个档案里
    cat -n linuxfile1 > linuxfile2
    把 linuxfile1 和 linuxfile2 的档案内容加上行号(空白行不加)之后将内容附加到 linuxfile3 里。
    cat -b linuxfile1 linuxfile2 >> linuxfile3
    cat /dev/null > /etc/test.txt 此为清空/etc/test.txt档案内容

    cp
    cp -i file1 file2 1、将文档 file1复制成file2,复制后名称被改file2
    cp -i file1 dir1 2、将文档 file1复制到dir1目录下,复制后名称仍未file1
    cp -r dir1 dir2

    将目录dir1 复制到dir2 目录下,复制结果目录改名为dir2
    mv

    -b :若需覆盖文件,则覆盖前先行备份。
    -f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
    -i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
    -u :若目标文件已经存在,且 source 比较新,才会更新(update)
    -t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

    mv test.log test1.txt 文件改名
    mv test1.txt test3 移动文件
    mv log1.txt log2.txt log3.txt test3 实例三:将文件log1.txt,log2.txt,log3.txt移动到目录test3中。
    mv -i log1.txt log2.txt 将文件file1改名为file2已经存在,则询问是否覆盖
    mv -f log3.txt log2.txt 将文件file1改名为file2,即使file2存在,也是直接覆盖掉
    mv dir1 dir2 目录的移动
    mv * ../ 移动当前文件夹下的所有文件到上一级目录

    pwd
    目录连接链接时,pwd -P 显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径
    cd
    cd /
    cd ~

    grep

    [options]主要参数:
    -c:只输出匹配行的计数。
    -I:不区分大 小写(只适用于单字符)。
    -h:查询多文件时不显示文件名。
    -l:查询多文件时只输出包含匹配字符的文件名。
    -n:显示匹配行及 行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包含匹配文本的所有行。

    $ grep ‘test’ d*
    显示所有以d开头的文件中包含 test的行。
    $ grep ‘test’ aa bb cc
    显示在aa,bb,cc文件中匹配test的行。
    $ grep ‘[a-z]{5}’ aa
    显示所有包含每个字符串至少有5个连续小写字符的字符串的行。
    $ grep ‘w(es)t.\1′ aa
    如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.
    ),这些字符后面紧跟着 另外一个es(\1),找到就显示该行。如果用egrep或grep -E,就不用”\”号进行转义,直接写成’w(es)t.*\1′就可以了

    man
    man bash | col -b > bash.txt
    ps aux|grep
    aux 分别代表
    显示其他用户启动的进程(a)
    查看系统中属于自己的进程(x)
    启动这个进程的用户和它启动的时间(u)

    kill/pkill
    linux 中的kill命令用来种植指定的进程(terminate a process)
    的运行,是Linux下进程管理的常用的命令,通常
    终止一个前台进程可以使用Ctrl+C键,但是对于一个后台进程
    就须用kill命令来终止。
    http://www.cnblogs.com/peida/archive/2012/12/20/2825837.html

    whereis
    find是最常见和最强大的查找命令
    find . -name "my" 搜索当前目录(含有子目录) 所有文件名以my开头的文件
    find . -name "my
    " -ls 搜索当前目录中,所有文件名以my开头的文件,并显示他们的详细信息
    find . -type f -mmin -10 搜索当前目录中,所有过去10分钟更新过的普通文件
    如果不加-type f 参数,则搜索普通文件+特殊文件+目录

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

    wget
    Linux系统中的 wget 是一个下载文件的工具。
    它用在命令行下,对于Linux用户是必不可少的工具,
    我们经常要下载一些软件或从远程服务器恢复备份到本地服务器。
    wget支持HTTP HTTPS和FTP协议,可以使用HTTP代理
    所谓的自动下载是指,wget可以在用户退出系统之后在后台执行
    这意味你可以登录系统,启动一个wget下载任务,
    然后退出系统,wget将在后台执行,直到任务完成。
    相对于其他大部分浏览器在下载大量数据时,需要用于一直的参与,这省去了极大的麻烦。

    使用wget下载单个文件
    wget http://www.minjieren.com/wordpress-3.1-zh_CN.zip

    使用wget- O 下载并以不同的文件名保存
    wget -O wordpress.zip http://www.minjieren.com/download.aspx?id=1080
    限制下载的速度
    wget --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip
    使用wget -c 断点续传
    wget -c http://www.minjieren.com/wordpress-3.1-zh_CN.zip
    使用wget-c 重新启动下载中断的文件,对于我们下载大文件时很有帮助

    service

    service命令,顾名思义,就是用于管理Linux操作系统中服务的命令

    1 声明, 这个命令不是在所有的linux发行版都有
    2 此命令位于/sbin 目录下,用file命令查看他就是一个脚本命令
    3 去/etc/init.d目录下寻找相应的服务,进行开启和关闭等操作
    4 开启httpd服务器: service httpd start

    start 可以换成restart 表示重新启动,stop表示关闭,reload表示重新载入配置
    关闭mysql服务器: service mysqld stop
    强烈建议大家将service命令替换为/etc/init.d/mysqld stop

    alias

    用户可以利用alias,自定指令的别名。若输入alias,则可以列出所有的别名设置
    alias的效力仅及与该次登录的操作。
    可以在/etc/profile或自己的~/.bashrc 中设定指定的别名

    还有,如果你想给每一位用户都生效的别名,请把alias la='ls -al' 一行加在/etc/bashrc最后面
    /etc/bashrc 设置给全系统的
    ~/.bashrc 一个是设置给单用户使用的

    df/du

    df -h 可以显示目前所有档案的最大可用空间及使用
    -h表示使用[Human-readable]的输出 也就是在档案系统大小使用GB, MB等
    易读的格式

      我们可以使用参数-i 来查看目前档案系统inode的使用情形
      所谓的 inode 是用来存放档案及目录的基本信息 (metadata),
      包含时间、档名、使用者及群组等。在分割扇区时,系统会先做出一堆 
      inode 以供以后使用,inode 的数量关系着系统中可以建立的档案及目录总数。
    

    du
    显示每个文件和目录的磁盘使用情况

    du -h --max-depth=1 |sort -rh| more
    输出每个目录的使用情况,并且按照空间大小,倒序排列

    rm
    -i 删除 删除前询问是否需要删除;
    -f 强制删除,无需确认。
    -r 或-R 或--recursive 将目录以及目录下的文件或者目录逐一删除。
    -d 或--directory 删除目录
    1,实践中发现除了-r外,其他的单个参数都不能够对目录(不管是否为空)进行删除操作。

    echo
    利用 echo $PATH echo ${PATH}
    diff
    diff命令能比较单个文件或目录内容,如果制定比较的是文件,则只有当输入为文本文件时才有效.
    以逐行的方式,比较文本文件的异同之处.
    如果指定比较的是目录的时候,diff命令会比较两个目录下名字相同的文件,列出不同的二进制
    公共子目录和只在一个目录出现的文件

    diff 的 normal 显示格式有三种提示
    a - add
    c - change
    d - delete
    www.cnblogs.com/peida/archive/2012/12/12/2814048.html

    wget

    ifconfig
    Linux 下网卡命令
    ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx

    配置网卡的IP地址
    ifconfig eth0 192.168.0.1 netmask 255.255.255.0

    若在eth0上配置了192.168.0.1 的IP地址及24位掩码, 若想在eth0上在配置一个
    可以使用下面的方法
    ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0

    netstat
    netstat 可以用来显示网络链接,路由表,接口统计,伪链接和组播成员
    netstat -a -> ss 网络连接
    netstat -r -> ip route 路由表
    netstat -i -> ip -s link 统计接口
    netstat -M -> ss 伪链接
    netstat -g -> ip maddr 组播成员

    top
    top命令是Linux下常用的性能分析工具,
    能够实时显示系统中各个进程的资源占用状况,
    类似于Windows的任务管理器。
    下面详细介绍它的使用方法。top是一个动态显示过程,
    即可以通过用户按键来不断刷新当前状态.
    如果在前台执行该命令,它将独占前台,
    直到用户终止该程序为止.比较准确的说,
    top命令提供了实时的对系统处理器的状态监视.
    它将显示系统中CPU最“敏感”的任务列表.
    该命令可以按CPU使用.内存使用和执行时间对任务
    进行排序;而且该命令的很多特性都可以通过
    交互式命令或者在个人定制文件中进行设定.

    http://www.cnblogs.com/peida/archive/2012/12/24/2831353.html

    cron
    crond 是linux 用来定期执行程序的命令.当安装完成系统之后,
    默认便会启动此任务调度命令.crond命令每分钟会定期检查是否有要执行的工作
    如果有要执行的工作便会自动执行该工作.
    1 系统执行的工作: 系统周期性所要执行的工作, 如备份系统数据, 清理缓存
    2 个人执行的工作: 某个用户定期要做的工作, 例如每隔10分钟检查邮件服务器是否有新邮件
    -e 执行文件编辑器来设定时程表
    -r 删除目前的时称表
    -l 列出目前的时程表

    /etc/init.d/cron restart

    说明  取值范围
    

    第一段 代表分钟 0~59
    第二段 代表小时 0~23
    第三段 代表日期 1~31
    第四段 代表月份 1~12
    第五段 代表星期 0~6 其中 0 表示星期日
    第六段 要执行的命令 命令

    前五个可以全写 *
    1 * * * * date>>$HOME/test.txt
    每个小时的第一分钟执行一段命令
    */1 * * * * data>>$HOME/test.txt
    每隔一分种执行一段命令

    3 * * * * root /home/meng/hello.sh
    每小时的第3分钟执行

    在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
    */20 6-12 * 12 * /usr/bin/backup

    git
    git和 svn区别

    1
    Git是分布式的
    SVN 是非分布式的

    2
    GIT把内容按元数据方式存储,而SVN是按文件
    所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs
    等的文件夹里。如果你把.git目录的体积大小跟.svn比较,
    你会发现它们差距很大。因为,.git目录是处于你的机器上的一个克隆版的版本库,
    它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。

    3 GIT没有一个全局的版本号,而SVN有
    4 GIT的内容完整性要优于SVN

    创建git远程仓库并在本地下载
    git remote -v 查看远程的对应克隆的地址
    git clone git://github.com/ibugs/sample_app.git

    添加一个新的远程库,可以指定一个简单的名字,以便将来引用,运行
    git remote add [shortname] [url]
    $ git remote add pb git://github.com/paulboone/ticgit.git

    当远程创建了一个仓库
    git remote add origin https://github.com/ibugs/job.git
    git push -u origin master

    我们现在在rspec-test的库,我需要新添加一个远程的库
    git remote add tt https://github.com/ibugs/job.git
    git push -u tt master

    添加完远程的库之后,我就可以把远程的库中的内容pull 下来
    git pull tt master

    重命名
    git remote rename tt zz

    删除这个远程仓库
    git remote rm paul

    创建分支,修改文件,上传文件

    git flow feature start rm
    git add zzz.txt
    git commmit -m ""
    git push origin rm

    http://git-scm.com/book/zh/Git-%E5%9F%BA%E7%A1%80-%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93%E7%9A%84%E4%BD%BF%E7%94%A8
    上传空文件夹

    你想添加一个目录,但是目录里面所有的文件你都不想上传。
    假如: web/upload 这个目录吧。
    在上面这个目录下添加 .gitignore ,内容如下:

    Ignore everything in this directory

    Except this file

    !.gitignore

    保存后,然后:

    git add web/upload

    git remote update -p

    git diff/checkout/reset
    工作区,暂存区,版本库区别
    工作区 --> :电脑能看到的目录
    版本库 --> :工作区中的.git文件就是版本库
    暂存区 --> :通过git add把文件放入的区域叫做暂存区.最后通过commit统一进行提交

    git checkout -- file.txt 撤销修改,返回到最后依次commit或者add状态
    场景1
    当你改乱了工作区某个文件的内容, 想直接丢弃工作去的修改时,用命令git checkout -- file
    场景2
    当你不但该乱了工作区某个文件的内容,还添加了暂存区时,想丢弃修改,分两步
    第一步用命令git reset HEAD file 就回到了场景1, 然后按照场景1的操作

    从远程到克隆到本地仓库
    git clone https://github.com/name/gitskills.git

    标签的管理,我们通常现在版本库中打上标签,这样,就唯一确定了打标签时候的版本.
    将来无论什么时候,某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,
    标签也是版本库的一个快照.

    git tag v1.0
    git tag 查看标签
    git tag v1.0 master 如果再历史记录中忘记了标签,可以先从log中查看历史,然后对应的id打标签
    git tag -d v0.1 删除标签
    git push origin :refs/tags/v1.0 删除远程的tag
    工作区:--> 就是你电脑里能看到的目录
    版本库:--> Git的版本库中存了很多东西,其中最重要的称为stage(或者叫indexde 暂存区),还有Git为我们自动创建的第一个分支
    master 以及执行master的一个指针叫HEAD

    版本库中包含了 叫做 暂存区的东西

    [ Working Directory ] -> (git add file ) -> [ Stage(index) ] -> ( git commit ) -> [History]
    [ History ] -> ( git reset -- files ) -> [ Stage ] -> ( git checkout --file ) -> [ Working Directory ]

    特殊的情况
    git checkout HEAD -- files 回滚到复制最后一次提交

    git规范:不能使用 commit -a,上传前一定要diff

    git log的各种参数和用法

    git log
    git log -2 查看两次提交
    git log --graph 以图形的方式来显示提交日志
    git log --oneline --decorate 显示所有的提交,只显示提交 前面只有7个字符的编码
    git log --pretty = oneline 文件名

    git log --stat -2 查看近两次提交修改得文件

    git merge --squash解析

    在 my_branch 上执行 git merge --squash [otherbranch]
    会把otherbranch 上的所有修改放在my_branch的暂存区上.
    然后进行提交,提交之后,会在my_branch 分支上生成一个commit信息,可以保留suqsh_branch的提交信息

    git flow

    开发分支的
    git flow feature start <your feature>
    git flow feature finish <your feature>

    git flow feature publish <name>
    git push origin <name>
    开发一个release的过程
    git flow release start <release>
    git flow release finish <release>

    develop, master, feature, release, hotfix的区别,画图表示
    git flow命令和git命令的对应关系

    git flow feature start <your feature>
    --相等于
    git checkout -b myfeature develop

    git flow feature finish <your feature>
    --相等于
    git checkout develop
    git merge --no--ff myfeature
    git branch -d myfeature
    git push origin develop

    git flow feature publish <xxx>

    git push origin featureAdd
    git config “branch.featureAdd.remote” “origin”
    git config “branch.featureAdd.merge” “refs/heads/featureAdd”
    git checkout “featureAdd”
    http://yakiloo.com/getting-started-git-flow/

    git flow release start <xxx>
    $ git checkout -b release-1.2 develop
    $ git commit -a -m "Bumped version number to 1.2"

    git flow release finish <xxx>
    $ git checkout master
    $ git merge --no-ff release-1.2
    $ git tag -a 1.2

    $ git checkout develop
    $ git merge --no-ff release-1.2

    $ git branch -d release-1.2

    git flow hotfix start <release>
    git flow hotfix finish <release>
    修补bug

    git flow hotfix start <release>
    $ git checkout -b hotfix-1.2.1 master
    $ git commit -a -m "Bumped version number to 1.2.1"

    $ git commit -m "Fixed severe production problem"

    git flow hotfix finish <release>
    $ git checkout master
    $ git merge --no-ff hotfix-1.2.1
    $ git tag -a 1.2.1

    $ git checkout develop
    $ git merge --no-ff hotfix-1.2.1

    $ git branch -d hotfix-1.2.1

    http://nvie.com/posts/a-successful-git-branching-model/

    start,finish,publish操作

    从git和git flow角度,通过命令尽可能详尽地述一个redmine工单(#12345)从开发到上线到服务器的全过程。

    lite 上线过程

    git flow release start 29339
    git flow release finish 29339

    git push origin master
    git push origin develop
    git push --tags

    git checkout master
    git remote update --prune
    git pull origin master

    上线 过程

    git checkout develop
    git pull origin develop

    git flow feature start <12345>
    git checkout rm12345_wh_20132222_xxxx
    git merge develop
    git flow feature publish 分支

    git flow feature finish rm12345_20131011_wh_xxxx
    git checkout master

    相关文章

      网友评论

        本文标题:linux,git基础命令

        本文链接:https://www.haomeiwen.com/subject/terctttx.html