Source Tree工具与Git使用基础

算是personal tech debt吧,趁周末有时间,把这部分训练一下。这部分是纯粹基础的内容,但对于日常工作,目前来说是够了的,可能和我本身就是Junior的职位有关。

使用基础包括以下两个部分:

  • Source Tree与Git连接
  • Git commit/pull/push/merge/fetch/branch

整个流程配合一个简单的Sample Project。

Source Tree与Git连接

  • 下载及安装Source Tree
    这一步请自行完成。至于为什么要用Source Tree,而不用git命令行工具,这个是个人选择,如果用命令行,可以略过本文,因为本文的重点是在如何用Source Tree使用Git。
    下一步之前,你需要有一个Git账户。
  • 连接Git和Source Tree。
    打开安装好的Source Tree,在右上角⚙️里添加自己的Git账号即可,https和ssh方式都可以,如果你对ssh方式不熟悉,可以先使用https,用账号密码的方式来处理。将来有需要了,可以进一步了解ssh方式。

使用Source Tree进行第一次Commit

  • 拥有一个project
    有一个项目,或者repo,是进行提交的前提。本着简单的角度出发,可以在Github的自己的主页建立一个名字叫做demo的project/repo,然后打开这个repo,点击绿色按钮clone or download,就可以得到https的repo地址,复制这个地址。
  • 连接reop到Source Tree
    在Source Tree小窗选择new-clone from url,填入url后,选择https方式,即可连接完毕。这几步比较简单,如果出现问题,请自行搜索一下解决方案。
  • 初次commit
    当你刚才添加repo到Source Tree之后,其实你做了几件事。
    • 添加repo给Source Tree管理
    • 在本地建立了一个repo
    • 本地的repo与远程repo之间建立了关联

意义:本地和远程的仓库,就像是公司电脑和家里办公的电脑。两台电脑一般来说,希望保持文件一致性(假设你一直工作在一个项目,而不是家里与公司工作内容不同)。但是,这种同步性,并不是自动的,这里就会出现各种各样的问题,以及后续操作的复杂性。这一点先要交代一下,不然后面的工作比较难的理解。

我们假设本地的仓库叫做demo_local,远程的叫做demo_remote,两个仓库都针对一个项目project。这里可能会出现若干种状态,只提出来,不要管解决,先给自己一个现实印象。假设当前两个仓库是保持一致的,文件内容完全统一。然后我们有可能做出改动,从而导致两个仓库内容不同:

  • 我们修改了demo_local;
  • 我们修改了demo_remote;修改demo_remote可以通过很多种方式达到,比如Github网页或者其他人在你的项目提交了内容;
    之后的内容,就会在这种不同的基础上,提一下我们的解决办法。但在此之前,逻辑上我们得提出目的:有不同,我们需要做什么?比如:
  • 我们修改了demo_local,我们希望远程也更新这部分修改;
  • 修改了demo_remote,我们希望本地也能与远程保持一致;
    对,这就是我们的目的,到这里,可能比较能理解,操作其实比较容易的。
    先说最基本的,我们要改一下本地的内容。

你可以随意在demo文件夹增加一个文件,比如说test.java,然后会发现source tree中出现了这种改变,此时我们可以commit,并选中push change immediately to ...这样,第一个commit就完成了,同时,远程也同步了这次commit。

commit & push

刚才进行的两个操作就是:先本地提交,再上传更新到远程。
如果你不选择push...选项,那就是只有本地提交,可以之后再push,分开进行。如果是这样,Source Tree会用标记1提示你,你有一个本地commit没有提交到远程。

简单的部分结束了,接下来的部分,得自己通过项目感受一下

接下来的内容,是理解一下Source Tree的每个按钮。我没有按照项目顺序来说这部分。如果希望step by step tutorial,可以搜寻其他的文档,有很多。这里只说每个按钮的意义和作用分别是什么。至于他们怎么和demo关联,请自己尝试项目后,再来看下面的内容是什么意思。

下面的按钮,并未按照Source Tree界面的顺序来。可能每个人心里都有一个“不懂”-“懂”的顺序,从而有希望优先理解的顺序。

  • Fetch按钮
    从远程获取内容,比如其他人,或者你自己用其他工具/电脑提交了更新,本地的repo不知道,需要fetch才行;
    Fetch并不专门针对某一个分支,而是会将所有的分支更新都拉回来。
  • Pull按钮
    将从远程拉取的更新,并入到本地;比如其他更新在远程已经有了,但本地没有同步,先Fetch后,pull就会真正并入,Fetch相当于change,pull相当于apply change;
  • Push按钮
    在本地的更新,commit,如果不与remote同步,会保持在本地,同时push按钮会出现本地更新commit的次数,如果需要与远程同步,就用push。
  • Branch按钮
    新建分支,或者删除现有分支
  • Merge按钮
    当希望将远程的其他分支并入当前分支,比如master更新了,希望将本地branch1中并入master的改动,那么就需要merge。
    merge需要选择对象。比如master做了两个commit改动,G1和G2,只希望并入G1,那么就选择G1的master节点,并入当前branch1,同时处理冲突。
    Merge的意思,是将别的分支的内容,合并到当前分支,这里需要注意,合并的意思是:我知道master修改了,我已经将改动的部分拉回来看了,有冲突,我选择了希望保留的部分,也保留了自己想要的却和master不一样的部分。处理完冲突后,merge完成,完成的内容并不是以master为准的。graph会出现分支合并的形状,注意这里表示的是动作,而不是内容。我做出了合并的动作,但合并的内容还是branch1自己决定的。
  • 冲突处理
    冲突出现后,比如希望merge master的内容,点了merge后,出现了冲突,处理的顺序是,首先在文件中处理,哪些更新需要保留,那些需要修改;
    修改完成后,重新commit因此,就会完成合并动作。
  • Pull request
    这个和Merge就不是一个意思了,Pull request是指将当前branch1的内容,提交至master,也就是分支的工作,合并入master主体工作,代表着分支工作的完成,因此,预期是分支在此之后就不会再存在了,所以,流程是不同的。
    Pull request发出后,首先也是要处理冲突,选择好要处理的部分,确认提交后,就可以完成merge了。
    这里的merge一旦完成,两个分支master和branch1就会保持一致了,这个和merge完全不同,这里的意思是:我做出了要求合并入master的动作,合并的内容能否通过由master冲突处理决定,一旦处理完成,branch1的内容也会和处理的结果保持一致。
    理论上来说,完成了pull request之后,分支就可以不要了,但如果想保留,其实不删除的话,还是可以继续更新的,就如同是刚刚从master建的分支一样。

其实,看过不少git的教程,但其实最真实的感受就是:你得感觉得到需求在哪里,才能理解那些设置的原因是什么。同时你得理解逻辑过程,才能理解每个操作可能出现的问题和后果。

此篇稍微记录一下对于Git技术债还款的第一部分。给自己点个赞😄

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,547评论 4 374
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,787评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,175评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,752评论 0 223
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,169评论 3 297
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,056评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,195评论 2 321
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,980评论 0 214
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,724评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,872评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,344评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,667评论 3 264
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,379评论 3 245
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,202评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,992评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,189评论 2 286
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,987评论 2 279

推荐阅读更多精彩内容