# miew **Repository Path**: Mirdoriss/miew ## Basic Information - **Project Name**: miew - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-25 - **Last Updated**: 2024-02-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # miew #### 介绍 {**以下是 Gitee 平台说明,您可以替换此简介** Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台 无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)} #### git原理 工作目录→add→索引→commit→本地数据库→push→远端数据库 ↑-------checkout--------↓---clone/fetch--↓ ↑-------------------pull-----------------↓ #### git起始目录创建项目 初始化 1. git init 初始化目录 2. git add . 添加文件到暂存区 3. git status 查看文件状态 4. git commit -m "commit message" 提交更改到本地仓库 5. git remote set-url origin https://gitee.com/Mirdoriss/miew.git 6. ↓ git remote add {xxx} https://gitee.com/Mirdoriss/miew.git ↑ 7. git push -u origin "master" 8. git log 查看提交历史 commit信息 --no-verify 允许您绕过任何在提交前执行的预定义检查 #### 还原 1. git reset HEAD^^ Delete 还原前两个版本 2. git reset HEAD^^ --hard 还原前两个版本,所有更新档案都放弃 --soft commit --hard commit 强制更改信息舍弃 3. git reset [哈希值] --hard 还原回到该版本 4. git reflog 查看历史找到SHA-1编号,再将版本还原回来 5. git reflog delete "HEAD@{0}" 删除特定历史记录 6. git reflog expire --expire=now --all清除历史记录 7. git gc 重新整理或清除那些找不到、无法追踪的版本 #### 设定历史记录过期时间 1. git config gc.[分支]reflogExpire 2. git config gc.[分支]reflogExpireUnreachable #### 分支和合并 1. git branch 列出创建分支 2. git checkout 切换分支 3. git switch 切换分支(新版 Git) 4. git merge 合并分支 5. git branch -d 删除分支 6. master→develop开发/feature特性/release版本/hotfix缺陷 (快转模式) 建立初始commit位置支点轨道 HEAD位置是某个要被merge branch(develop)上的初始commit,就会触发快转模式 --no-ff 参数,停用 Git 的快转机制 7. develop->commit...->master(非快转模式) 8. 本地分支冲突 Unmerged状态 ->git status->edit->git add->git status->git commit #### 远程仓库 1. git remote -v 查看远程仓库 2. git remote add origin 添加远程仓库URL 3. git push -u origin 将本地分支推送到远程仓库 4. git pull origin 从远程仓库拉取更改 5. git pull origin master --allow-unrelated-histories 6. git fetch->git merge origin/master 远端数据库合并本地工作目录 7. git --version 查询版本 8. git config --global [push.default] simple #### commit命令消息 git rebase 变基 法则: 绝不要在公共的分支上使用它! 「工作目录」 「索引」 不能有commit 信息否则无法执行 p, pick = 保留该commit r, reword = 保留该commit,但需要修改该commit的注释 e, edit = 保留该commit, 但要停下来修改该提交(不仅仅修改注释) s, squash = 将该commit和前一个commit合并 f, fixup = 将该commit和前一个commit合并,但不要保留该提交的注释信息 e, exec = 执行shell命令 d, drop = 丢弃该commit --interactive 交互式编辑 --continue # 解决冲突后继续执行变基 --skip # 冲突时跳过当前提交继续执行 --abort # 放弃变基操作,回复变基之前的状态 [startpoint] [endpoint]编辑区间 git rebase master feature = git checkout feature + git rebase master 1. 调换commit的顺序 2. 修改commit的信息 reword 3. 插入一个commit edit git commit --amend git rebase --continue 4. 编辑一个commit edit git commit --amend 5. 拆解一个commit edit git commit --amend→git add .→git commit 6. 压缩一个commit,且保留信息记录 squash 7. 压缩一个commit,但丢弃版本记录 fixup 8. 删除一个commit drop #### commit 冗余导致问题 1. 不利于代码 review 2. 会造成分支污染 如何合并多次提交记录 git rebase -i HEAD~4 git rebase --edit-todo git rebase --continue git log #### 创建版本Tag 1. git tag 2. git tag [-a]附注标签 v1.0 [-m] 注释信息 [-s]私钥 [-d]删除 创建tag git push origin --delete tag 3. git push origin --tags 共享tag #### 描述历史 1. git describe 2. git log --decoreate 里程碑 #### 1. git show [哈希值] 查出该版本的相关信息 #### 撤销提交 1. git revert 用一次新的commit来回滚之前的commit [工作目录]干净 2. git log --stat -2 --no-edit 不编辑Commit 信息 git reset 把HEAD向后移动 git revert 把HEAD继续前进 1. git cherry-pick 单个提交或多个提交「工作目录」干净 --no-commit 避免自动提交 -e 编辑 -n 更新工作区和暂存区,不产生新提交 -x 提交信息的末尾追加一行 -s 提交信息的末尾追加一行操作者的签名 -m parent-number 编号 #### 1. git rev-parse --git-dir 显示版本库 .git 目录所在的位置 2. git rev-parse --show-toplevel 显示工作区根目录 3. git rev-parse --show-prefix 所在目录相对于工作区根目录的相对目录 4. git rev-parse --show-cdup 显示从当前目录后退到工作区的根的深度 5. ​​git rev-parse --symbolic --branches​​ 显示分支 6. ​​git rev-parse --symbolic --tags​​ 显示里程碑 7. ​git rev-parse --symbolic --glob=refs/*​​ 显示引用 8. git rev-parse HEAD 获取完整commit id 9. git rev-parse --short HEAD 获取short commit id 1. git rev-list --oneline 使用一个提交 ID 查看该版本开始的所有历史提交 2. git rev-list --oneline 两个或多个版本,相当于每个版本单独使用时只带的列表的并集 ^! 提交本次不包括其历史提交 ^@提交历史,自身除外 ^排除这个版本以及其历史版本 ..两个点连接连个版本 ...两个版本共同能够访问到的除外 1. git ls-files --with-tree=HEAD^ 查看缓存区的文件 2. git cat-file -p HEAD^:welcome.txt 查看历史版本中文件的内容 1. git grep -i --ignore-case 忽略大小写 2. git grep -n --line-number 显示匹配行的行号 3. git grep -c --count 仅显示匹配行的数量 4. git grep -e 指定搜索模式 5. git grep -b --break 显示带有换行符的所有文件中的匹配项 6. git grep -h --heading 显示一个文件名作为一个文件中所需匹配项的标题 7. git grep -o 仅显示匹配部分的命令 8. git grep "pattern" 搜索模式 #### 修改历史查找(修改追溯) 1. git blame -L 160,+10 sha1_file.c 指定开始和结束行 git blame -L [开始行数],[结束行数] [filename] 找出改坏程序的凶手 查看某文件的修改记录,并且显示修改版本,用户和时间信息 + 向后取n行 1. git fetch 将远端仓库的最新版下载回来,下载的内容包含完整的文件仓库(object storage)。 这个命令不包含「合并」分支的动作 2. git ls-remote 显示特定远端仓库的参照名称。包含远端分支与远端标签 3. git pull 将远端仓库的最新版下载回来,下载的内容包含完整的文件仓库(object storage)。并且将远端分支合并到本地分支。 (将 origin/master 远端分支合并到 master 本地分支) git pull = git fetch + git merge origin/master ``` +refs/heads/*:refs/remotes/origin/* ``` +传输资料时,不会特别使用安全性确认机制 refs/heads/* 「来源参照规格」,代表一个位于远端仓库的远端分支,而 * 星号代表 refs/heads/ 这个路径下「所有的远端参照」 「来源分支」:「目的分支」 refs/remotes/origin/* 「目的参照规格」,代表一个位于本地仓库的本地追踪分支,而 * 星号代表工作目录的 refs/remotes/origin/ 这个路径下「所有的本地参照」 git fetch --all --tags 团队成员下载远端仓库所有文件 #### fork 与 pull request 「权限」以及「版本库隔离」 授权特定人为协同开发人员 (Collaborators) 组织账号设定人员群组 (Teams) Pull Only (唯读) Push & Pull (可读可写) Push, Pull & Administrative (可读可写以及项目管理权限) fork 项目翻版重置 compare across forks Click to create a pull request for this comparison Able to merge→Send pull request→Merge pull request 接受 pull request 的要求,确认合并回自己的 GitHub 项目 git shortlog -sne 即可详细列出每个人的 commit 次数 -n 降幂排序 Contributors (本项目贡献者的活跃程度) Commit Activity (每一天的 commit 活动数量) Code Frequency (原始码异动服务,可看出每天新增与删除的代码行数) Punchcard (每一天的 commit 数量,用打卡的方式来显示) (类似上下班打卡的那种卡片) Network (pull request 与 merge 的图形表示) Members (所有 fork 此项目的 github 成员) git clean -n 预览以便在运行实际的清理操作之前查看即将发生的变更 git clean -f 强迫删除 |指令 | 改变历史纪录 | 说明 | | ------------- |:-------------:|:-----| |Reset |是 |把目前的状态设定成某个指定的Commit的状态,通常适用于尚未推出去的Commit| |Rebase |是 |不管是新增、修改、删除Commit都相当方便,用来整理、编辑还没有推出去的Commit相当方便,但通常也只适用于尚未推出去的Commit | |Revert |否 |新增一个Commit来反转(或说取消)另一个Commit的内容,原本的Commit依旧还是会保留在历史纪录中。虽然会因此而增加Commit数,但通常比较适用于已经推出去的Commit,或是不允许使用Reset或Rebase之修改历史纪录的指令的场合| |Git Merge | Git Rebase | | ------------- |:-------------| |合并时创建一个最终提交 |Git的rebase在rebasing时不会创建任何提交| |它将所有的提交合并为一个单一的提交 |它创建了一个提交的线性轨迹| |它创建了一个图形化的历史,可能有点复杂,难以理解|它创造了一个线性的历史,可以很容易地理解| |合并两个分支是安全的|Git的 “rebase “处理了严重的操作| |合并可以在公共和私有分支上进行|在公共分支上使用重定位是错误的选择| |合并将feature分支的内容与主分支整合在一起。因此,主干分支被改变了,而feature分支的历史保持一致|主分支的重新发布可能会影响到feature分支| |merge保留了历史|rebase改写了历史| |Git合并一次呈现所有冲突|Git重新建立了一个又一个的冲突| #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ### Vim编辑语法 #### 基本移动: h:向左移动 j:向下移动 k:向上移动 l:向右移动 w:将光标移到下一个单词的开头 b:将光标移到前一个单词的开头 0:移动到行的开头 $:移动到行的结尾 G:移动到文件的末尾 gg:移动到文件的开头 #### 编辑文本: i:在光标前插入文本 I:在当前行的开头插入文本 a:在光标后插入文本 A:在当前行的结尾插入文本 o:在当前行的下方插入新行 O:在当前行的上方插入新行 #### 删除和复制: x:删除光标下的字符 dd:删除当前行 yy:复制当前行 p:粘贴复制或删除的文本 撤销和重做: u:撤销上一步操作 Ctrl + r:重做上一步被撤销的操作 #### 查找和替换: /search_term:向前搜索文本 ?search_term:向后搜索文本 n:跳到下一个搜索结果 N:跳到上一个搜索结果 :s/old/new/g:替换所有匹配的字符串 #### 保存和退出: :w:保存当前文件 :q:退出编辑器 :wq:保存并退出 :q!:强制退出,不保存更改 #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)