linux限制目录大小

概念解读

  1. linux没有磁盘分区,新建镜像处理

方法如下

  1. dd if=/dev/zero of=/root/disk1.img bs=1M count=10 // 1M*10=10M zero 是dev下的文件,创建镜像
    1
    这里进行创建镜像,需要大小根据自己的需求制定,bs是区块,一个区块大小.count是10个块.
  2. losetup /dev/loop10 /root/disk1.img // 挂载硬盘为/dev/loop1
    1
    这里要自己查找一下可用的回环设备./dev/loop为linux的回环设备,losetup /dev/loop0~x.一个个试一下为空的就可以用.也可以直接fdisk -l查看哪个没有
  3. mkfs.ext3 /dev/loop1 // 格式化文件系统
    1
    格式化系统
  4. mkdir /test1 // 创建文件
  5. mount /dev/loop10 /data // 挂载硬盘,/test1目录的容量为20M
    1
    挂载设备

卸载方法如下

  1. umount test1
    1
    卸载设备
  2. losetup -d /dev/loop1
    1
    删除挂载镜像

rocketmq安装

官网地址

本文使用的是4.9.0

  • 官网
    1
    2
    大写的备注:第一次下载的是:rocketmq-all-4.9.0-source-release.zip,想自己编译,编译后运行broker一直抛出链接不上nameserver,一开始怀疑配置,后面重新下载低版本的通过.
    重新下载回该版本,下载了一个编译的好的包.一运行直接通过了.要么自行编译时候需要改参数(官网没看到).要么编译的代码就有问题.耗时4小时

启动rocketmq

  • 这里是单机测试,修改jvm使用的内存.默认的会占用4+8=12G内存.
  1. cd rocketmq-all-4.9.0-bin-release/
  2. vim bin/runserver.sh 和 vim bin/runbroker.sh
    1
    2
    3
    找到一行带有设置内存的,修改为下面的一句话
    runserver : JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
    runbroker : JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m"
  3. 开启 Name Server
    1
    2
    3
    > nohup sh bin/mqnamesrv &
    > tail -f ~/logs/rocketmqlogs/namesrv.log
    The Name Server boot success...
  4. 开启Broker
    1
    2
    3
    4
    5
    6
    7
    8
     备注:测试中我是在docker中,需要指定一下外网ip
    > vim conf/broker.conf (加入以下.根据个人需求来定)
    # brokerIP1和brokerIP2默认获取本地ip地址,在云服务器上会获取内网ip地址,因此必须显式设置
    brokerIP1=192.168.0.x
    brokerIP2=192.168.0.x
    > nohup sh bin/mqbroker -n 192.168.0.149:9876 -c conf/broker.conf &
    > tail -f ~/logs/rocketmqlogs/broker.log
    The broker[%s, 172.30.30.233:10911] boot success...

启动rocketmq console

  1. github:https://github.com/apache/rocketmq-externals
  2. 进入到文件夹:rocketmq-console
    1
    2
    3
    mvn clean package -Dmaven.test.skip=true
    nohup java -jar target/rocketmq-console-ng-2.0.0.jar > /dev/null 2>&1 &
    tail -100f ~/logs/consolelogs/rocketmq-console.log
  3. 启动后在管理台上有填入集群地址.进行查看

Runcher2.0安装

hello word开始

  • 使用的ubuntu 20.04.

安装1.6版本

  1. 镜像地址:https://hub.docker.com/r/rancher/server
  2. 启动docker:docker run -d –restart=unless-stopped -p 8082:8080 –name rancher1.6 rancher/server
  • 问题
    1. 添加主机的时候,如果是单机版本,住下docker-agent的dns错误.可参考下面: https://github.com/rancher/rancher/issues/1108
      1
      2
      3
      4
      5
      6
      7
      8
      我用的是:
      vim /etc/default/docker
      # replace
      # # DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
      # by
      DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
      # then restart Docker
      service docker restar

安装2.5版本

  1. 安装rancher(v2.5):直接通过docker镜像来运行我们的rancher,首先,先从镜像中心下载rancher镜像,如果是1.x系列的,镜像名为rancher/server,而2.x是rancher/rancher,我们使用2.x版本的,所以,执行如下命令即可:

    1
    docker pull rancher/rancher
  2. 执行如下命令,在宿主机创建两个挂载目录.(根据情况来使用,就只看看不用了);

    1
    2
    3
    mkdir -p /docker_volume/rancher_home/rancher
    mkdir -p /docker_volume/rancher_home/auditlog
    mkdir -p /home/rancher/ssl
  3. 生成签名证书:http://docs.rancher.cn/docs/rancher2/installation/resources/advanced/self-signed-ssl/_index

    1
    官方文档有很好的解决
  4. 接下来我们启动rancher容器:(端口根据自己需要来定义.我这里有其他端口被占用了).2.5版本中docker需要提权加:–privileged

    1
    2
    3
    4
    5
    6
    7
    8
     docker run -d --privileged --restart=unless-stopped  \
    -p 8081:80 -p 8443:443 \
    -e NO_PROXY="localhost,127.0.0.1,0.0.0.0,10.0.0.0/8,192.168.0.0/24,124.160.111.194" \
    -v /home/rancher/ssl:/container/certs \
    -e SSL_CERT_DIR="/container/certs" \
    -v /docker_volume/rancher_home/rancher:/var/lib/rancher \
    -v /docker_volume/rancher_home/auditlog:/var/log/auditlog \
    --name rancher rancher/rancher:v2.5-head
  5. 查看日志:

    1
    docker logs -f $ID

    单机(测试)使用

  6. 端口映射选择集群IP.

  7. 高级选项中:网络是用主机网络

  8. rancher如果是1.5版本,网络选择桥接,方便单机中使用.
    备注: 端口映射的是使用的iptables,非docker的端口映射.这里选择是为了方便,使用其他类型需要做网络转发.

rancher重新安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
docker stop $(docker ps -a -q)
docker system prune -f
docker volume rm $(docker volume ls -q)
docker rm -f $(docker ps -a -q)
rm -rf /etc/ceph \
/etc/cni \
/etc/kubernetes \
/opt/cni \
/opt/rke \
/run/secrets/kubernetes.io \
/run/calico \
/run/flannel \
/var/lib/calico \
/var/lib/etcd \
/var/lib/cni \
/var/lib/kubelet \
/var/lib/rancher/rke/log \
/var/log/containers \
/var/log/pods \

nginx配置HTTP1.x|2

nginx配置

nginx概念

  • nginx反向代理这里不在赘述了.
  1. nginx在配置中,默认是用http1.0进行代理的.
  2. http1.0在压测中也能发现问题.一旦QPS量大后,会出现很多的time_wait.连接不复用.吞吐量无法提升

nginx1.1的配置

  • 1.1的持久化连接,可以复用是提高吞吐量的秘诀
  • {PATH}:根据自己的电脑路径设置
  • {URLDOMIAN}:根据自己需要的域名设置.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    upstream test-local {
    server 127.0.0.1:8443;
    # 配置连接数量,超时时间.线上根据实际情况配置
    keepalive 50;
    keepalive_requests 20;
    }
    http配置
    server {
    listen 80;
    server_name {URLDOMIAN}; # 没有可以忽略
    access_log {PATH}/local.log;
    location / {
    proxy_pass https://test-local;
    proxy_set_header Connection "keep-alive";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Reverse-Proxy nginx;
    }

    }
    # HTTPS server 需要安装https证书
    server {
    listen 443 ssl;
    server_name {URLDOMIAN};
    access_log {PATH}/local.log;
    ssl_certificate {PATH}/localhost_ca.cer;
    ssl_certificate_key {PATH}/localhost_ca.pvk;
    # 以下参数根据自己的情况以及服务的量来制定.在后面有部分说明字段的含义
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    # 必须声明HTTP的版本
    proxy_http_version 1.1;
    location / {
    proxy_pass https://test-local/;
    # 中间代理了一层,要告诉服务器,持久化链接
    proxy_set_header Connection "keep-alive";
    # 以下参数根据实际情况来配置
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Reverse-Proxy nginx;
    }
    }

http2的配置

  • 经过一个空接口压测,http2压测继续比http1.1的吞吐量上升.没有了http头堵塞.但tcp头堵塞还在
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
      upstream test-local {
    server 127.0.0.1:8443;
    # 配置连接数量,超时时间.线上根据实际情况配置
    keepalive 50;
    keepalive_requests 20;
    }
    http配置
    server {
    listen 80;
    server_name {URLDOMIAN}; # 没有可以忽略
    access_log {PATH}/local.log;
    location / {
    proxy_pass https://test-local;
    proxy_set_header Connection "keep-alive";
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Reverse-Proxy nginx;
    }

    }
    # HTTPS server 需要安装https证书
    server {
    # 配置一下这个就好了.学会了就很简单
    listen 443 ssl http2;
    server_name {URLDOMIAN};
    access_log {PATH}/local.log;
    ssl_certificate {PATH}/localhost_ca.cer;
    ssl_certificate_key {PATH}/localhost_ca.pvk;
    # 以下参数根据自己的情况以及服务的量来制定.在后面有部分说明字段的含义
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout 5m;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers on;
    location / {
    proxy_pass https://test-local/;
    # 中间代理了一层,要告诉服务器,持久化链接
    proxy_set_header Connection "keep-alive";
    # 以下参数根据实际情况来配置
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Reverse-Proxy nginx;
    }
    }

部分字段说明

  1. 禁止不安全的 SSL 协议,使用安全协议:ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  2. 禁止已经不安全的加密算法: ssl_ciphers HIGH:!aNULL:!MD5; (写法百度下)
  3. 缓存连接凭据:ssl_session_cache shared:SSL:20m; ssl_session_timeout 60m;
  4. 缓解 BEAST 攻击:ssl_prefer_server_ciphers on;

系统重构的构想

系统重构的构想

重构前的确认

  1. 为什么要重构?
    1
    当前哪里不满意,需要进行重构.重构的原因是什么?要花多久?如何进行,方案是什么?
  2. 重构带来影响是什么?
    1
    重构能解决什么问题,不重构能解决吗?重构后业务会有什么变化
  3. 重构后有什么好处
    1
    重构能带什么好处,有什么提升,对业务?对技术?
  • 问题的答案需要根据当前系统进行寻找,总体来说我认为有以下几点:
    • 开发的效率提升,能够引入更方便引入相关脚手架
    • 经过不断的迭代,项目中越来越臃肿,耦合度越来越深.当修改一项内容必然涉及很多功能.界限无法理清

重构进行中

  1. 重构之路
    • 技术改造
      • 升级当前的依赖和相关jar包
      • 改变当前的整体框架内容.对整体变革
    • 业务改造
      • 相关不同业务进行剥离
  2. 未完

概念理解

概念解读

  1. mysql的锁和mysql的隔离级别的关系。有哪些锁
  2. mysql一条查询语句干了啥
  3. grpc的特性
  4. 服务器load的分析与排查
  5. kafka性能高原因
  6. 什么场景选用什么mq
  7. java线程释放原理
    1
    线程中断,运行结束
  8. java的syc锁升级原理,轻量级什么锁,重量级什么锁
  9. juc下面有什么包?引入queue的问题 cas aqs
  10. 限流算法怎么做
  11. tcp连接的状态
  12. LockSupport的理解

android和nodejs开源镜像

android开源镜像和加速运行虚拟机

东软学院镜像

  1. android东软

设置 Android SDK Manager 使用国内镜像

1
2
3
4
5
6
7
8
9
10
android 
-> 主界面
-> 点击菜单 "Tools"
-> 点击菜单项 "Options...",弹出窗口: "Android SDK Manager - Settings" :
-> 设置 "HTTP Proxy Server" 为 `mirrors.neusoft.edu.cn`
-> 设置 "HTTP Proxy port" 为 `80`
-> 勾选中 "Force https://... sources to be fetched using http://..."
-> 点击 "Close" 按钮
-> 点击菜单 "Packages"
-> 点击菜单项 "Reload"

命令行更新

1
2
3
4
5
6
7
8
9
查询更新的类目:android list sdk --extended --proxy-host mirrors.neusoft.edu.cn --proxy-port 80 -s
更新制定的:android update sdk --no-ui --filter 2 --proxy-host mirrors.neusoft.edu.cn --proxy-port 80 -s
安装 id: 2 or "android-21"Android 21 的SDK。
安装的时候提示接受license:
Do you accept the license 'android-sdk-preview-license-52d11cd2' [y/n]:
选择y同意之后继续安装。
等待安装成功。
使用国内的镜像服务器安装,服务稳定,下载速度快,不需要FQ。
注:其中id为32是extra-android-m2repository,android的Support Libraries。
  1. 错误
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
错误
Cannot run program "/var/lib/jenkins/tools/android-sdk/build-tools/23.0.1/aapt": error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at com.android.builder.png.AaptProcess$Builder.start(AaptProcess.java:163)
at com.android.builder.png.QueuedCruncher$1.creation(QueuedCruncher.java:106)
at com.android.builder.tasks.WorkQueue.run(WorkQueue.java:203)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.io.IOException: error=2, No such file or directory
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:248)
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 4 more
Thread(png-cruncher_2) has a null payload

因为aapt是32的位,不能在64位的系统上面运行,需要安装32位的支持。CentOS:

sudo yum install libz.so.1

Ubuntu:

sudo yum apt-get install lib32z1

(可选),选中 所需的各种 API版本 并下载安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-> 点击菜单 "Tools"
-> 点击菜单项 "Manage AVDs",弹出窗口: "Android Virtual Device (AVD) Manager" :
-> 点击 "Create" 按钮
-> AVD Name : 随意输入,比如 "test1"
-> Device : 比如 "Nexus One (3.7", 480 x 800: hdpi)"
-> Taget : 比如 "Android 4.4.2 - API Level 19"
-> CPU/ABI : 通常为 "Intel Atom (x86)"
-> Keyboard : 勾选中 "Hardware keyboard present"
-> Skin : 选中 "Skin with dynamic hardware controls"
-> Front Camera : "None"
-> Back Camera : "None"
-> Memory Options : RAM : 1024M, VM Heap: 32M
-> Internal Sotrage : 2048M
-> SD Card : 2048M
-> Emulation Options: 选中 "Use Host GPU"

Ubuntu 下面模拟器加速: 安装 kvm

1
2
3
4
5
6
7
8
9
10
11
12
13
sudo apt-get install qemu-kvm libvirt-bin ubuntu-vm-builder bridge-utils
sudo adduser `whoami` kvm
sudo adduser `whoami` libvirtd

# 检验是否安装成功
sudo virsh -c qemu:///system list

# 列出所有的 avd
android list avd

# 选择一个并启动(使用 kvm)
# 注意:下面命令中的 "test1" 是 avd 的名称
emulator -avd test1 -qemu -m 2047 -enable-kvm

nodejs换数据源

1
npm config set registry https://registry.npm.taobao.org

也可以使用snpm(smart-npm)

1
2
3
4
5
6
7
8
9
10
11
12
13
npm install --global smart-npm --registry=https://registry.npm.taobao.org/
Linux 用户可以在 ~/.bashrc 文件中加一行
alias npm=smart-npm
Mac 用户可以在 ~/.bash_profile 文件中加一行
alias npm=smart-npm
Window 用户需要先定位到 npm.cmd 和 smart-npm.cmd 两个文件,然后用 smart-npm.cmd 替换 npm.cmd(注意备份原来的 npm.cmd),同时注意修改下 smart-npm.cmd 文件里的路径,否则运行 npm 会报找不到文件错误(如果不明白,建议不要替换,直接使用 snpm 或 smart-npm)
可以使用命令 where smart-npm 来定位到 smart-npm.cmd 文件所在的位置。如:在我的系统上执行 where smart-npm 的结果是:
C:\Users\Mora>where smart-npm
C:\Program Files\nodejs\smart-npm
C:\Program Files\nodejs\smart-npm.cmd
同理可以定位到 npm.cmd 的位置
卸载
npm uninstall --global smart-npm

mac无法识别android手机

1
2
3
4
插上手机打开终端,输入:system_profiler SPUSBDataType,将输出结果记住。
拔下手机,重复以上动作。
在终端里输入echo "0x2207" > ~/.android/adb_usb.ini 红色为你的设备VendorID
adb kill-server

linux下crontab使用

使用linux带有的crontab

  1. 如果没有该命令,自行安装

  2. crontab命令

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:
    crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
      crontab -l //列出某个用户cron服务的详细内容
      crontab -r //删除没个用户的cron服务
      crontab -e //编辑某个用户的cron服务
      比如说root查看自己的cron设置:crontab -u root -l
      再例如,root想删除fred的cron设置:crontab -u fred -r
      在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e
    */30 * * * * sh xx/java.sh >> var/logs/ftp_`date +"\%Y\%m\%d"`.log 2>&1
      进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt
    任务调度的crond常驻命令
    crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此

    任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工

    作便会自动执行该工作。
  3. 新增一条一般使用 crontab -u xx -e ;这里编辑的是该用户的定时任务

  4. 编辑完后重启,将会开始运行

git常用命令/git windows工具使用/mac

Git常用命令

分支合并和rebase

1
2
3
4
5
6
7
git merge <branch> # 将branch分支合并到当前分支

git merge origin/master --no-ff # 不要Fast-Foward合并,这样可以生成merge提交

git rebase master <branch> # 将master rebase到branch,相当于: git co <branch> && git rebase master && git co master && git merge <branch>

git cherry-pick <commit id> # 合并单个commit到当前的分支当中

Git补丁管理(方便在多台机器上开发同步时用)

1
2
3
4
5
git diff > ../sync.patch # 生成补丁

git apply ../sync.patch # 打补丁

git apply --check ../sync.patch #测试补丁能否成功

Git暂存管理

1
2
3
4
5
6
7
git stash # 暂存

git stash list # 列所有stash

git stash apply # 恢复暂存的内容

git stash drop # 删除暂存区

Git远程分支管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
git pull # 抓取远程仓库所有分支更新并合并到本地

git pull --no-ff # 抓取远程仓库所有分支更新并合并到本地,不要快进合并

git fetch origin # 抓取远程仓库更新

git merge origin/master # 将远程主分支合并到本地当前分支

git co --track origin/branch # 跟踪某个远程分支创建相应的本地分支

git co -b <local_branch> origin/<remote_branch> # 基于远程分支创建本地分支,功能同上

git push # push所有分支

git push origin master # 将本地主分支推到远程主分支

git push -u origin master # 将本地主分支推到远程(如无远程主分支则创建,用于初始化远程仓库)

git push origin <local_branch> # 创建远程分支, origin是远程仓库名

git push origin <local_branch>:<remote_branch> # 创建远程分支

git push origin :<remote_branch> #先删除本地分支(git br -d <branch>),然后再push删除远程分支

Git远程仓库管理

1
2
3
4
5
6
7
8
9
GitHub

git remote -v # 查看远程服务器地址和仓库名称

git remote show origin # 查看远程服务器仓库状态

git remote add origin git@ github:robbin/robbin_site.git # 添加远程仓库地址

git remote set-url origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址(用于修改远程仓库地址) git remote rm <repository> # 删除远程仓库

创建远程仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git clone --bare robbin_site robbin_site.git # 用带版本的项目创建纯版本仓库

scp -r my_project.git git@ git.csdn.net:~ # 将纯仓库上传到服务器上

mkdir robbin_site.git && cd robbin_site.git && git --bare init # 在服务器创建纯仓库

git remote add origin git@ github.com:robbin/robbin_site.git # 设置远程仓库地址

git push -u origin master # 客户端首次提交

git push -u origin develop # 首次将本地develop分支提交到远程develop分支,并且track

git remote set-head origin master # 设置远程仓库的HEAD指向master分支

也可以命令设置跟踪远程库和本地库

git branch --set-upstream master origin/master

git branch --set-upstream develop origin/develop

windows中git工具sourceTree的使用

  1. 在电脑中先要安装git windows版本 点此下载
  2. sourceTree可以百度去其他下载站下载,官网有被强同时安装的时候要输入google账户,下载站的关闭后在打开后就不需要了
  3. 安装完后要在windows中生成ssh key。鼠标右键桌面点击git base here,弹出命令框
  4. 命令框中键入命令:ssh-keygen -t rsa -C “email@email.com“,在你的用户目录就会生成 .ssh文件夹
  5. 打开id_rsa.pub文件,在你需要上传的git上添加ssh key
  6. sourceTree打开->工具->选项->ssh客户端配置,选择ssh链接。sourceTree的ssh配置完成。接下来可以克隆新建仓库了

git远程分支的操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git branch <branch>  //创建新的分支
git checkout <branch> //就可以进入新的分支
git push origin <branch> // 将新的分支推上远程
git push origin :<branch> // 删除远程分支
git branch -d <branch> // 删除本地分支
** git pull 提示拉哪个分支代码
** git pull origin <branch> // 可以使用这个命令,也可以使用下一行代码直接固定
**git branch --set-upstream-to=origin/<branch>
删除未提交的文件
# 删除 untracked files
git clean -f
# 连 untracked 的目录也一起删掉
git clean -fd
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
# 在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd

git中文路径名或者文件名被转义

1
git config --global core.quotepath false  // 将转义设为关闭

git添加tag标签

1
2
git tag -a v2.0.0 -m "商城更改重大版本"
git push origin --tag // 将本地的tag标签进行全部推送

git添加的分支要对应远程

1
git branch --set-upstream-to=origin/2.0.x 2.0.x

gitk出现错误

1
2
3
4
5
6
7
8
9
10
11
12
Error in startup script: unknown color name "lime"
(processing "-fore" option)
invoked from within
"$ctext tag conf m2 -fore [lindex $mergecolors 2]"
(procedure "makewindow" line 347)
invoked from within
"makewindow"
(file "/usr/local/bin/gitk" line 12434)
方法1:brew cask install tcl (未测试)
方法2:cp /usr/local/bin/gitk /usr/local/bin/gitk.bkp
vi /usr/local/bin/gitk
:%s/lime/"#99FF00"/g

windows下使用git命令

在windows是使用git

  1. 在windows的git bash中用ssh-keygen -t rsa -C “XXX@company.com“生成了密钥对
  2. 这样会在c/Users/[用户组]/.ssh/id_rsa下面生成ssh文件