|
| 1 | +# Git/GitHub 教程 |
| 2 | + |
| 3 | +## 一、Git |
| 4 | + |
| 5 | +### 1.1 Git 基础 |
| 6 | + |
| 7 | +#### Git 命令 |
| 8 | + |
| 9 | +- `git init`: 初始化一个目录,其实初始化完毕然后本地多出了一个 `.git`的隐藏目录,这个目录管理着一个代码库的版本信息。 |
| 10 | + |
| 11 | +- `git add`: 把一个文件从`untracked`(未被追踪)状态转为到 `staged`状态,直白的讲,就是把文件提交到`暂缓区`,这个时候还没真正意义上的代码提交。格式为:`git add .`提交所有改动,`git add hello.txt`提交指定文件的改动。 |
| 12 | + |
| 13 | +- `git commit`: 这步才是真正的代码提交到仓库,格式为:`git commit`或者加参数`git commit -m “这次的提交说明信息”`,前者会进入一个页面,输入 i 可以进入编辑界面,再写上这次的提交的注释说明信息(一般用来记录本次提交的主要意图),然后按 ESC 键退出编辑返回到命令模式,然后连续输入两个大写的 “Z”(用 Shift 键或 Capslock 键都可以),就保存并退出了;后者的话直接可以写上提交的注释说明信息。 |
| 14 | + |
| 15 | + 如果在提交的时候出现提示设置邮箱和用户名,是为了保证提交的准确性,在提交的时候 user.name 和 user.email 会进入日志,这些信息,是追踪代码变更的关键,比如是谁修改的。以后会随更新内容一起被永久纳入历史记录。 |
| 16 | + |
| 17 | + 注:在设置用户名的时候,可以使用任意的字符。Git 实际上是使用 email 进行关联每次提交的,只不过使用 username 作为标示符来进行显示。当你的 email 地址和 github上的 email 地址一致时,则会使用 GitHub 上面的 name 来进行显示。 |
| 18 | + |
| 19 | +- `git status`: 查看仓库文件状态。可以加参数 -s,即`git status -s`,加个 -s 用简洁模式查看当前修改和仓库里面差别多少,可以看到有多少文件被新增了,多少被修改了,多少被删除了。 |
| 20 | + |
| 21 | +- `git log`: 查看提交历史记录,即版本历史信息,比如谁提交的,什么时间提交的。 |
| 22 | + |
| 23 | +- ...待续 |
| 24 | + |
| 25 | +配置 Git 提交的用户名和邮箱: |
| 26 | + |
| 27 | +如果工作中只涉及一个 Git 服务器,用一个全局配置就可以了。 |
| 28 | + |
| 29 | +``` xml |
| 30 | +git config --global user.name "strivebo" |
| 31 | +git config --global user.email "ishuzb@gmail.com" |
| 32 | +``` |
| 33 | + |
| 34 | +非全局配置,某个项目下的配置:(去掉`--global`) |
| 35 | + |
| 36 | +``` xml |
| 37 | +git config user.name "strivebo" |
| 38 | +git config user.email "ishuzb@gmail.com" |
| 39 | +``` |
| 40 | + |
| 41 | +查看修改后的配置: |
| 42 | + |
| 43 | +``` xml |
| 44 | +git config --global user.name 或 git config user.name |
| 45 | +git config --global user.email 或 git config user.email |
| 46 | +``` |
| 47 | + |
| 48 | +取消全局配置: |
| 49 | + |
| 50 | +``` xml |
| 51 | +git config --global --unset user.name |
| 52 | +git config --global --unset user.email |
| 53 | + |
| 54 | +git config --global user.name #(查看)全局配置账户是否已经移除 |
| 55 | +git config --global user.email #(查看)全局配置邮箱是否已经移除 |
| 56 | +``` |
| 57 | + |
| 58 | + |
| 59 | + |
| 60 | +### 1.2 Git 进阶 |
| 61 | + |
| 62 | + |
| 63 | + |
| 64 | +### 1.3 Git GUI 客户端 |
| 65 | + |
| 66 | +#### GitHub Desktop |
| 67 | + |
| 68 | +- [GitHub Desktop图文教程 - 简书](<https://www.jianshu.com/p/a6fc842f501d>) |
| 69 | + |
| 70 | +建议还是使用下面的 SourceTree 吧。 |
| 71 | + |
| 72 | +#### SourceTree |
| 73 | + |
| 74 | +SourceTree 是 Windows 和 Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是 Mercurial 和 Subversion 版本控制系统工具。支持创建、提交、clone、push、pull 和 merge 等操作。 |
| 75 | + |
| 76 | +1、安装 |
| 77 | + |
| 78 | +- [SourceTree安装(小白特别详细教程) - 云+社区 - 腾讯云](<https://cloud.tencent.com/developer/article/1369196>) - 本人使用的 Google 账号。 |
| 79 | +- [SourceTree 免注册免登陆防坑法(windows版本)- SegmentFault 思否](<https://segmentfault.com/a/1190000012104165>) - 免注册的办法,可以试试。 |
| 80 | + |
| 81 | +2、使用 |
| 82 | + |
| 83 | +- [SourceTree的基本使用 - 天字天蝎 - 博客园](<https://www.cnblogs.com/tian-xie/p/6264104.html>) |
| 84 | +- [Sourcetree安装与使用 - 掘金](<https://juejin.im/post/5a54e1976fb9a01ca32527fd>) |
| 85 | + |
| 86 | + |
| 87 | + |
| 88 | +## 二、GitHub |
| 89 | + |
| 90 | +GitHub Trending:<https://github.com/trending> |
| 91 | + |
| 92 | +GitHub 全球排名:<https://gitstar-ranking.com/> |
| 93 | + |
| 94 | +GitHub 帮助文档:<https://help.github.com/en>(英文) | <https://help.github.com/cn>(简体中文) |
| 95 | + |
| 96 | +学习资料: |
| 97 | + |
| 98 | +- [github-cheat-sheet](<https://github.com/tiimgreen/github-cheat-sheet>) - 含 GitHub 的各种使用和技巧。 [荐] |
| 99 | +- |
| 100 | + |
| 101 | + |
| 102 | + |
| 103 | +### 2.1 GitHub 基本使用 |
| 104 | + |
| 105 | +1、添加 SSH |
| 106 | + |
| 107 | +打开 Bash:`ssh-keygen`。生成私钥公钥,默认保存在 C 盘的用户目录下。 |
| 108 | + |
| 109 | + |
| 110 | + |
| 111 | +Wiki 的使用: |
| 112 | + |
| 113 | +- [GitHub Wiki 页面的添加和设置 - LPD-iOS](<https://lpd-ios.github.io/2017/07/11/GitHub-Wiki-Introduction/>) |
| 114 | + |
| 115 | + |
| 116 | + |
| 117 | +### 2.2 GitHub 进阶使用 |
| 118 | + |
| 119 | + |
| 120 | + |
| 121 | +如何高效管理 GitHub Star? |
| 122 | + |
| 123 | +1、Astral:<https://github.com/astralapp/astral> |
| 124 | + |
| 125 | +> 一款优雅便捷的 GitHub Star 管理工具。它主要具备以下功能: |
| 126 | +> |
| 127 | +> - 简便的标签系统 |
| 128 | +> - 过滤 & 搜索 |
| 129 | +> - 文档快速阅读 |
| 130 | +> - 便签备注功能 |
| 131 | +> - 完全免费且开源 |
| 132 | +
|
| 133 | +2、The Fucking GitHub:<https://github.com/lvxianchao/the-fucking-github> |
| 134 | + |
| 135 | +> 可以很方便的查看、整理、搜索在 GitHub Star 过的项目。它主要具备以下功能: |
| 136 | +> |
| 137 | +> - 标签系统 |
| 138 | +> - 项目目录系统 |
| 139 | +> - 快速检索 |
| 140 | +> - 多端数据同步 |
| 141 | +> - 免费且开源 |
| 142 | +
|
| 143 | +3、Remu:<https://github.com/zenghongtu/Remu> |
| 144 | + |
| 145 | +> 该插件在兼具前面两款插件功能的情况下,针对 Star 标签添加这一操作做了优化:用户在 Star 完一个项目之后,可以随手给项目打上标签。 |
| 146 | +> |
| 147 | +> 值得一提的是,由于 Chrome 浏览器自带的 storage.sync 数据同步接口仅有 100KB 的存储容量,因此作者采用 gists 来完成同步功能,顺带能查看历史记录,也算是开发上的一个小 trick。 |
| 148 | +
|
| 149 | + |
| 150 | + |
| 151 | + |
| 152 | + |
| 153 | + |
| 154 | + |
| 155 | + |
| 156 | + |
0 commit comments