Github指南:1
在学习github的使用前,我们得先掌握git。
1.1 git与 git commit
git仓库的提交记录保存的是你的目录下所有文件的快照。就像复制了整个目录,再黏贴。 有几个特点
- git希望提交记录轻量,因此每次提交后,他只会打包所有更新的部分作为一个提交记录。
- git会保存每一次历史记录。因此可以维护提交历史,对大家都有好处。
使用
git commit即可提交。
1.2 git branch
当你搭建炒股bot的时候,你可能会尝试100种策略,但最终你只会使用最赚钱的那个。因此你得回到历史某一个提交节点上。
Git 的分支也非常轻量。它们只是简单地指向某个提交记录.
git branch {随便起个名字。比如说 richbot}
这样就创建好了一个指向当前状态的节点了!
为了回到我们想要的节点,我们需要使用
git checkout (你取的那个名字)
1.3 git merge
我一个trading bot出问题了!我要修复这个bug,但是我的同事正在进一步开发bot,因此我需要在分支上写一个bugfix,再回到main,让主线也包含这个修复bug的插件。
git checkout main
git pull origin main
git merge bugFix ###这个是在main主线上把bugfix的内容merge进去。
git push origin main1.4 rebase
merge虽然好,但是我们有时候想要线性的维护记录,我们希望在主线上这就是一个修复bug的更新,而不是什么莫名其妙的branch,这个时候就可以用rebase。
git branch bugFix | git checkout bugFix
git commit
git rebase main
git checkout main
git rebase bugFix2.0: HEAD
当然,给每一个节点一个branch,可以随时回归,很不错,但是这个设计哲学也太烂了吧! 所以说,我们得掌握在提交树上移动的办法。
HEAD 是一个对当前所在分支的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。
HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。
HEAD 通常情况下是指向分支名的(如 bugFix)。在你提交时,改变了 bugFix 的状态,这一变化通过 HEAD 变得可见。
好在哪怕你不给每一个节点起名,节点自己也有一个40位的哈希值fed2da64c0efc5293610bdd892f82a58e8cbc5d8像这样,你只要输入git checkout fed2然后tab自动补全就好啦!
其实不好。
这tm谁记得住哈希值
还好我们有相对引用
使用git checkout HEAD^即可回到上一条。
^表示上一条。系统的讲,你可以选中一个已有的好记的节点,然后移动到附近。
一条一条返回也有点慢,不如用~批量返回。
还可以用git branch -f (branch名) (位置)来改变分支的指向。
2.1 撤回!
不是Ctrl Z 两套方法。
- 用git reset,直接在本地取消一次提交,回到上一个节点。不过在远端没人知道。
- 用git revert,同样是取消,但是是以新的节点的形式,我的母节点的母节点是我这样方便提交到远端。