在开发项目的时候，会因为经常操作不断的提交，产生很多的分支，后期不利于回滚数据，下面的方式就可以将分支多个合并：1、查看提交历史，–oneline -20最近20次提交，每次提交显示一行摘要git log --oneline -20 该命令可以展示出最近20条的分支历史，具体根据实际情况修改。2、合并提交历史#合并前5个提交 git rebase -i HEAD~5 #合并到某个提交 git rebase -i 0b26a0f775 上面的命令可以2选1，根据实际情况选择3、编辑合并规则pick 0b064204 最终修改 s c1ad1218 修改文件2 s e4e4034f 创建文件1 s 6e492400 删除文件3 # Rebase be4a2d33..6e492400 onto 6e492400 (4 commands) 【将be4a2d33..6e492400重新设定为6e492400（4个命令）】 # Commands: # p, pick <commit> = use commit【使用commit】 # r, reword <commit> = use commit, but edit the commit message【使用commit，但编辑commit消息】 # e, edit <commit> = use commit, but stop for amending【使用commit，但停止修改】 # s, squash <commit> = use commit, but meld into previous commit【使用commit，但合并到上一个commit中】 # f, fixup <commit> = like "squash", but discard this commit's log message【和squash一样，只是丢弃commit的日志消息】 # x, exec <command> = run command (the rest of the line) using shell【run command（行的其余部分）using shell】 # b, break = stop here (continue rebase later with 'git rebase —continue')【在此处停止（稍后使用“git rebase --continue”继续重新base）】 # d, drop <commit> = remove commit【删除commit】 # l, label = label current HEAD with a name【用名称标记当前头部】 # t, reset = reset HEAD to a label【将头部重置为标签】 # m, merge [-C <commit> | -c <commit>] [# <oneline>] create a merge commit using the original merge commit's message (or the oneline, if no original merge commit was ). Use -c <commit> to reword the commit message.【使用原始合并提交的消息创建合并提交（如果没有原始合并提交，则为oneline）。使用-c<commit>重新编写commit消息。】 # These lines can be re-ordered; they are executed from top to bottom. # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted. # Note that empty commits are commented out #这些行可以重新排序；它们从上到下执行。如果在此处删除一行，则提交操作将丢失。但是，如果删除所有内容，则将中止重新平衡。注意，空提交被注释掉了 编辑合约规则，主要看最上面的分支，编辑前你会看到很多的pick xxx这样的数据，第一个就是最后合并的分支，不动，后面的分支都改成s（即表示需要合并的分支）。TIPS：编辑时先按c进入编辑模式，编辑完成之后，按ESC退出，输入:wq 保存并退出，保存并退出之后会进入下一个编辑界面，一样保存并退出即可4、强制提交git push -f 强制提交至远程即可5、可能遇到的问题如果意外退出这个合并，可以使用下面的命令清除合并，重新开始合并操作git rebase --abort
linux系统信息命令arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpuinfo 显示CPU info的信息 cat /proc/interrupts 显示中断 cat /proc/meminfo 校验内存使用 cat /proc/swaps 显示哪些swap被使用 cat /proc/version 显示内核的版本 cat /proc/net/dev 显示网络适配器及统计 cat /proc/mounts 显示已加载的文件系统 lspci -tv 罗列 PCI 设备 lsusb -tv 显示 USB 设备 date 显示系统日期cal 2007 显示2007年的日历表 date 041217002007.00 设置日期和时间 - 月日时分年.秒 clock -w 将时间修改保存到 BIOS linux关机 重启命令 (系统的关机、重启以及登出 )shutdown -h now 关闭系统 init 0 关闭系统 telinit 0 关闭系统 shutdown -h hours:minutes & 按预定时间关闭系统 shutdown -c 取消按预定时间关闭系统 shutdown -r now 重启 reboot 重启 logout 注销 linux文件和目录命令cd /home 进入 '/ home' 目录' cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 cd - 返回上次所在的目录 pwd 显示工作路径ls 查看目录中的文件 ls -F 查看目录中的文件 ls -l 显示文件和目录的详细资料 ls -a 显示隐藏文件 ls *[0-9]* 显示包含数字的文件名和目录名 tree 显示文件和目录由根目录开始的树形结构(1) lstree 显示文件和目录由根目录开始的树形结构(2) mkdir dir1 创建一个叫做 'dir1' 的目录' mkdir dir1 dir2 同时创建两个目录 mkdir -p /tmp/dir1/dir2 创建一个目录树 rm -f file1 删除一个叫做 'file1' 的文件' rmdir dir1 删除一个叫做 'dir1' 的目录' rm -rf dir1 删除一个叫做 'dir1' 的目录并同时删除其内容 rm -rf dir1 dir2 同时删除两个目录及它们的内容 mv dir1 new_dir 重命名/移动 一个目录 cp file1 file2 复制一个文件 cp dir/* . 复制一个目录下的所有文件到当前工作目录 cp -a /tmp/dir1 . 复制一个目录到当前工作目录 cp -a dir1 dir2 复制一个目录 ln -s file1 lnk1 创建一个指向文件或目录的软链接 ln file1 lnk1 创建一个指向文件或目录的物理链接 touch -t 0712250000 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm) file file1 outputs the mime type of the file as text iconv -l 列出已知的编码 linux文件搜索命令find / -name file1 从 '/' 开始进入根文件系统搜索文件和目录 find / -user user1 搜索属于用户 'user1' 的文件和目录 find /home/user1 -name \*.bin 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件 find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件 find / -name \*.rpm -exec chmod 755 '{}' \; 搜索以 '.rpm' 结尾的文件并定义其权限 find / -xdev -name \*.rpm 搜索以 '.rpm' 结尾的文件，忽略光驱、捷盘等可移动设备 locate \*.ps 寻找以 '.ps' 结尾的文件 - 先运行 'updatedb' 命令 whereis halt 显示一个二进制文件、源码或man的位置 which halt 显示一个二进制文件或可执行文件的完整路径 linux网络命令 - （以太网和WIFI无线）ifconfig eth0 显示一个以太网卡的配置 ifup eth0 启用一个 'eth0' 网络设备 ifdown eth0 禁用一个 'eth0' 网络设备 ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址 ifconfig eth0 promisc 设置 'eth0' 成混杂模式以嗅探数据包 (sniffing) dhclient eth0 以dhcp模式启用 'eth0' route -n show routing table route add -net 0/0 gw IP_Gateway configura default gateway route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network '192.168.0.0/16
1.rz命令rz命令（Receive ZMODEM），使用ZMODEM协议，将本地文件批量上传到远程Linux/Unix服务器，注意不能上传文件夹。当我们使用虚拟终端软件，如Xshell、SecureCRT或PuTTY来连接远程服务器后，使用rz命令可以上传本地文件到远程服务器。输入rz回车后，会出现文件选择对话框，选择需要上传文件，一次可以指定多个文件，上传到服务器的路径为当前执行rz命令的目录。此外，可以在虚拟终端软件设置上传时默认加载的本地路径和下载的路径。如SecureCRT软件 -> Options -> session options -> X/Y/Zmodem 下可以设置上传和下载的目录。命令格式：rz [选项]选项说明：-+, --append:将文件内容追加到已存在的同名文件-a,--ascii:以文本方式传输-b, --binary:以二进制方式传输，推荐使用--delay-startup N:等待N秒-e, --escape:对所有控制字符转义，建议使用-E, --rename:已存在同名文件则重命名新上传的文件，以点和数字作为后缀-p, --protect:对ZMODEM协议有效，如果目标文件已存在则跳过 -q, --quiet:安静执行，不输出提示信息-v, --verbose:输出传输过程中的提示信息-y, --overwrite:存在同名文件则替换-X, --xmodem:使用XMODEM协议--ymodem:使用YMODEM协议-Z, --zmodem:使用ZMODEM协议--version：显示版本信息--h, --help：显示帮助信息2.sz命令2.1sz命令（Send ZMODEM）通过ZMODEM协议，可将多个文件从远程服务器下载到本地。注意不能下载文件夹，如果下载文件夹，请先打包再下载2.2格式：rz [选项] [filelist]命令选项基本与rz相同，请参考上文rz的命令选项或者sz的manual，或者运行命令sz -h查看。2.3常用示例2.3.1 下载多个文件sz file1 file2 file3sz和rz命令在实际应用开发中非常实用，有时候我们会经常跑脚本统计数据，需要上传和下载一些大数据量的数据，这时候这两个命令就非常有用了如未需要安装此命令，可通过下面的命令进行安装yum install lrzsz -y