史记官:git 和 GitHub 的功能与益处

GitHub [点击] 是一个代码托管平台,它可以理解为一个以时间轴为重的云端服务器,可以用来追踪每一个文件夹里面文件修改的历史状态,并且让多个人同时编辑同一份文件,在彼此编辑内容不冲突的情况下,完成团队协作。这也是大家喜欢把自己的代码放上去被托管的原因,不论在任何时间点,任何地方,任何人都可以彼此合作,几乎任何情况下都可以让我们以云端的形式,用 GitHub 提升完成项目的效率。

git [点击] 则是一个应用程序,可以在几乎所有的作业系统上面被安装,安装到电脑之后基本上外观而言是没有任何变化的,唯一的变化在于开启命令提示字元之后多了一系列 “git” 相关的指令集,其工作原理基本上与 GitHub 完全一样,可以用来追踪专案文件在不同时间点,经过谁的手修改了什么东西。不过与 GitHub 不同的点在于,git 的操作都是本地的,本地做的追踪,本地做的添加,本地做的保存,直到最后可以让我们用代码的形式连接上 GitHub,然后把本地做的一切行为上传到 GitHub 完成备份。


推荐学习资源


Git 原理 - 本地到云端

在整个工作原理中,档案的追踪与保存记录分成了下面 “五个” 阶段,如下面附图:

  1. Stash 一个随机的资料夹
    它可以是电脑里面任一个已经创建的资料夹,处在这个状态的时候是没有被追踪的,可以使用下面指令把资料夹纳入 git 追踪的范围中:
    git init
    
    初始化一个资料夹,使其被 git 掌控所有历史进程
  2. Workspace 纳入范围的资料夹
    在每个时候我们都可以用下面代码来确认当下状况:
    git status
    不过这个阶段我们看到的状态都是一堆的 untracked files 档名,原因在于上一步 init 创建的 Workspace 是一个纯粹的追踪空间,但是至于要追踪什么,git 没办法聪明到自己知道,需要我们去添加。方式可以是很 picky 的用 add 逐一加上,或是一次全部加上:
    git add .   // or git add A_NAME
    git commit -a    // -a stands for ALL things in the file
  3. Index 也被叫做 staging area
    这是一个在要确定成为本地被追踪,并且存档成为最新版本的文件之前的确认名单状态,通过 git add 把所有要更新的文件都纳入这个范围后,就可以执行下一步更新最近一步修改历程中,使用代码如下:
    git commit
  4. Local Repository 本地专案
    经过 commit 手续之后,这些被纳入追踪的文件算是在本地计算机中完成了最新版本的状态记录,如果这时候用 git status 去查看状态,则没有新的文件是被动过任何未记录的手脚的。
  5. remote Repository 云端专案
    在上传到云端之前,我们还需要完成一些前置作业,在完成步骤 4 的状态下,我们就能够很顺利的用本地的 git 指令登入 GitHub:
    git config --global user.name "A_NAME"
    git config --global user.email "abc@def.com"
    
    git config --list    // to check out the details of the logged in info
    接着要让 local repository 能够顺利连上我们制定的云端服务器上面,因此接着需要使用下面指令:
    git remote add A_NAME AN_ADDRESS_FROM_CLONE
    git remote -v    // this command can help us to check the origin of connecting cloud 
    
    p.s. 不过 remote 的步骤只有在从本地上传到云端的时候需要设定,如果是一个 repository 已经创建在了 cloud 上面,我们 clone 这个 repository 下来的时候,remote 相关的设定就会自动生成。

    一切就绪之后,最后我们就可以使用 push 把 local 的 repository (或者说文件)推送到我们指定的云端位置上面,使用下面代码:
    git push A_NAME_WE_ADDED_IN_REMOTE BRANCH_NAME    // BRANCH_NAME is normally master except we do some further modification behind


上面步骤是最简单的推送过程,还没有牵涉到分支,合并,拷贝等功能后面慢慢道来,下面图片是一个 git 概括性的指令集,使用了模块功能作为区分:


同理 GitHub 上面的操作,只是 GitHub 不用输入指令,全部功能都是图形界面的方式进行,按照上面流程对应的按钮依序为:

  1. New Repository

  2. Create a new file in the repository
  3. commit some changes to files
    最好能够养成习惯在每次 commit 的时候备注是什么东西做了更动,更好在之后浏览历史记录的时候一目了然。
  4. git push
    由于本来就是在 cloud 上面操作的,没有 push 不 push 的问题,直接忽略这步。


Branch / Pull Request / Merge

上面提及的部分都是沿着一个主线道去记录修改历史,但是如果现在有了多种可行方案,我们都想在同一个专案(repository)上面尝试其可行性的话,那么 “分支” Branch 就成为了一个非常好的执行方式,每一个 repository 之中都有一个 default branch(主干线)一开始打开专案,或是默认操作都是汇集到 default branch 之中,在 GitHub 中进到该 repository 页面后,修改方式如下流程:

Setting >>> Branches >>> Default Branch >>> pick one other branch >>> click update

cloud 上创建与合并 branch

不论是 local 或是 cloud 的 repository(repo)中,每一次我们触发 commit 的时候,在时间轴的角度看来,都是一次的节点创建,记录下从上次节点算起的修改内容,而在 GitHub 上面创建一个分支的点选位置如下图:


在框中输入好名字之后就可以创建新的 branch ,并且可以在上面一行中看到这个 repository 目前一共有几个 branches 被创建过。如果要清楚的观看 branches 之间的时间关系和延伸关系,参考下面路径查询:

get into the repository >>> insights >>> network
在新的 branch 下面做的任何事情,都跟主干线下面的版本没有任何关系,两个同样的文件自从分离之后就彼此井水不犯河水,但是如果哪天我们确定了其中一个分支的正确性与合理性,想把分支合二为一,那么 pull request 的使用就成了势在必行的重要环节,按键地点与点击后进入的窗口如下图:


浏览了有哪些改变之后,如果确定没问题就可以合并在一起,分支里面做的修改也会因此与主干线上旧有的版本合并起来。

local 创建与合并 branch

开启命令提示字元视窗,输入如下代码:

git branch A_NAME    // to create a new branch
git branch    // to see how many branches we have and what is the current branch we are staying in
git checkout A_BRANCH_NAME    // to jump to the appointed branch

可以非常直观的利用上面代码在本地创建一个新的 branch,并且使用 checkout 指令实现不同 branches 之间的切换,如果要上传这些改变到 cloud 上面,一样使用的是 push + remote name + branch name:

git push -u origin BRANCH_NAME

如果要把经过修改的不同 branches 合并在一起,这时候没有图形界面的按钮,就需要使用 merge 指令完成:

git branch --merged    // to check what branch is the branch to let others merging into
git merge A_BRANCH_NAME    // to merge the targeted branch into the main branch
完成了合并之后就一样使用 push 更新即可。


Fork

这是一个在 cloud 特有的功能,每个人都有自己的账号,和旗下所属的所有 repositories,有些隐私有些公开,如果哪一天我们看到了一个人参与的公开 repository 非常欣赏,希望能够进一步对里面的代码内容进行优化,同时又不打扰到别人,我们可以使用 fork 按钮把他的所有内容拷贝一份到自己的账号下面,之后就可以随意的删删改改。按钮位置如下:



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值