zoukankan      html  css  js  c++  java
  • 【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的方式指定自定义变量的值

  • 相关阅读:
    智课雅思词汇---十八、前缀peri是什么意思
    新东方雅思词汇---7.1、probation
    智课雅思词汇---十七、前綴il-, in-, ir-, im-有什麼關係
    英语发音规则---U字母-[复习中]
    英语发音规则---O字母
    Android之Http沟通——4.Android HTTP索取信息:HttpClient
    一步一步的理解C++STL迭代器
    Java学习之路:ArrayList用法
    LeetCode:Remove Duplicates from Sorted Array
    【Struts2学习笔记(2)】Action默认值和配置Action于result各种转发类型
  • 原文地址:https://www.cnblogs.com/z00377750/p/14051634.html
Copyright © 2011-2022 走看看