【Git/Linux】常用操作
Git常用操作
IDEA pull报错,You have not concluded your merge (MERGE_HEAD exists)
想要pull的时候报了一个这样的错误
原因是因为之前在从develope分支拉下代码后,有一个文件文件有冲突,我没有merge,当然解决方法就是merge一下这个文件就可以。
在IDEA中Open in Terminal,打开git bash,通过命令行执行如下命令。
法一、保留你本地的修改
git merge --abort
git reset --merge
执行第一条命令时,可能报错,此时,只要将报错的文件revert即可。
合并后提交本地合并,然后再pull线上仓库
git pull
法二、download下线上代码版本,抛弃本地的修改
git fetch --all
git reset --hard origin/master
git fetch
回滚版本
1、回退版本(本地已经commit到仓库,使用此命令回退)
git reset --hard 3ca96644e49555572d7ef37ee033b75ad26239f0
2、强制推送
git push -f
回滚上次提交
git reset --soft HEAD^
--soft 只会撤销commit不会覆盖本地修改的内容,建议使用该参数回滚
查看提交日志
git log --pretty=oneline
显示合并分支图形,使用简要commitid,同时优化显示
git log --graph --pretty=oneline --abbrev-commit
查看某次提交的文件修改内容
git show commit_id
撤销修改
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考“回滚版本”一节,不过前提是没有推送到远程库。如果已经推送到远程,则只能强制推送。推送前确认需要恢复的提交号。
云龙提交
1、注释规范
严格按照下面格式添加注释,才能成功提交
[TicketNo.]UADP214500
[Description]根据人员账号判断当前人员岗位所属组织是否存在相应的规则(包括卷积)接口
[Binary Source]NA
2、代码push操作页面中,Remote处要填写refs/for/master,如果是推送到别的xx分支,则是refs/for/xx。
git 提交记录中文乱码
1、运行Git Bash窗口,在该窗口导航条(即最上面)右键,选择Options−>Text,找到下面两处
Locale:选择 zh_CN
Charector set:选择 UTF-8
2、到Git Bash命令窗口输入如下设置命令语句
git config --global i18n.commitencoding utf-8 --注释:该命令表示提交命令的时候使用utf-8编码集提交
git config --global i18n.logoutputencoding utf-8 --注释:该命令表示日志输出时使用utf-8编码集显示
export LESSCHARSET=utf-8 --注释:设置LESS字符集为utf-8
修改git 注释
在工程根目录下git bash here
git commit –amend
修改最后一次提交记录
git tag操作
可以使用命令行或IDEA插件创建tag,但是注意提交的时候IDEA插件无法直接推送到远端。
使用如下命令提交
//查看tag
git tag
//在某个commit 上打tag
git tag test_tag c809ddbf83939a89659e51dc2a5fe183af384233
//!!!本地tag推送到线上
git push origin test_tag
//本地删除tag
git tag -d test_tag
//本地tag删除了,再执行该句,删除线上tag
git push origin :refs/tags/test_tag
查看git 分支信息
git remote -v
在gitlab上可以查看到tag信息表示推送成功。
tag是基于最后一次commit id的。
根据tag创建分支并推送
切换到tag,git会提示进入到detached HEAD状态,表示处于游离状态。tag是不能修改的。如果想要基于某个tag出补丁,需要先从该tag上新建补丁分支,再在补丁分支上进行修改,最后合入主干,最后merge到公共远程仓库。
在项目中我们需要根据tag创建分支.现将创建步骤总结一下.假设在你的主分支上有一个tag为v1.0,主分支的名字为master.
1.执行:git origin fetch 获得最新.
2.通过:git branch <new-branch-name> <tag-name> 会根据tag创建新的分支.
例如:git branch newbranch v1.0 会以tag v1.0创建新的分支newbranch;
3.可以通过git checkout newbranch 切换到新的分支.
4.通过 git push origin newbranch 把本地创建的分支提交到远程仓库.
(格式git push origin 本地分支:远端分支 建立了关联,如果不写冒号及远端则缺省为 本地分支a[:远端分支a]即,远端会建立一个同样名字的分支)
现在远程仓库也会有新创建的分支啦.
删除git远端分支
推送一个空分支到远端分支即相当于删除远端,也可以直接使用tortoise git的push,推送空的分支到远程要删除的分支
// 格式git push origin 本地分支:远端分支 建立了关联,如果不写冒号及远端则缺省为 本地分支a[:远端分支a]
git push origin :remote_branch_name
删除git本地分支
git branch -d local_branch_name
查看git本地和远程的所有分支
git branch -a
Git设置别名
git config --global alias.co "checkout"
git config --global alias.ci "commit"
git config --global alias.st "status"
然后类似的动作实际上就很简单了,如根据tag或commitId创建新的分支(也可以直接使用tortoise git的switch/checkout创建分支)
git co -b 新分支名 tag/branch/commitid
基于当前修改直接创建新分支并带过去新的修改
git checkout -b newbranch
会直接切换到新的分支,同时带有未commit的修改
新建分支后
通过 git push origin newbranch 把本地创建的分支提交到远程仓库.
(格式git push origin 本地分支:远端分支 建立了关联,如果不写冒号及远端则缺省为 本地分支a[:远端分支a]即,远端会建立一个同样名字的分支)
然后需要执行
$git branch --set-upstream-to=origin_pri/es-jpa es-jpa
才能被建立本地与远程的联系
这样就在本地和远程都建立了新的分支,同时建立了联系
如果在IDEA中需要对新建分支(假设是私有远程仓库)进行编码,则可以在Tortoise git中配置remote的远程和推送地址都为自己的私有仓库
查找windows下的端口
netstat -ano 找到占用的端口对应的pid
netstat -aon|findstr "98284" 找到具体的进程
通过进程管理器结束对应进程
日志查看tailf
查看包含当前关键字的行及下一行
tailf goal.log|grep -r -A 1 "key"
查看包含当前关键字的行及上一行
tailf goal.log|grep -r -B 1 "key"
匹配前后N行
tailf goal.log|grep -r -C 1 "key"
查看日志后几行
cat filename | grep "string"|tail -n 数量
查找字符串出现的次数
grep -c "字符" filename
查看cpu使用
top -bn 1 -i -c
%us:表示用户空间程序的cpu使用率(没有通过nice调度)
%sy:表示系统空间的cpu使用率,主要是内核程序。
%ni:表示用户空间且通过nice调度过的程序的cpu使用率。
%id:空闲cpu
%wa:cpu运行时在等待io的时间
%hi:cpu处理硬中断的数量
%si:cpu处理软中断的数量
%st:被虚拟机偷走的cpu
查看linux进程
ps -ef 找到pid
ps -Lf pid |wc -l 统计当前进程中的线程数
dump包
sudo tcpdump tcp port 80
tcpdump -i any port 33200 -s0 -vv -w test.cap
tcpdump -i any host 10.136.207.201 -s0 -vv -w ./zqq.cap
查看目录下文件数量
ls -l | grep -c '^-'
1、列出当前目录的文件、文件夹完整路径
ls -1 |awk '{print i$0}' i=pwd
'/'
2、列出当前目录及子目录的文件、文件夹完整路径
ls -R |awk '{print i$0}' i=pwd
'/'
3、列出当前目录及子目录下的文件夹完整路径
ls -FR | grep /$ | sed "s:^:pwd
/:"
4、只列出目录
ls -F | grep '/$'
ls -d *
find . -type d -maxdepth 1
ls -l | grep '^d'
查看Linux应用端口
通过ps aux|grep redis 查询应用进程
通过netstat -apn |grep 27988命令查询端口连接情况
查看ftp服务、端口
netstat -auntp | grep ftp
修改vim配色
在当前用户下
vim .bashrc
修改如下配置(xterm为终端配色方案)
export TERM=xterm
保存,退出
source .bashrc
进入vim可以发现已经修改配色
查看 端口连接状态
netstat -atnp | grep port
可以在数据库服务器上监听数据库连接
查看某端口的连接
lsof -i:1521 | uniq -c
查看本地端口连接,可以分析数据库连接池是否分配了新的连接(端口会随机变化,established状态的连接为可用连接)
http://blog.csdn.net/kingson_wu/article/details/51706335
查看系统连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
http://blog.csdn.net/shootyou/article/details/6615051
把所有的.sh文件修改到三个月前(2013年10月13)的时间。
操作命令:
touch -d "10/13/2013" *.sh
sed替换
替换操作:s命令
直接编辑文件项-i,会匹配file文件中每一行的第一个book替换为books
sed -i 's/book/books/g' filename
使用后缀 /g 标记会替换每一行中的所有匹配
查看内存
ps -ef| +关键字
查看进程号pid
jmap -heap+pid
查看内存情况
修改用户密码
passwd mgmt
修改文件或目录所属的用户
命令:chown 用户 目录或文件名
chown -R + 用户+文件夹
修改文件或目录所属的组
命令:chgrp 组 目录或文件名
chgrp -R + 分组+文件夹
linux下中文ASCII码转换命令
native2ascii 中文.properties Unicode编码.properties
native2ascii -reverse Unicode编码.properties 中文.properties
解压war包
unzip project.war -d project
这样就在当前目录下解压project.war到project目录里面,参数-d的意思是创建project目录
附:unzip其它参数说明
-x "文件列表" 解压文件,但不包含文件列表中指定的文件
-t 测试压缩文件无损坏,并不解压
-v 查看压缩文件的详细信息,具体包括压缩文件中包含的文件大小、文件名和压缩比等,并不解压
-n 解压时不覆盖已经存在的文件
-o 解压时覆盖已经存在的文件,并且不要求用户确认
-d 目录名 把压缩文件解压到指定目录下
解压和压缩
tar zxvf dir.tar.gz
tar zxvf /bbs.tar.zip -C /zzz/bbs
解压 tar zxvf 文件名.tar.gz
压缩 tar zcvf 文件名.tar.gz 目标名
查看linux中所有用户的三种方式
删除用户
userdel -r 用户名
linux下通过 su 命令进行用户切换
su -: 会切换root用户,也会把用户变量也切换到root的环境变量
su : 只是会切换root用户,但是当前的环境变量还是以前用户的环境变量
普通用户切到root用户时权限不够 需要加sudo
sudo su
输入密码
root切换到其他用户时不用输入密码
su -test
maven常用命令
打包
mvn package -DJAMES_PARTIAL_BUILD_BASE_BRANCH=refs/heads/master -Dmaven.test.skip=true -pl server/container/cli -am -e -X
在项目路径下通过-pl指定需要打包的module路径,通过-D的方式指定自定义变量的值