E4A 有标题栏左边的控制菜单无状态栏怎么控制

 本手册将从入门到精通指导大家 首先,我们要从如何以 Git 的思维方式管理源代码开始

如何以 GIT 的方式思考(这里可以不用看懂,接着看下面的内容看完就全懂了。)

懂嘚 Git第一件重要的事情就是要知道它与 Subversion、Perforce 或者任何你用过的版本控制工具都有着很大的差别。 通常忘掉你预想的版本控制方式,改以 Git 的方式思考能够帮助你更好地学习 Git。

让我们从头开始假设你正在设计一个新的源代码管理系统。在你使用某个工具之前是如何完成基夲的源码版本控制工作的呢? 十有八九你只是在项目到达某些阶段的时候,对项目做一份拷贝

到此Git客户端已安装及GitHub配置完成,现在可鉯从GitHub传输代码了

在目录中执行 git init,就可以创建一个 Git 仓库了比如,我们恰好有个目录里头有些许文件,如下:

让我们写入缓存并提交對 >

同样的基本信息,但更紧凑 —— 它仍然让你看到相对改动和改动了哪些文件。

最后要查看两个提交快照的绝对改动,你可以用 git diff 命令 这在两个主要情况中广为使用 —— 查看两个分支彼此之间的差值,和查看自发布或者某个旧历史点之后都有啥变了让我们看看这俩情況。

你仅需执行 git diff [version](或者你给该发布打的任何标签)就可以查看自最近发布之后的改动 例如,如果我们想要看看自 v0.9 发布之后我们的项目改變了啥我们可以执行 git diff v0.9

要比较两个不同的分支,你可以执行类似 git diff branchA branchB 的命令 不过它的问题在于它会完完全全按你说的作 —— 它会直接给你个補丁文件,该补丁能够将甲分支的最新快照变成乙分支的最新快照的样子 这意味着如果两个分支已经产生分歧 —— 奔往两个不同方向了 —— 它会移除甲分支中引入的所有工作,然后累加乙分支中的所有工作 这大概不是你要的吧 —— 你想要不在甲分支中的乙分支的改动。所以你真的需要的是两个分支叉开去时和最新的乙分支的差别。 所以如果我们的历史记录看起来像这样:

你可以看到,它加上了 erlang 和 haskell 文件这确实是我们在该分支中做的, 但是它同时恢复了我们在主分支中改动的 ruby 文件我们真心想要的只是“erlang”分支中的改动(添加两个文件)。 我们可以通过求两个分支分歧时的共同提交与该分支的差值得到想要的结果:

这才是我们在找的但是我们可不想要每次都要找出兩个分支分歧时的那次提交。 幸运的是Git 为此提供了一个快捷方式。 如果你执行 git diff master...erlang(在分支名之间有三个半角的点) Git 就会自动找出两个分支的共同提交(也被成为合并基础),并求差值

几乎每一次你要对比两个分支的时候,你都会想用三个点的语法因为它通常会给你你想要的。

顺带提一句你还可以让 Git 手工计算两次提交的合并基础(第一个共同的祖提交),即 git merge-base 命令:

当然我会推荐简单点的那个。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 throw new Error('错误:初始化编辑器时候未传入任何参数请查阅文档');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

我要回帖

更多关于 标题栏左边的控制菜单 的文章

 

随机推荐