Source Tree工具与Git使用基础

作者: 匿称也不行 | 来源:发表于2018-01-14 10:47 被阅读100次

算是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技术债还款的第一部分。给自己点个赞😄

相关文章

  • Source Tree工具与Git使用基础

    算是personal tech debt吧,趁周末有时间,把这部分训练一下。这部分是纯粹基础的内容,但对于日常工作...

  • git常用命令和常见问题

    基本命令 clear 清屏 source tree Git界面化工具 git log 中文显示乱码 git 解决 ...

  • git 实际操作指南

    1.gitflow 简介2.实际操作中常用的git命令3.可视化工具source tree使用指南

  • APP开发实战131-Git工具介绍

    33 Git使用 33.1Git工具介绍 Windows上的Git工具建议用:TortoiseGit/Source...

  • Git与Source Tree 的结合使用

    如何在www.github.com上提交我们的代码库来管理我们的版本? 1、先要有个Google Emai的账号,...

  • git学习总结

    前言:使用了这么久的git,一直懵懵懂懂,之前使用source tree进行无脑操作,如今不能依赖source t...

  • Mac Source Tree 每次提交需要输入密码的问题

    使用 Source Tree 每次都需要输入密码比较烦人,使用以下命令就 OK 了。git config --gl...

  • git 基础

    git命令 分支 分支操作 一并讲解在source tree工具下的操作 分支管理策略 master :主分支,稳...

  • Git flow 使用

    git flow是一种git版本管理流程,可用于多人合作的项目研发。本文介绍如何使用source tree中集成g...

  • Git常用命令清单

    之前一直借助于 Source-tree 这种图形化 Git 工具,一次在帮同事解决 Git 分支合并问题时,用的同...

网友评论

    本文标题:Source Tree工具与Git使用基础

    本文链接:https://www.haomeiwen.com/subject/pfzhoxtx.html