Git

  • 将本地仓库与(GitHub等)远程remote仓库同步

    git remote update origin --prune

    GitHub有新分支,要把这个新分支拉取到本地

  • 展示本地仓库和远程仓库的关系

    git remote show origin

  • 展示所有分支,包括本地分支和远程分支

    git branch -a


    展示所有远程分支

    git branch -r


    展示本地分支和远程分支的映射关系

    git branch -vv

  • 比较分支之间的差异

    git diff main develop

    main和develop是分支名称,也可以加上origin等对远程分支进行比较

  • 查看本地Git的信息

    git config --list

    本地git config设置的信息、GitHub等绑定的信息、ssh生成秘钥用的email

    上述三者的关系

    简而言之,本地git config配置的name和email要和GitHub一致,自己的GitHub才能有提交记录显示(private repo则不会有显示)

  • 将本地仓库的提交推送到绑定的远程仓库

    git push <远程主机名> <本地分支名>:<远程分支名>

    若当前本地分支已经与远程分支相绑定,则可以直接用git push

    • 也可以用这个命令直接在远程创建分支
  • (别用这个)只拉取remote远程仓库(GitHub等)的某个分支

    git clone -b tipc-dev https://github.com/nano8259/inter-board-ns3.git

  • 删除(GitHub等的)远程分支

    git push remote_name --delete [branchname]

    remote_name是远程的名称,大多数情况下是origin


    删除本地已合并的分支或没有改动的分支

    git branch -d [branchname]


    强行删除本地分支

    git branch -D [branchname]

  • 修改本地分支的名字:

    git branch –m old_branch new_branch

  • 绑定本地分支与远程分支:

    git branch --set-upstream-to=origin/remote_branch_name local_branch_name


    撤销本地分支与远程分支的绑定关系:

    git branch --unset-upstream

  • 新建本地分支并与远程分支相关联

    git checkout -b local_branch_name origin/remote_branch_name

    现有分支与远程分支关联

    git branch --set-upstream-to=origin/remote_branch_name local_branch_name

  • git 修改远程分支名称

    1. 首先 git branch -m 本地旧分支名 本地新分支名(改对应的本地分支的名字)

    2. 其次 git push –delete origin 远程旧分支名(将远程的旧分支删掉)

    3. git push origin 本地新分支名

    4. 绑定本地分支与远程分支:

      git branch --set-upstream-to=origin/remote_branch_name local_branch_name

  • 展示push和pull的对象等与remote的关联信息

    git remote show origin

  • git 如何将主分支(master)合并到子分支上

  • 同步fork的上游仓库代码更新:git pull upstream

    git pull upstream main/dev

  • 【Git 完整提交规范】git的约定式提交规范

  • 回退Git版本

    • 查看版本哈希值

      git log

      git log --pretty=oneline

      git log --oneline

      三个命令依次精简,记住要回退到的版本的hash值

    • 本地版本回退

      git reset --hard [hashValue]

    • 把更新推送到GitHub等远程服务器

      git push -f -u origin maingit push -f

  • 将项目原来使用Https改成SSH方式

  • 如何把已有的本地git仓库,推送到远程新的仓库

    分为两种情况:没有远程仓库 和 已经有了远程仓库,需要提交到新的仓库

  • 统计当前版本与某个hash指定版本的差异(修改过的文件列表)

    git diff --name-only [hash_value] (这里是节点 或者HEAD~次数)

    通过管道将输出重定向到diff.txt

    git diff --name-only [hash_value] (这里是节点 或者HEAD~次数) > diff.txt

  • 修改之前commit的内容:提交信息和代码都可以修改

    git 更改某个提交内容和将当前改动追加到某次commit上

    git rebase变基

  • git bash中对commit message换行

    image-20230415105953672
  • cherry-pick: 从一个分支cherry-pick若干个commit到其他分支: git cherry-pick commit_id

    git cherry-pick --abort终止cherry-pick操作

  • git 强制放弃本地修改(新增、删除文件)

    sudo git checkout . && sudo git clean -df

  • 终止merge操作:

    git merge --abort

Git flow

stackoverflow参考链接

上面链接中展示的git flow示意图如下:

画图
  • 裸版本库--bare,作为共享库使用

    --bare--mirror

    [Git] 裸代码仓库和镜像代码仓库全解

    裸库实际应用流程

    方便理解的总结:

    git clone 加上 –bare是拉取一个裸版本库,裸版本库和正常git clone拉取的正常库的区别是:

    1. 裸库只具有版本控制的作用,本身不能进行工作区的操作,即正常的 add/commit等命令都是不能执行的.

    2. 裸库可以作为一个本地仓库,供给正常库使用,即正常库可以设置remote url为裸库,之后push就是向裸库提交(相当于github/gitlab这样的中央仓库的作用)

    3. 裸库一般只用于分享仓库,毕竟没人会在自己本地搞一个库让别人连,gitlab/github/云效不香吗?

    –mirror

    这个理解的不太深刻,从百度/google及官网的说明来看,就是将本地的所有分支都推送到远端(强制),我的简单理解就是将本地的所有分支直接覆盖远端.

    与git push相比,不加mirror就只是推送某一个分支.

tmux命令

参考

  • 启动tmux同时新建一个会话

    tmux

    (比上面多一个对会话的命名)

    tmux new -s <name>


    退出tmux

    exit or Ctrl+D

  • 显示当前所有的tmux

    tmux ls

  • 重接会话,重新进入某个会话窗口

    tmux attach -t 0

    tmux attach -t <name>

  • 离开当前的会话:

    Ctrl+b and D

Screen

Vim

Vim编辑器常用命令

  • i进入insert模式

    esc退出

  • :wq退出编辑

Redis

  • 配置过程在本地路径的这里

  • 运行docker中的redis(要先在docker中启动container)

    在命令行输入docker exec -it redis redis-cli

  • 清除docker缓存

    flushall

  • 小林coding指令

VSCode使用

Terminal

  • 查看当前目录下的文件个数

    ls -lR|grep "^-"|wc -l

  • 查看正在运行的进程 用关键词查询

    ps -rf | grep <name>

    查看所有相关进程 用关键词查询

    ps -ef | grep <name>

    杀死带有hxnanibc的进程:使用管道kill某条命令对应的进程

    ps -ef | grep ibc | grep hxnan | awk '{print $2}' | xargs kill -9

  • 根据进程的关键字杀死进程

    pkill -9 tipc

  • Linux: cp 复制文件、文件夹到文件夹

    cp -r /source-path /destination-path

  • 修改Linux中gcc和g++的版本:见《ns-3学习.md》

CLion

GNU nano

Ctrl+S 保存你的工作

Ctrl+X 退出

CMake

  • cmake [options] -S -B

    cmake -S . -B build

  • gcc→make→makefile→cmake→cmakelist

    之间的关系

GDB

GDB(GNU Debugger)是UNIX及UNIX-like下的强大调试工具

参考本博客的另一篇文章《GDB_skills