【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 ,就回到了场景1,第二步按场景1操作。

场景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    

image-20201103185526408

查看git 分支信息

git remote -v

image-20201103185558583

在gitlab上可以查看到tag信息表示推送成功。

image-20201103185639784

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

image-20201103190857199

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的方式指定自定义变量的值

本博客用于技术学习,所有资源都来源于网络,部分是转发,部分是个人总结。欢迎共同学习和转载,转载请在醒目位置标明原文。如有侵权,请留言告知,及时撤除。
posted @ 2020-11-28 09:39  风动静泉  阅读(100)  评论(0编辑  收藏  举报