linux,git基础命令

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容