git 是一种版本控制软件 (Version Control Software, VCS),VCS 有很多种,现今最主流的就是 git,而这些 VCS 主要都是针对程序领域的,
git 可以监测任何档案是否有编辑过,只要有编辑,他就会保留新旧版本,
厉害的是,只要是文字档案(只有文字没有格式,可以直接用记事本开启),就能像这样指出改了哪些。
此图使用软件呈现。
这对於我们昨天写完,今天就忘的程序码,有很大的帮助,可以用 GUI 的方式看到来龙去脉,也不用怕把程序改坏,我们也还能随时到好几年前,最重要的是,连上远端後,我们能够跟其他人协同编辑同一个专案。
很幸运的,我们的 Android Studio(或 IntelliJ IDEA 系列 IDE)就有 git,而且还很强大,完全不输主流 Git GUI(可以按 ⌘+9 打开界面)。
既然 Android Studio 已经内建工具,为什麽还要用其他 GUI 呢?
因为如果有多个 repo,可能是写不同程序语言,用 Android Studio 来管理就太笨重了,不管是什麽 GUI,都只是在帮忙输入 git 的指令并呈现结果,所以并不需要重学,只要知道这个工具的功能放在哪里就好,市面上的工具不少,选顺手的就好,建议都玩玩看,当工程师後每天都要用。
比较 hardcore 的做法,要会很多指令,界面也比较不友善,会多花许多时间,也有些人觉得下指令就是工程师的浪漫,如果你相信自己比相信 GUI 多,那就用吧。
git 的指令非常多,如果使用的是 GUI,会用到的指令就少了很多,指令的参数也不需要记忆,但如果要使用 GUI,必须清楚了解每个按钮按下去会有什麽结果,另外,其实有些指令并不是必须,而是可以用其他指令组合起来达到相同的目的,这边列举一些常用、必须会的指令:
Android Studio 在 git 方面有多一些其他 Git GUI 都没有的功能,其中一个很好用的,是在 commit 前还能帮忙检查、做些事。
在行数的地方按右键开启。
会显示出谁在什麽时候 commit,点击後会开启该 commit 编辑过的所有档案,再点击档案可以看当时的 diff。
这个内建的 plugin 可以做到 create 新的 PR,也可以 review PR。
甚至还能直接 create gist。
每个协作的团队都有其节奏,什麽时候要在哪一个 branch 上开发、什麽时候 merge、pull 等。
我们要时刻注意流程、自己在哪个 branch 开发,否则会遇到一直在改别人已经改好的东西、改坏别人的东西、难以让人协同开发等问题。
这是个哲学问题,切 commit 可以有很多理由:
但不管是什麽理由,不应该该动太多档案、行数,
但如果是 rename,又会改到一堆档案,但这却没关系,
重点是切开的目的,比方说 PR 容易看、可以容易合并、拔除等。
尽量不要在跟其他人一起协作的 branch 上做 force push,如果对方刚 push 上去就遇到 force push,那他 push 的那些 commit 就会消失,所以要切好 branch,不要共用。
如果发生 commit 或 stash 被砍掉的事件,可以用 reflog 来挽救,
要注意的是,如果没有 commit 或 stash 过,就没办法找回来。
当工程师每天几乎都要用 git,难以想象在还没有 git 的时候,工程师是怎麽做版本控制,我甚至觉得,其他行业也该引入 git 来管理公司的文档资产。
哈罗~今天来聊聊跟@mixin的兄弟 @extend 我们平常在写css时,时常会把class们相同...
NIST SP 800-88 R1引入了三种消毒方法:清除(clear),清除(Purge)和销毁(...
如果我们今天写了两个网页,要如何将他们串联在一起呢?那就要用到a href这个语法了 假设我写了一个...
前言 跟 FP 一样,OOP 到目前已经第三天了,我们来点实战吧! 今天的实战很特别啊,基本上是工作...
接续上一篇 在Startup.cs中启用静态资源 於专案新增目录命名为wwwroot(会自动变成地球...