something about git

Git-Flow

不同分支各司其职

分支类型 命名规范 创建自 合并至 说明
main main - - 部署版本分支
develop develop - - 代码集成分支
feature feature/* develop develop 新功能分支
release release/* develop develop和master 新版本发布
hotfix hotfix/* master develop和master 生产环境中发现的紧急bug的修复

git command

  • 分支(branch)

    • 使用 checkout 创建分支

      1
      2
      # 基于main分支创建develop分支
      git checkout -b develop main
    • 使用 switch 创建分支

      1
      2
      # 基于当前分支创建feature/switch分支
      git switch -c feature/switch
    • 使用 switch 切换分支

      1
      2
      # 切换到feature/switch分支
      git switch feature/switch
    • 合并分支(merge)

      1
      2
      3
      4
      # 合并feature/switch分支到当前分支(develop)
      git switch develop
      # --no-ff => no-fast-forward
      git merge --no-ff feature/switch
  • 暂存区(stage)

    • 将内容添加至暂存区

      1
      2
      3
      4
      # 添加当前目录下所有文件更改:
      git add .
      # 添加file文件更改:
      git add file
    • 将文件的部分内容添加至暂存区

      1
      2
      3
      4
      5
      6
      7
      # 对于已经暂存的文件, 开启交互模式后选择需要暂存的hunk
      git add -p <filename>
      # ######################
      # 对于未暂存的文件 先将文件添加至暂存区,但是文件内容不暂存
      git add -N <filename>
      # 然后再开启交互模式选择需要暂存的hunk
      git add -p <filename>
    • 误添加至暂存区的内容 取消添加

      add 进暂存区的内容(还未提交),取消 add,但是本地文件内容不做删除。

      1
      2
      3
      4
      # 将 filename.txt 文件取消 `add`
      git reset HEAD -filename.txt
      # 将当前目录下所有已添加文件,取消`add`
      git reset HEAD .
  • 提交(commit)

    • 将暂存区内容做一次提交

      提交至本地仓库,正式纳入版本记录。
      一次提交,看作一次版本的 原子 操作。

      1
      2
      3
      git commit
      # 随之而来的vim提交窗口中补充commit的对应message。
      # message保持Angular规范

      Angular规范保持 <type>(<scope>): <subject> 格式
      具体要求如下:

      • 主要type
        • feat: 增加新功能
        • fix: 修复bug
      • 特殊type
        • docs: 只改动了文档相关的内容
        • style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
        • build: 构造工具的或者外部依赖的改动,例如webpack,npm
        • refactor: 代码重构时使用
        • revert: 执行git revert打印的message
      • 暂不使用type
        • test: 添加测试或者修改现有测试
        • perf: 提高性能的改动
        • ci: 与CI(持续集成服务)有关的改动
        • chore: 不修改src或者test的其余修改,例如构建过程或辅助工具的变动
    • 修改最后一次提交

      发现提交错了:少提交文件comment写错了时都可以使用git commit命令的--amend参数。

      • 修改comment

        1
        2
        3
        git commit --amend -m "new comment"
        # 或进入vim中编辑`comment`
        git commit --amend
      • 补充漏提交文件

        1
        2
        3
        4
        # 将文件添加至暂存区
        git add file
        # 附加提交
        git commit --amend

        删除多提交文件时,git rm file将文件从暂存区中移除,其它相同。

      • 修改提交时不修改comment

        1
        2
        # 多使用`--no-edit`参数,将以不修改`comment`的方式修改上次的提交内容
        git commit --amend --no-edit
  • 备份(stash)

    • 备份当前工作区内容

      将当前工作区内容保存到Git栈中,工作区回到最近提交状态。

      1
      git stash
    • 从Git栈中恢复最近一次保存的内容

      1
      git stash pop
    • 清空Git栈

      1
      git stash clear
  • 子模块(submodule)

    • 添加子模块

      可以将不同仓库的模块添加至本模块中。

      1
      2
      # git submodule add <url> <path>
      git submodule add git@github.com:username/otherModule.git ~/localModule/otherModule
    • 子模块内容获取

      克隆包含子模块的项目时,子模块信息会克隆下来,但其包含的项目文件未克隆。

      1
      2
      3
      4
      5
      6
      7
      8
      # 使用 init 进行 子模块初始化
      git submodule init
      # 使用 update 进行 子模块获取
      git submodule update
      # 使用 --recursive 参数,获取子模块及包含的"子...子"模块
      git submodule update --recursive
      # 使用 --remote 参数获取子模块最新版本到本地仓库中
      git submodule update --remote
    • 子模块删除

      不需要子模块时,删除相应子模块。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      # 1. 删除本地仓库中子模块目录
      rm -rf path/to/remoteModule
      # 2. 删除.gitmodules中相关内容
      vim .gitmodules
      # 3. 删除 .git/config 文件中相关内容
      vim .git/config
      # 4. 删除子模块的追踪块
      rm -rf .git/module/remoteModule
      # 5. 删除子模块缓冲区
      git rm --cached remoteModule

git add -p 参数

选项 说明
y 暂存当前块
n 不暂存当前块
a 暂存当前块及剩余块
d 不暂存当前块及剩余块
g 选择并跳转至指定的块
/ 正则搜索指定的块
j 离开当前未定块,处理下一个 未定
J 离开当前未定块,处理下一个块
k 离开当前未定块,处理上一个 未定
K 离开当前未定块,处理上一个块
s 将当前块分为更小的块
e 手动编辑当前块
? help

something about github

  • 更改github邮箱导致贡献丢失
    1. 克隆目标仓库
      1
      2
      git clone git@github.com:username/target.git
      cd target/
    2. 制作脚本文件
      1
      touch run.sh
    3. 将以下内容添加至 run.sh
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      #!/bin/sh

      # OLD_EMAIL 为旧邮箱
      # CORRECT_NAME 为用户名
      # CORRECT_EMAIL 为新邮箱
      git filter-branch --env-filter '

      OLD_EMAIL="old_mail@xxx.com"
      CORRECT_NAME="correctName"
      CORRECT_EMAIL="new_mail@xxx.com"

      if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
      then
      export GIT_COMMITTER_NAME="$CORRECT_NAME"
      export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
      fi
      if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
      then
      export GIT_AUTHOR_NAME="$CORRECT_NAME"
      export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
      fi
      ' --tag-name-filter cat -- --branches --tags
    4. 在仓库中运行 run.sh
      1
      2
      3
      # 添加执行权限
      chmod u+x ./run.sh
      bash ./run.sh
    5. 检查git log 中对应邮箱是否更改
      1
      git log
    6. 提交至远端
      1
      git push --force --tags origin 'refs/heads/*'

something about Medusa

Medusa参数


  • 使用例:medusa -h host -u username -p password -M module

参数 含义 备注
-h [TEXT] 指定主机名或 IP地址
-H [FILE] 指定包含主机名列表或 IP地址列表文件 常用
-u [TEXT] 指定测试的 用户名 小写字母u
-U [FILE] 指定包含测试 用户名列表文件 大写字母U,常用
-p [TEXT] 指定测试的 密码 小写字母p
-P [FILE] 指定包含测试 密码列表文件 大写字母P,常用
-C [FILE] 指定 组合条目 文件 小写字母C
组合条目为( 主机:用户名:密码 )的组合
-O [FILE] 指定输出 日志 文件
-e [n/s/ns] 额外密码测试
( [n]:无密码测试 , [s]密码和用户名相同 )
-M [TEXT] 指定模块名 ,省略(.mod)扩展名 常用
-m [TEXT] 指定传递给模块的参数,可多次传递 -m p1 -m p2 -m p3 …
-d 列出所有可用模块
-n [NUM] 指定使用非默认TCP端口,指定端口
-s 开启SSL
-g [NUM] 设定达到 指定秒数 后放弃尝试,默认为3秒
-r [NUM] 设定每次 重新尝试 间隔的秒数
-R [NUM] 设定放弃之前 尝试次数 ,总次数为NUM+1
-c [NUM] 设定等待验证socket的时间(usec),默认500usec
-t [NUM] 设定 同时测试的登录总数
-T [NUM] 设定 同时测试的主机总数
-L 设定 每个线程 使用 一个用户名 进行登录,默认为在进行之前先处理全部用户名;
-f 设定找到 正确的用户名/密码 时停止扫描 该主机 常用
-F 设定找到 第一个正确的用户名/密码 时停止扫描 所有主机
-b 禁止启动banner.
-q 显示模块使用信息
-v [NUM] 设定 冗余信息(verbose)等级 [0-6(more)] 小写字母V
-w [NUM] 设定 错误DEBUG等级 [0-10(more)]
-V 显示版本信息 大写字母V
-Z [TEXT] 根据上次扫描内容, 继续扫描

参数说明

-C

指定 组合条目 文件
组合条目为 host:username:password的组合,一行记录一个条目.
接受如下组合:

  • host:username:password
  • host:username:
  • host::
  • :username:password
  • :username:
  • ::password
  • host::password

使用例:

1
medusa -M smbnt -C combo.txt -H hosts.txt