下载APP 编程狮,随时随地学编程
返回 首页

沉浸式学 Git

开始阅读
手册说明:


《沉浸式学 Git》学习指导


Git这门课程说难不难,但也不是很简单,光看理论肯定是不行的,所谓实践出真知,本手册包含的52个实验能让您快速学习Git,每个实验的内容足够精简,避免您在学习的过程中产生厌倦,是一本绝佳的学习Git的秘籍。但是在学习之前您可能要拥有以下“气质”:

  • 花时间去学习Git的基本操作
  • 从简单的Git工作流开始
  • 不要再害怕犯错误
  • 理解分支概念
  • 学习暂存区
  • 用Git图形界面
  • 对自己承诺你会用Git

Git 简史


同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代。Linux 内核开源项目有着为数众广的参与者。绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。到 2002 年,整个项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了免费使用 BitKeeper 的权力。这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统制订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许上千个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。它的速度飞快,极其适合管理大项目,它还有着令人难以置信的非线性分支管理系统(见第三章),可以应付各种复杂的项目开发需求。

Git的功能特性:


一般开发者的角度来看,git有以下功能:

  • 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
  • 在自己的机器上根据不同的开发目的,创建分支,修改代码。
  • 在单机上自己创建的分支上提交代码。
  • 在单机上合并分支。
  • 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
  • 生成补丁(patch),把补丁发送给主开发者。
  • 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
  • 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

  • 查看邮件或者通过其它方式查看一般开发者的提交状态。
  • 打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
  • 向公共服务器提交结果,然后通知所有开发人员。

Git相关教程:

《Git教程》

《Pro Git 中文版》

《Git 使用手册》

版权信息


《沉浸式学 Git》原文地址:http://igit.linuxtoy.org/

经译者徐小东授权转载整理至W3Cschool 。

目录
Git 关于
1. Git 设置
2. Git 再谈设置
3. Git 创建项目
4. Git 检查状态
5. Git 做更改
6. Git 暂存更改
7. Git 暂存与提交
8. Git 提交更改
9. Git 更改而非文件
10. Git 项目历史
11. Git 如何设置别名
12. Git 如何获得旧版本
13. Git 给版本打标签
14. Git 撤销本地更改
15. Git 撤销暂存的更改
16. Git 撤销提交的更改
17. Git 从分支移除提交
18. Git 移除 oops 标签
19. 修正提交
20. Git 移动文件
21. Git 再谈结构
22. Git 内幕:.git 目录
23. Git 内幕:直接处理 Git 对象
24. Git 创建分支
25. Git 导航分支
26. Git 在 master 中更改
27. Git 查看分叉的分支
28. Git 合并
29. Git 创建冲突
30. Git 解决冲突
31. Git 变基 VS 合并
32. Git 重置 greet 分支
33. Git 重置 master 分支
34. Git 变基
35. Git 合并回 master
36. Git 多个仓库
37. Git 克隆仓库
38. Git 回顾克隆的仓库
39. Git 何为Origin?
40. Git 远程分支
41. Git 更改原始仓库
42. Git 取得更改
43. Git 合并拉下的更改
44. Git 拉下更改
45. Git 添加跟踪的分支
46. Git 裸仓库
47. Git 添加远程仓库
48. Git 推送更改
49. Git 拉下共享的更改
50. Git 托管你的 Git 仓库
51. Git 共享仓库
52. Git 高级/将来的主题

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }