ps -ef | grep 'main' | awk '{print $2}'
显示文件内容
cat /etc/issue cat /proc/meminfo
修改文件或目录的所属组
chgrp admin file1 # 改变文件file1的所属组为adm
修改权限
chmod 764 /etc/services chmod g+w file1 # 赋予文件file1所属组写权限 <ugo+rwx>
path=/opt/package/orochiplus-upgrade/buffalo/dt-buffalo-serv-server/target/logs/app for line in `ls /opt/package/orochiplus-upgrade/buffalo/dt-buffalo-serv-server/target/logs/app` do chmod -R +x $path/$line echo $path/$line find $path/$line/ -mtime +30 | xargs rm -rf done
修改文件或目录的所有者
chown liuhh /etc/services
复制文件或目录
cp file1 file2 dir1 # 将文件file1、file2复制到目录dir1 cp -R dir1 dir2 # 将dir1下的所有文件及子目录复制到dir2 cp -rf Label_lvshou_fill_vertify /home/liuhuihe/workspace/code_run/ # 将一个文件夹复制到另一个文件夹下 cp -rf /home/lhh/workspace/customer_risk_pro/* /home/lhh/workspace/code_run/customer_risk_pro/ cp -rf /usr/local/KingSTD_1/* /usr/local/webapps/KingSTD_2/ #将dir1下的所有文件及子目录复制到dir2,覆盖
diff 命令用于比较文件的差异。
diff 以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则 diff 会比较目录中相同文件名的文件,但不会比较其中子目录。
diff log2014.log log2013.log
查找文件或目录
find /etc -name init #在目录/etc中查找文件init find / -size +204800 # 在根目录下查找大于200MB的文件 find / -user sam # 在根目录下查找所有者为sam的文件 find /etc -ctime -1 # 在/etc下查找24小时内被修改过属性的文件和目录
#!/bin/bash log_path=(/home/dmp/logs /opt/package/orochiplus/web/logs /var/log/ambari-agent /var/log/hadoop/hdfs /var/log/hadoop-yarn/yarn /var/log/ambari-server /var/log/hive /var/log/ambari-metrics-collector) for path in ${log_path[@]} do chmod -R +x $path/ find $path -mtime +30 -regextype posix-extended -regex ".*\.(log|out|err)" | xargs rm done echo "clean ok..."
查看文件的前N行
head -100 /etc/services
创建链接文件,目录只能创建软链接
ln -s /etc/issue /issue.soft # 创建文件/etc/issue的软链接/issue.soft ln /etc/issue /issue.hard # 创建文件/etc/issue的硬链接/issue.hard
查找文件或目录
locate ls # 列出所有跟file相关的文件
分页显示文件内容
more /etc/services
移动文件、更名
mv file1 file3 # 将当前目录下文件file1更名为file3 mv file1 file2 file3 dir2 # 将文件file1、 file2 file3移动到目录dir2下
删除文件或目录
rm he # 删除文件he rm -r river # 删除目录river
# 从106复制文件到92.8 # 92.8上面 scp root@172.16.92.106:/home/Anaconda3-5.0.1-Linux-x86_64.sh /home # 106上面 scp /home/Anaconda3-5.0.1-Linux-x86_64.sh root@172.16.92.8:/home
查看文件的后N行
tail -100 /etc/services tail -f ./logs/catalina.out
创建空文件
touch student # 创建空文件student touch /river/student # 创建空文件student
显示系统命令所在目录
which hive
在文件中搜寻字串匹配的行并输出
grep ftp /etc/services
ls | grep staff ps -ef | grep brm_distribution_function
#!/bin/sh task=$1 source /home/digger/.bashrc set -ex dt=`date +%Y-%m-%d_%H-%M-%S` echo "kill zombie task" ps avx | grep $task | grep -v grep | awk '{print $1}' | xargs -I {} kill {} echo "run today task" python main.py $task > logs/$task.$dt.log
命令用于计算字数
wc testfile # testfile文件的统计信息 3 92 598 testfile # testfile文件的行数为3、单词数92、字节数598
其中,3 个数字分别表示testfile文件的行数、单词数,以及该文件的字节数。
如果想同时统计多个文件的信息,例如同时统计testfile、testfile_1、testfile_2,可使用如下命令:
wc testfile testfile_1 testfile_2 #统计三个文件的信息
输出结果如下:
3 92 598 testfile # 第一个文件行数为3、单词数92、字节数598 9 18 78 testfile_1 # 第二个文件的行数为9、单词数18、字节数78 3 6 32 testfile_2 # 第三个文件的行数为3、单词数6、字节数32 15 116 708 总用量 # 三个文件总共的行数为15、单词数116、字节数708
切换目录
cd / # 切换到根目录 cd .. # 回到上一级目录 cd ./home # 当前目录下的home目录 cd ~ # 切换到HOME目录 cd - # 切换到前一目录
#!/bin/bash source /etc/profile cd /home/dmp/script/py/AddressTranform /usr/bin/python3 main.py
显示文件系统的磁盘使用情况,默认情况下df -k 将以字节为单位输出磁盘的使用量
df -k df -h #使用-h选项可以以更符合阅读习惯的方式显示磁盘使用量
du命令用于显示目录或文件的大小。du会显示指定的目录或文件所占用的磁盘空间。
du -h --max-depth=1 /home
显示目录文件
ls -a # 显示所有文件,包括隐藏文件 ls -l # 详细信息显示 ls -al # 所有文件详细信息
JAR_NAME=`ls | grep jar-with-dependencies`
创建新目录
参数:-p 确保目录名称存在,如果目录不存在的就新创建一个。
mkdir river 创建目录river
directory=/home/dmp/lixiaoli/yjk_dm loaddate=`date -d "-1 day" "+%Y-%m-%d"` mkdir -p ${directory}/log/${loaddate}/
当前工作目录
查看网络设置信息
ifconfig -a # 查看网络设置信息
lsof(list open files)是一个列出当前系统打开文件的工具。
lsof 查看端口占用语法格式:
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程 lsof -c abc:显示abc进程现在打开的文件 lsof -c -p 1234:列出进程号为1234的进程所打开的文件 lsof -g gid:显示归属gid的进程情况 lsof +d /usr/local/:显示目录下被进程开启的文件 lsof +D /usr/local/:同上,但是会搜索目录下的目录,时间较长 lsof -d 4:显示使用fd为4的进程 lsof -i -U:显示所有打开的端口和UNIX domain文件
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
例如查看 8000 端口的情况,使用以下命令:
netstat -tunlp | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 26993/nodejs
更多命令:
netstat -ntlp //查看当前所有tcp端口 netstat -ntulp | grep 80 //查看所有80端口使用情况 netstat -ntulp | grep 3306 //查看所有3306端口使用情况
测试网络连通性
ping 192.168.1.1
向所有用户广播信息
向一个用户发信息
设置系统日期
date date -d "-1 day" "+%Y-%m-%d" # 昨天 2019-12-21
显示系统当前内存的使用情况,包括已用内存、可用内存和交换内存的情况,默认情况下free会以字节为单位输出内存的使用量
查看所有内存的汇总,请使用-t选项,-g为GB,-m为MB,-k为KB,-b为字节
free -m free -t -g free -g
在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令:kill -9 PID
如上实例,我们看到 8000 端口对应的 PID 为 26993,使用以下命令杀死进程:
kill -9 26993
# 根据名字包含来kill ps x | grep main_LabelCustomer | grep -v grep |awk '{print $1}'|xargs kill -9
用法:ps aux 显示所有包含其他使用者的行程
用法:ps -ef 是用标准的格式显示进程的
ps -ef ps -ef | grep river # 在进程显示结果中匹配与river相关的内容并输出 ps -ef | more ps auxw|head -1;ps auxw|sort -rn -k4|head -10 # 查看内存占用前十的进程 #linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合: ps aux|head -1; ps aux|grep -v PID|sort -rn -k +3|head #linux下获取占用内存资源最多的10个进程,可以使用如下命令组合: ps aux|head -1; ps aux|grep -v PID|sort -rn -k +4|head
重启系统
reboot
关机
shutdown -h now
top命令会显示当前系统中占用资源最多的一些进程
# 显示指定的进程信息,显示进程号为139的进程信息,CPU、内存占用率等 top -p 139
uname可以显示一些重要的系统信息,例如内核名称、主机名、内核版本号、处理器类型之类的信息
uname -a
export PATH=/root/anaconda3/bin:$PATH
passwd用于在命令行修改密码
解压缩
bunzip2 -k file1.bz2
压缩文件
bzip2 -k file1 # -k 产生压缩文件后保留原文件,压缩后文件格式:.bz2
解压缩.gz的压缩文件
gunzip file1.gz
压缩文件(不能压缩目录)
打包目录
tar -zcvf dir1.tar.gz dir1 将目录dir1压缩成一个打包并压缩的文件 tar -zxvf dir1.tar.gz 解压 -c 产生.tar打包文件 -v 显示详细信息 -f 指定压缩后的文件名指定压缩后的文件名 -z 打包同时压缩
解压.zip的压缩文件
unzip test.zip
压缩文件或目录
zip services.zip /etc/services # 压缩文件 zip -r test.zip /test # 压缩目录
# 压缩文件104 cd /home/liuhuihe zip -r workspace.zip workspace # 92.8 scp root@172.16.92.104:/home/liuhuihe/workspace.zip /home/liuhuihe unzip workspace.zip
获取帮助信息
man ls
获取帮助信息
info ls
获得索引的简短说明信息
whatis ls
使用wget从网上下载软件、音乐、视频
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.1.tar.gz
ls -l /tmp > /river/he
wall < /etc/motd
cp -R /usr /backup/usr.bak 2> /bak.error
将一个命令的输出传送给另一个命令,作为另一个命令的输入。
ls -l / | grep river | wc -l
; # 用;间隔的各命令按顺序依次执行。
&& # 前后命令的执行存在逻辑与关系,只有&&前面的命令执行成功后,它后面的命令才被执行。
|| # 前后命令的执行存在逻辑或关系,只有||前面的命令执行失败后,它后面的命令才被执行。
将一个命令的输出作为另一个命令的参数。
ls -l `which touch`
# 查询镜像 docker search centos # 拉取指定版本的镜像 docker pull centos:6.9 # 拉取最新的镜像版本:latest docker pull centos
# 查询本机的所有镜像,并显示详细信息 docker images # 查询本机的所有镜像,只显示镜像ID docker images -q # 查看镜像的详细信息(对外端口、容器启动时执行的命令、环境变量、工作目录等等) docker inspect ID/name:tag
# 删除指定镜像 docker rmi IID # 删除所有镜像 docker rmi `docker images -q` # 同上 docker rmi $(docker images -q) # 强制删除镜像(一些相互依赖的镜像通过上面的命令无法删除) docker rmi -f IID
# 导出本地镜像为tar文件 docker image save nginx >/opt/nginx.tar.gz # 从tar文件加载镜像 docker image load -i /opt/nginx.tar.gz
# 启动交互式容器(/bin/sh、/bin/bash、bash),执行exit后容器就退出了,可以使用ctrl+p+q docker run -it --name="n1" 3fe2fe0dab2e /bin/bash # 启动守护式容器 docker run -d -p 8080:80 --name="n1" nginx # 启动容器,并执行一个命令(执行的命令必须是前台持续性的,不能是执行完就结束的命令,否则容器就会推出) docker run -d -p 8080:80 --name="n1" nginx cd /usr1;python manager.py runserver 0.0.0.0:8080 # 停止正在运行容器 docker stop 容器ID/名称 # 启动已经停止的容器 docker start 容器ID/名称 # 重启容器,不会使容器中已有的修改失效 docker restart 容器ID/名称
# 进入容器的已有交互界面,退出时应该使用ctrl+p+q,否则容器会关闭 docker attach 容器ID # 进入当前运行容器,并创建一个新的交互式界面,退出时不会关闭容器(推荐做法) docker exec -it 容器ID|容器名称 /bin/bash # 不进入容器执行命令(查看根目录列表,并显示在控制台) docker exec 容器ID ls / # 不进入容器,向容器中安装vim,并后台安装,不在前台展示 docker exec -d 容器ID apt-get install vim
# 查询当前正在运行的容器 docker ps # 查询所有存在的容器,包括已退出的 docker ps -a # 查询容器ID docker ps -q # 查询容器详细信息(端口映射、IP地址、磁盘绑定等信息) docker inspect 容器ID/名称
# 删除已退出的容器 docker rm 容器ID/名称 # 强制删除容器,包括正在运行的 docker rm -f 容器ID/名称
指定映射(docker 会自动添加一条iptables规则来实现端口映射) -p hostPort:containerPort -p ip:hostPort:containerPort -p ip::containerPort(随机端口) -p hostPort:containerPort/udp -p 81:80 –p 443:443 随机映射 docker run -p 80(随机端口)
# 查看容器中正在运行的进程 docker top 容器ID/名称 # 拷贝文件或目录 docker cp 宿主机目录/文件 容器ID:/usr1/test docker cp 容器ID:/usr1/test 宿主机目录/文件 # 查询容器正在运行的日志 docker logs 容器ID/名称 # 实时显示容器中运行日志 docker logs -f 容器ID/名称 # 将容器实时日志输出到文件,可以配合ELK进行日志收集 docker logs -f testxx > /var/log/xxx.log 2>1&
# 挂载数据卷 -v 宿主机目录或文件:容器中目录或文件 docker run -d -v ./test:/test --name='n1' nginx
# 启动一个容器作为数据卷 docker run -it --name "my_volumes" -v /opt/Volume/conf:/usr/local/nginx/conf nginx /bin/bash # 跳出容器 ctrl p q # 使用上面的数据卷容器作为新容器的数据卷,相当于新容器挂载了/opt/Volume/conf目录 docker run -d -p 8085:80 --volumes-from my_volumes --name "n85" nginx docker run -d -p 8086:80 --volumes-from my_volumes --name "n86" nginx
# 查询正在运行的容器 docker ps # 将容器制作为镜像(如果要提交到私有镜像库,新镜像名称必须携带私有库的域名,例如:xxx.com docker commit 容器ID xxx.com/my_container:v1 # 将容器提交到私有镜像库 docker push xxx.com/my_container:v1 # 修改镜像名称(想要将公共镜像推送到私有镜像库,必须修改其名称,前面加上私有库的域名) docker tag old_container_name xxx.com/new_container_name:latest
优点:制作方便,只要进入容器,安装好环境,就可以制作一个新的镜像,并部署到其他环境。
缺点:容器内新增的服务必须在启动后,再进入容器启动一次服务,但是可以通过启动时执行指定命令来解决这个问题
FROM 镜像ID:标签 # 必须指定镜像和标签,作为基础镜像,此命令是必须的 FROM centos:latest
# RUN 执行shell命令,多条命令使用&&连接,也可以使用多行RUN,但是docker镜像是分层制作的 # 在dockerfile中每一条执行命令都创建一层,所以我们尽量创建少的层,把能够合并的命令放在一 # 层中 RUN cd /opt && mkdir code && yum install -y vim && yum install -y wget
以上命令就是切换到/opt目录,创建一个code子目录,安装vim和wget
使用镜像启动容器时默认的运行命令,如果在docker run的时候,在后面带上自定义命令,那么这个命令就会被替换掉,导致容器启动的时候不会执行,所以一般我们不用这个
CMD ["/usr/sbin/sshd", "-D"]
和上面的CMD命令相似,但是不会被启动容器时的自定义命令替换掉,一定会执行;还有一个用法是在docker run后面的自定义命令可以作为ENTRYPOINT的命令参数传入
ENTRYPOINT ["/usr/sbin/sshd", "-D"]
从主机拷贝文件到容器中
COPY init.sh /opt/
和copy命令类似,拷贝文件到镜像中,但是对于压缩文件(含有tar的)拷贝过去会直接解压
ADD xxx.tar.gz /var/www/html
指定容器要对外暴露的端口
EXPOSE 80 EXPOSE 3306
在dockerfile中声明了VOLUME绑定目录并不会在容器启动的时候帮我们自动绑定目录,那么VOLUME和-v有什么区别呢?假设我们在dockerfile中声明了
VOLUME ['/data', '/etc/proc']
那么我们使用不同的命令启动时
# 如果在run容器的时候,没有指定-v,那么此时会创建一个匿名卷,并且绑定到/var/lib/docker/volumes(docker安装目录下的volumes中) docker run -d --name='cent1' my_centos # 如果在run的时候,指定了-v,那么就会覆盖匿名卷 docker run -d -v ./data:/data -v ./proc:/etc/proc --name='cent1' my_centos
所以如果一个镜像制作的时候使用了VOLUME,那么每次启动都会在宿主机上创建一个数据目录,如果这个目录里存在的东西很多,那么时间长了,我们就会发现宿主机上空间越来越小,即使你重启容器也不行。所以要了解这个性质,针对性的清理docker目录。
相当于cd命令,区别是在dockerfile中使用了WORKDIR后,在它下面的语句,工作目录都变成了WORKDIR指定的目录
WORKDIR /code
在dockerfile中设置环境变量,主要为了在执行docker run的时候可以通过-e参数修改环境变量,这样也可以使镜像更加通用。例如MySQL安装时要指定用户名、密码、绑定IP,如果直接在容器里面安装,那么我们如果要修改的话,必须登录到容器中,进行修改重启。但是在dockerfile中指定了ENV变量,那么在docker run的时候就可以修改这些设置。
ENV MYSQL_USERNAME = 'root' # 使用时用以下方式获取 ${MYSQL_USERNAME}
下面给一个简单的dockerfile例子
FROM centos:latest # 替换yum源 COPY CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo # 配置pip文件 COPY pip.conf ~/.pip/ RUN yum clean all && yum makecache && yum update -y && yum install -y vim && yum install -y wget RUN yum install -y python38 && yum install -y python38-setuptools && yum install -y python38-pip && # 配置pip文件 # 切换到目录/ftp WORKDIR /ftp # 将init.sh文件拷贝到镜像的/ftp目录下 COPY init.sh . # 执行启动命令 ENTRYPOINT ["/bin/bash", "init.sh"]
在当前目录下创建dockerfile文件,并使用docker build命令制作镜像
# -t 后面是新的镜像标签, .表示使用当前目录下的dockerfile文件 docker build -t my_https://gitee.com/liuhuihe/Ehe/raw/master/images/centos:latest .
在很多企业中,都不能肆意的访问外网,那这样是不是docker就没法愉快的使用了呢?我们通常下载镜像都是从docker hub官方仓库下载的,如果在企业内部搭建一个私有镜像库,那是不是就能像外网一样使用docker了呢,docker官方为我们提供了非常简单的搭建私有库的方式:
docker run -d -p 5000:5000 --restart=always --name docker_registry -v /opt/registry:/var/lib/registry registry # --restart=always docker服务启动时,容器就启动 # -v 将镜像存储地址映射到宿主机,防止丢失
好了,通过以上命令我们的私有镜像库就搭建好了,是不是很简单呢?那么怎么使用呢?
vim /etc/docker/daemon.json { "insecure-registries": ["xx.xx.xx.xx:5000"] }
systemctl restart docker
修改镜像名称,添加私有镜像库地址为前缀,然后push到镜像库
docker tag nginx:latest xx.xx.xx.xx:5000/nginx:latest docker push xx.xx.xx.xx:5000/nginx:latest
docker pull xx.xx.xx.xx:5000/nginx:latest
docker pull continuumio/anaconda3
docker run -d -p 8888:8888 -v /home/notebooks/:/opt/notebooks --restart=always continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser --allow-root --NotebookApp.token='123456789'"
-v /home/notebooks:本地目录,jupyter创建的所有文件都会在此目录下
http://127.0.0.1:8888/lab
Token:123456789
conda install packagename
# 下拉代码 cd Code/ git clone git@172:/home/git/src/nlp/diaodu/KnowledgeDemo # 使用已有镜像生成新的容器:KnowledgeDemo docker images docker run -p 2530:9001 --name KnowledgeDemo -dt f255141a932f bash # 进入开启容器,复制代码到容器里面 docker exec -ti KnowledgeDemo bash docker cp KnowledgeDemo KnowledgeDemo:/home/nlp # 进去容器,运行脚本 docker exec -ti KnowledgeDemo bash cd /home/nlp sh reload.sh # 查看进程 docker images docker ps | grep KnowledgeDemo # 提交代码,指定版本 docker commit -a "leslie" -m "KnowledgeDemo" KnowledgeDemo knowledgedemo:v1 # 保存为.tar文件 cd /home/dockersave/ mkdir KnowledgeDemo cd KnowledgeDemo/ docker save -o KnowledgeDemo.tar knowledgedemo:v1
用法: git config –global user.name “[name]”
用法: git config –global user.email “[email address]”
此命令分别设置要与提交一起使用的作者姓名和电子邮件地址。
git config --global user.name "liuhuihe" git config --global user.email "lhhriver@163.com"
用法: git init [repository name]
此命令用于启动新的存储库。
git init /home/liuhuihe/DEMO
用法: git clone [url]
此命令用于从现有URL获取存储库。
git clone https://github.com/jalammar/jalammar.github.io.git git clone git@17.163.18.443:/home//src/nlp.git
用法: git add [file]
此命令将文件添加到暂存区域。
git add test.py
用法: git add *
此命令将一个或多个添加到暂存区域。
git add *
用法: git commit -m “[ Type in the commit message]”
此命令在版本历史记录中永久记录或快照文件。
git commit -m "First Commit"
用法: git commit -a
此命令将提交你使用git add命令添加的所有文件,并且还将提交自此以来已更改的所有文件。
git commit -a
用法: git diff
此命令显示尚未暂存的文件差异。
git diff
用法:git diff –staged
此命令显示暂存区域中的文件与当前最新版本之间的差异。
git diff -staged
用法: git diff [first branch] [second branch]
该命令显示了上述两个分支之间的差异。
git diff branch_2 branch_3
用法: git reset [file]
此命令取消暂存文件,但保留文件内容。
git reset site.css
用法: git reset [commit]
此命令在指定的提交后撤消所有提交,并在本地保留更改。
git reset heliluya
用法: git reset –hard [commit]
此命令将丢弃所有历史记录,并返回到指定的提交。
git reset -hard haliluya
用法: git status
该命令列出了所有必须提交的文件。
git status
用法: git rm [file]
此命令从你的工作目录中删除文件,然后进行删除。
git rm test.py
# 删除缓存区文件,再提交可以删除远程文件,本地不受影响 git rm -r --cached .idea
用法: git log
此命令用于列出当前分支的版本历史记录。
git log
用法: git log –follow[file]
此命令列出了文件的版本历史记录,包括文件的重命名。
git log -follow project_1
用法: git show [commit]
此命令显示指定提交的元数据和内容更改。
git show dfgdfgs
用法: git tag [commitID]
该命令用于将标签赋予指定的提交。
git tag dfgsdfgsdfgsdf
用法: git branch
此命令列出当前存储库中的所有本地分支。
git branch
列出本地及远程分支
git branch -a
用法: git branch [branch name]
此命令创建一个新分支。
git branch branch_1
新建并跳转到分支
git checkout -b dbg_lichen_star
用法: git branch -d [branch name]
此命令删除功能分支。
git branch -d branch_1
用法: git checkout [branch name]
此命令用于从一个分支切换到另一个分支。
git checkout branch_2
用法: git checkout -b [branch name]
该命令将创建一个新分支,并切换到该分支。
git checkout -b branch_4
用法: git merge [branch name]
此命令将指定分支的历史记录合并到当前分支中。
git merge branch_2
用法: git remote add [variable name] [Remote Server Link]
此命令用于将本地存储库连接到远程服务器。
git remote add origin http://github.com/river
用法: git push [variable name] master
此命令将提交的master分支更改提交到远程存储库。
git push origin master
用法: git push [variable name] [branch]
此命令将分支提交发送到你的远程存储库。
git push origin master
用法: git push –all [variable name]
此命令将所有分支推送到你的远程存储库。
git push --all origin
用法: git push [variable name] :[branch name]
推送分支到远程
git push origin develop:develop
此命令删除远程存储库上的分支, 推送空到远程分支。
git push origin :branch_2
或者
git push origin --delete branch_2
用法: git pull [Repository Link]
该命令获取远程服务器上的更改并将其合并到你的工作目录中。
git pull https://github.com/river.git
git pull origin master
用法: git stash save
此命令临时存储所有已修改的跟踪文件。
git stash save
用法: git stash pop
此命令恢复最近存放的文件。
git stash pop
用法: git stash list
此命令列出所有隐藏的变更集。
git stash list
用法: git stash drop
此命令将丢弃最近存放的变更集。
git stash drop stash@{0}
提交暂存区到仓库区
git commit -m "update"
提交暂存区的指定文件到仓库区
git commit [file1] [file2] ... -m [message]
提交工作区自上次commit之后的变化,直接到仓库区
git commit -a
提交时显示所有diff信息
git commit -v
使用一次新的commit,替代上一次提交
如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m [message]
重做上一次commit,并包括指定文件的新变化
git commit --amend [file1] [file2] ...
列出所有本地分支
git branch
列出所有远程分支
git branch -r
列出所有本地分支和远程分支
git branch -a
新建一个分支,但依然停留在当前分支
git branch dev
新建一个分支,并切换到该分支
git checkout -b dev git switch -c dev
切换到指定分支,并更新工作区
git checkout dev git switch master
合并指定分支到当前分支
git checkout master git merge dev
删除分支
git branch -d dev
删除远程分支
git push origin --delete dev
显示有变更的文件
git status
显示当前分支的版本历史, 命令显示从最近到最远的提交日志
git log git log --pretty=oneline
用来记录你的每一次命令
git reflog
显示暂存区和工作区的差异
git diff
下载远程仓库的所有变动
git fetch [remote]
显示所有远程仓库
git remote -v
显示某个远程仓库的信息
git remote show https://gitee.com/liuhuihe/AC_Project.git
增加一个新的远程仓库,并命名
git remote add dev https://gitee.com/neimenggudaxue/dev.git
本地电脑连接码云项目
git remote add origin https://gitee.com/liuhuihe/AC_Notebook.git
取回远程仓库的变化,并与本地分支合并
git pull origin master
上传本地指定分支到远程仓库
git push origin dev # 强制推送 git push origin dev -f
强行推送当前分支到远程仓库,即使有冲突
git push [remote] --force
推送所有分支到远程仓库
git push [remote] --all
恢复暂存区的指定文件到工作区
git checkout [file]
恢复某个commit的指定文件到暂存区和工作区
git checkout [commit] [file]
恢复暂存区的所有文件到工作区
git checkout .
把readme.txt文件在工作区的修改全部撤销, 回到最近一次git commit或git add时的状态
git checkout -- readme.txt
重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
git reset [file]
重置暂存区与工作区,与上一次commit保持一致
git reset --hard git reset --hard HEAD^ # 上一个版本 git reset --hard HEAD^^ # 上上一个版本 git reset --hard HEAD~100 # 上100个版本 git reset --hard 1094a # 返回撤销的版本1094a...
把暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD readme.txt
列出所有tag
git tag
新建一个tag在当前commit
git tag [tag]
新建一个tag在指定commit
git tag [tag] [commit]
删除本地tag
git tag -d [tag]
删除远程tag
git push origin :refs/tags/[tagName]
查看tag信息
git show [tag]
提交指定tag
git push [remote] [tag]
提交所有tag
git push [remote] --tags
新建一个分支,指向某个tag
git checkout -b [branch] [tag]
服务器
git init --bare UncleNLP.git chown -R git:git UncleNLP.git
本地
git init git remote add origin git@172.168.1.1:/home/nlp/UncleNLP.git