差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
| public:it:git [2021/11/01 16:56] – [Submodule] oakfire | public:it:git [2026/01/05 17:19] (当前版本) – [Usage] oakfire | ||
|---|---|---|---|
| 行 12: | 行 12: | ||
| * SVN 的分支是一个完整文件目录;而 git 只保持一份本地文件目录,切换分支直接改变该目录文件; | * SVN 的分支是一个完整文件目录;而 git 只保持一份本地文件目录,切换分支直接改变该目录文件; | ||
| * GIT 没有全局唯一版本号;SVN 有; | * GIT 没有全局唯一版本号;SVN 有; | ||
| - | * git 可以打 tag 来弥补; | + | * git 可以打 tag 来弥补;但是 tag 只与 commit id对应,而 commit id 不能保证代码的唯一性(因为不同分支的同一 commit id 之前的提交历史可能不一样),所以要保证 tag 唯一性,可额外人为规定只有主分支打的tag是有效的。 |
| ===== 三、GIT 资料 ===== | ===== 三、GIT 资料 ===== | ||
| 行 20: | 行 20: | ||
| * CentOS yum 默认只有1.7.1 版本, 但像github.com等网站需要高于此版本. 此时需要源码安装升级. | * CentOS yum 默认只有1.7.1 版本, 但像github.com等网站需要高于此版本. 此时需要源码安装升级. | ||
| * 如果源码安装, | * 如果源码安装, | ||
| + | |||
| + | ==== Tools ==== | ||
| + | * 显示仓库信息[[https:// | ||
| ==== Usage==== | ==== Usage==== | ||
| 行 29: | 行 32: | ||
| * [[http:// | * [[http:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| * [[http:// | * [[http:// | ||
| * [[https:// | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| ==== Ignore ==== | ==== Ignore ==== | ||
| * [[http:// | * [[http:// | ||
| + | * 白名单的写法为:< | ||
| + | * | ||
| + | |||
| + | !.gitignore | ||
| + | |||
| + | # whitelist `src` directories and their children, regardless of place | ||
| + | !src/ | ||
| + | !src/**/ | ||
| + | !src/**/*.h | ||
| + | !src/ | ||
| + | |||
| + | !/docs/ | ||
| + | !/docs/*.md | ||
| + | </ | ||
| ==== Submodule ==== | ==== Submodule ==== | ||
| * 参考[[http:// | * 参考[[http:// | ||
| * 简单概括:**父项目只记录子模块的commit id**, | * 简单概括:**父项目只记录子模块的commit id**, | ||
| * 新增Submodule:< | * 新增Submodule:< | ||
| - | git submodule add [repository 位置] [欲放置的位置] # 增加一個新的 submodule | + | git submodule add <repository 位置> <欲放置的位置> # 增加一個新的 submodule |
| - | git add .gitmodules | + | git add .gitmodules |
| git commit -m "Add submodule into version control" | git commit -m "Add submodule into version control" | ||
| git submodule init # 初始化.git/ | git submodule init # 初始化.git/ | ||
| 行 54: | 行 74: | ||
| git submodule init | git submodule init | ||
| git submodule update | git submodule update | ||
| - | git submodule update --recursive | + | # 或一条命令循环初始化及更新子模块 |
| + | git submodule update --init --recursive | ||
| </ | </ | ||
| * 修改Submodule的内容: | * 修改Submodule的内容: | ||
| - | //直接进入子模块文件夹,进行常规git操作 | + | # 直接进入子模块文件夹,进行常规git操作 |
| cd your-submodule-folder | cd your-submodule-folder | ||
| git add something | git add something | ||
| 行 68: | 行 89: | ||
| * 移除Submodule:< | * 移除Submodule:< | ||
| # 先砍掉目录 | # 先砍掉目录 | ||
| - | git rm --cached | + | git rm --cached |
| - | rm -rf [欲移除的目錄] | + | rm -rf <欲移除的目录> |
| # 修改 .gitmodules,将相关内容移除 | # 修改 .gitmodules,将相关内容移除 | ||
| vim .gitmodules | vim .gitmodules | ||
| 行 103: | 行 124: | ||
| * 增加远程仓库< | * 增加远程仓库< | ||
| * 选择远程仓库push <code bash> git push [repo_name] [branch]</ | * 选择远程仓库push <code bash> git push [repo_name] [branch]</ | ||
| + | * 删除远程仓库分支:< | ||
| + | * 删除本地的远程分支追踪(比如在远程分支删除后本地'' | ||
| + | * 同步本地的远程分支追踪< | ||
| * 打tag最好用-a -m , | * 打tag最好用-a -m , | ||
| * 删除远程仓库tag< | * 删除远程仓库tag< | ||
| 行 113: | 行 137: | ||
| # tag << | # tag << | ||
| # Pushing an empty <src> allows you to delete the <dst> ref from the remote repository.</ | # Pushing an empty <src> allows you to delete the <dst> ref from the remote repository.</ | ||
| - | * 删除本地的远程分支追踪(比如在远程分支删除后本地'' | ||
| * merge 分支后, 如果隐藏了分支的 commit 信息, 具体查看可以使用< | * merge 分支后, 如果隐藏了分支的 commit 信息, 具体查看可以使用< | ||
| * 撤销 '' | * 撤销 '' | ||
| 行 122: | 行 145: | ||
| * 合并特定的单个commit, | * 合并特定的单个commit, | ||
| * 凭证存储: | * 凭证存储: | ||
| - | * :!:如果设为store模式,将在本地明文存储用户密码 | + | * 如果设为store模式,将在本地明文存储用户密码, |
| * 打印更多日志:< | * 打印更多日志:< | ||
| * 提交空commit: <code bash>git commit --allow-empty -m " | * 提交空commit: <code bash>git commit --allow-empty -m " | ||
| * 修改上一次commit的message: | * 修改上一次commit的message: | ||
| + | * 设置 vim 为默认编辑器:< | ||
| + | * 删除某文件的所有历史记录,[[https:// | ||
| + | * 查找大文件:'' | ||
| + | * 从历史记录删除:'' | ||
| + | * 显示差异时忽略行尾空格差异: <code bash>git diff --ignore-space-at-eol</ | ||
| + | * git log 中文显示为尖括号码,修正方式:'' | ||
| + | |||
| ==== server: gitolite ==== | ==== server: gitolite ==== | ||
| * [[http:// | * [[http:// | ||
| 行 136: | 行 166: | ||
| 但对使用者来说, | 但对使用者来说, | ||
| 考虑找个或弄个简化版的本地版本控制系统, | 考虑找个或弄个简化版的本地版本控制系统, | ||
| + | 这篇文章不错:https:// | ||
| + | 这个可借鉴:https:// | ||
| </ | </ | ||