Git的详细使用教程(二)

3.Git的内部构造

3.1 HEAD

它可以理解为是我们暂存区里最为重要的东西,其实质是引用的一个文件,这个文件引用的是:refs/heads/下的文件,打开发现有像master的字样,很熟悉的第一反应是跟branch相关。如果之前自己有新建过branch,那么此时也可以看到自己新建过的branch名。当进入以branch名的文件夹下时,利用cat去查看时,实则得到的是一段当前版本的哈希值。由此可以得知,HEAD下存放的是目前工作的是哪个branch。

3.2 config

一般来说,对于所有的config文件,不管是什么里面的,第一反应是某些配置文件。之前在上面也说过,当Git Bash安装后,自己配置一下全局文件,就是对这个文件进行配置,执行的命令是:git config --global user.namegit config --global user.email,当需要对本地文件进行配置时,只需要把global改成local即可。特别注意的是,这里配置本地时,仅对当前文件实施本地配置,其余的还是运用的是全局配置,这一点值得关注一下。

3.3 objects

这是专门存放文件的一个独立文件夹,那么对于objects/pack/这个文件夹,它不是一个版本文件夹而是对于当前目录下有的版本文件夹进行打包处理,节约空间。假设此时需要就某个版本的文件夹查看里面文件到底是什么类型,可以执行git cat-file -t 版本号(哈希值),查询结果包含三种:commit、tree和blob。假设目前获取的类型是tree,此时再去查看一下这个文件夹下的文件,可以执行git cat-file -p 版本号(哈希值),反馈里面有什么文件,假设此时再去查看该文件是什么类型,执行git cat-file -t 版本号(哈希值),那么反馈的blob。所以在这种框架结构下遵循这样的一层逻辑关系:每一个commit,都对应着一个tree和一个blob,其次每一个tree又对应着一个blob。其实这里的tree是一个内存的地址。

4.Git的版本回退(回滚)

个人比较喜欢叫回滚,一个意思,对于Git的版本回滚,从理论的角度上讲,分为以下三种

4.1 暂存区恢复和HEAD一致

个人对于这一层的理解是:在不涉及到工作区的情况下,保持add操作和commit操作两个区域之间的一致性。前期在使用的过程中,分两步走,先add,后commit,当去执行git reset HEAD --文件名,相当于做了一个add的撤销动作,让它恢复原始没有commit的那种环境下,这样就保证了文件和HEAD的文件一致了。但是这里要注意的是,它是撤销add的操作,工作区该文件,修改了就修改了,不会有任何变动的,并且这个操作是不会修改文件内部的信息,不像执行git reset,尤其注意。

4.2 工作区恢复和暂存区一致

这样的回滚类似第一种回滚,当对第二种回滚方式理解完发现,其实就是将顺序倒过来,保持一致性的,这就是回滚的实质。之前我们提交文件是的流程是:编辑文件(工作区)→add→本地同步(暂存区)→commit→推送远程(版本库),那么现在回滚,就是倒着玩,没有技术含量。执行git checkout --文件名,那么这样就会把本地的文件cover掉,实现工作区和暂存区文件一致,顺理成章的事。

4.3 回滚到历史的任意版本

此操作一般来说是在深思熟虑之后,谨慎操作的,因为当去执行git reset --hard 版本号(哈希值),也就是回滚到指定的版本号操作,那么从指定版本号开始往后所有的版本信息将全部被clean且无法恢复。假设指定回滚到开始的第一个版本号,那么你中间commit的所有版本信息将全部置空,所以一般在实际中,很少这么干。

5.Git的忽略文件

简而言之,就是当创建的文件或者文件夹,不想被Git管理时所采取的操作,会有一个专门的名为.gitignore的txt文件,在这里面,可以任意add想被ignore的文件,支持文件,文件夹,通配符。到那时在这里的话也得注意一下,就是在必须先事先想好哪些文件不被管理,如果在被Git管理后,再去add ignore,它将会是无效的,这里是一个盲区,很多人不会去注意。

6.Sync to Github

6.1 GitHub的公私钥配置及创建仓库

这里不多记载,详细参考这里

6.2 同步推送至远程仓库

其实这里在上面的Blog文章里也有讲过,首先将本地和远程进行连接,执行ssh -T [email protected],之后再执行git push -u origin 分支名,成功结束后给到相对应的回馈。

6.3 删除本地和远程仓库的关联

此操作适用于更换远程仓库地址,比方说想从Github远程仓库切换至Gitee远程仓库,执行git remote remove 名字,名字默认是origin.可以验证一下,取消关联是否成功,执行git remote -v,如果没有任何信息反馈,说明已经取消成功,反之失败。当想重新关联新的远程仓库地址时,直接执行git remote add origin URL,就可以关联成功了,也可以自行验证一下。

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2019-2024 Carrol Chen
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信