Git和GitHub
版本控制(Version control)系统是能让你了解到一个文件的历史,以及它的发展过程的系统。
Git
Git 是一种专为处理文本文件而设计的版本控制系统。 Git 是一个软件,它允许你对将提交的一个系统(或一组)文件的做历史注释。这些提交是在给定时间点对系统做出的差异“快照”。
Github
Github 就是让你把工作(通过Git提交进行注解)存储在了一个指定的在线文件夹(repo)。
Github 能获取 Git 中的提交历史,并将其存储在互联网上,从而能使你可以从任意一台能联网的电脑端访问它。
你在本机(例如:你当前正在使用的电脑)推送(pushing)提交到 Github,然后从另一台新的或不同的电脑上拉取(pulling)这些提交。
GitHub 项目之右上角三按钮作用
- Watch
翻译“观察”。对于别人的项目,默认自己都处于 Not watching 的状态,当你选择 Watching,表示你以后会关注这个项目的所有动态,这个项目以后只要发生变动,如被别人提交了 pull request、被别人发起了issue等等情况,你都会在自己的个人通知中心,收到一条通知消息,如果你设置了个人邮箱,那么你的邮箱也可能收到相应的邮件。 Star
翻译“星”(没有具体意义)。理解为“关注”或“点赞”更合适,表示你喜欢这个项目。GitHub 里有一个列表(GitHub 个人头像,点击看到 Your stars),是收集所有你 Star 过的项目,然后就能快速找到你以前 Star 过的项目了。
类似微信公众号里的收藏功能一样。Chrome 有一个插件就是做这个功能的。
Fork
Fork 相当于你自己有了一份原项目的拷贝,当然这个拷贝只是针对当时的项目文件,如果后续原项目文件发生改变,你必须通过其他的方式去同步。
一般来说,我们不需要使用 fork 这个功能,除非有一些项目,可能存在 bug 或者可以继续优化的地方,你想帮助原项目作者去完善这个项目或者单纯的想在原来项目基础上己维护一个属于自己项目,那么你可以 fork 一份项目下来,然后自己对这个项目进行修改完善,当你觉得项目没问题了,你就可以尝试发起 pull request 给原项目作者了。然后就静静等待他的 merge 邮件通知了。
使用建议:
对于一些可能会经常发生变化的会不定期更新的好项目 多使用 watch;
喜欢一个项目就 star;
修改开源项目就使用 fork,这样你就可以在原项目的基础上,对项目进行修改提交,现在你是这个项目的主人啦;
参考 如何用好 github 中的 watch、star、fork
github 管理 github 项目的两种方法:Http、SSH
- Http url
操作简单(复制 https url 到 git Bash 里,直接 clone 到本地就好了);
可以随意克隆 github 上的项目,而不管是谁的;
https url 在push的时候是需要验证用户名和密码; - SSH url
必须是这个项目的拥有者,且需要先配置 SSH key
SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的;
设置添加SSH
// 运行 git Bash 客户端
$ cd ~/.ssh
$ ls
Eclipse 中使用 Git 维护项目
安装Git
检查 Eclipse 中是否已安装 Git 插件
若没有安装,找资源安装
若是没有Git插件,可以在 Eclipse 的 Market 里面搜索 Egit 插件安装。
或者
打开 Egit 插件列表 找对应地址安装。安装后关联 Gihub账号(即配置用户名/密码,当然也可以在提交 GitHub 项目时的弹框中输入,也是比较省事的)
将项目上传到 GitHub 上维护
- 新建项目
- 改为 Git 仓库
项目 -> 右键 -> Team -> Share Project -> 选Git -> Next,勾选 Use or create repository in parent folder ofproject,选中要发布的项目,点击 Create Repository -> 点击 Finish 。 - 发布项目
项目 -> 右键 -> Team -> Commit -> 将要提交的文件从 Unstaged Changes 区域拖进 Staged Changes 区域,输入 Commit Message -> Commit and Push 或 Commit(然后再 Team -> Remote -> Push)。
涉及术语
- Version Control(版本控制): 一个能够让你了解文件的历史以及该文件的发展进程的系统。
- Git:一个版本控制程序,通过对变更进行注释,以创建一个易于遍历的系统历史。
- Commit(提交):在指定时间点对系统差异进行的注释 “快照”。
- Local(本地):指任意时刻工作时正在使用的电脑。
- Remote(远程): 指某个联网的位置。
- Repository (仓库,简称 repo):配置了Git超级权限的特定文件夹,包含了你的项目或系统相关的所有文件。
- Github:获取本地提交历史记录,并进行远程存储,以便你可以从任何计算机访问- 这些记录。
- Pushing(推送):取得本地Git提交(以及相关的所有工作),然后将其上传到在线Github。
- Pulling(拉取):从在线的Github上获取最新的提交记录,然后合并到本地电脑上。
- Master (branch):主分支,提交历史 “树”的 “树干”,包含所有已审核的内容/代码。
- Feature branch(功能分支/特性分支):一个基于主分支的独立的位置,在再次并入到主分支之前,你可以在这里安全地写工作中的新任务。
- Pull Request(发布请求):一个 Github 工具,允许用户轻松地查看某功能分支的更改 (the difference或 “diff”),同时允许用户在该分支合并到主分支之前对其进行讨论和调整。
- Merging(合并):该操作指获取功能分支的提交,加入到主分支提交历史的顶部。
- Checking out(切换):该操作指从一个分支切换到另一个分支。