命令行配置Github\Gitlab工程

git的仓储(repository)分为远程repository和本地repository。个人通过本地的repository进行开发和版本管理,本地包括working directory, staging area, local repo;多人开发的工程可通过远程repository进行协作(如github网页可以查看的远端git,或者本地服务器搭建的gitlab),整体的关系如下图所示:

 我们先讲解如何创建local repository以及进行代码管理,随后,讲解本地repo和远端repo如何进行互动操作(如何下载remote repository到local repository,以及如何将本地repository贡献到远程repository)。

查看帮助格式如下:

git clone --help
git commit --help

一、本地repsitory管理

1. 概述

熟练进行git代码管理需要了解git的一些一本概念:

首先,了解git的data model, 包括blob object (文件), tree object(结构)和commit object(时间)

  • blob object表示具体的文件的对象,在每次通过git add将working directory的文件添加到staging area时生成,实际就是对应着文件的实体 ;
  • tree object记录着每个文件夹里包含的blob object,即目录的层级关系,每个目录对应着一个tree object;
  • commit object为每次提交产生的对象,记录着提交指向的tree object以及commit的parent节点(即上次提交生成的commit object)。

备注:当一个文件或目录结构发生更新时,不仅会被更新的blob object和tree object会新建,commit后其祖先节点上的所有tree object都会生成新的tree object(因为tree object记录了包含的对象的checksum,一个object的改变会导致其checksum改变,进而改变其父节点的tree object记录的object的checksum的改变,而tree object记录的信息的改变也就改变了tree object本身的checksum,以此类推)。

object文件统一存储在.git/objects中。

详见:https://medium.com/hackernoon/https-medium-com-zspajich-understanding-git-data-model-95eb16cc99f5

为了查看时间维度的commit object的checksum值,可以使用如下命令:

git log

通过如下命令可以查看commit object中记录的内容(包含指向的tree object的checksum值):

git cat-file commit [commit id in git log]

通过commit object记录的tree object id可以进一步查看tree object记录的内容:

git ls-tree [tree object id]

结合tree object指向的blob id,可以通过如下命令查看blob object的内容。

git cat-file blob [blob id]

随后,掌握git的三个区域:working directory, staging area, and the repository。注意:这个三个区域并不对应着三个不同的实体区域来存储不同版本的blob object\tree object实体。真实的情况是:所有不同版本的blob object\tree object都存储在.git/objects中,同时,使用使用.git/index文件来记录working directory, staging area, and the repository中对应的blob object\tree object的版本(checksum值),基于index文件记录的object版本的信息到.git/objects中找对应版本的object来快速构建不同的版本工程。

详见:

https://konrad126.medium.com/understanding-git-index-4821a0765cf

为了显示working directory <=> staging area <=> 本地repository之间的差异,可以使用如下命令:

git status

2. 配置本地git

全局配置:

git config --global user.name "YLY"
git config --global user.email "yly@163.com"

生成本地repository:

cd your_folder_to_upload
git init  //本地仓储初始化,在文件夹中生成了 “.git”隐藏文件,用于接下来存储git的信息。其中,.git/object/里面包含了blob object, tree object, commit object;.git/refs/包含branch的信息;./git/index存储working directory, staging area, and the repository的文件版本信息

3. working directory/staging area/local repo之间的操作

将working directory文件同步到staging area:

git add .   //同步working directory的文件到staging area, “.”表示添加文件夹下的所有文件

另一方面,若开发过程中发现工作区本版出现问题了,想撤销工作区文件的修改,可以把文件恢复到staging area的状态,方法是:

git checkout -- <file>

staging area文件更新到本地repository:

git commit -m "Initial commit"  // 文件存储到版本库区 (Commit History), -m表示输入提交的信息

备注:修改最新的commit message:

git commit --amend

参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yuyuelongfly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值