git原理理解以及常用命令

git原理理解以及常用命令

git作为代码管理的工具,从原理,常用命令,提交流程三个方面进行梳理

git原理

在.git目录下,存放了几种类型的节点文件。
blob:在git add file会生成blob类型节点,也就是add过程添加了索引,并且文件生成了新的节点,被索引指向。
tree:tree节点针对一个索引,该节点记录了当前索引所维护的blob节点。也就是说,文件经过更改,可能会有很多个版本,而tree节点就是对这些节点的连接。
commit:commit操作会生成commit节点。它会将索引快照记录下来。版本便是以commit的使用作为记录。

文件经过更改,会不断地产生新的blob节点,而tree时时刻刻保持着一个所有文件之间的关系,commit节点会找到相应的commit节点,声明在commit操作调用时,当前所有文件add后的最新版本为一个项目版本,提交代码等操作都是根据commit操作产生的commitid为对象进行版本管理的。

git常用命令

git commit -amend
该命令会合并,或者理解为覆盖上一次的git commit的命令,替换掉了commit类型的节点。包括代码的修改以及提交的描述。选择–no-edit可以视为不修改描述。举例当我们发现push到远程的代码有错误,出于既想删除掉远程最新的commit,又想修改该commit重新提交的目的下,可以选择该命令重新push。因为一个需求对应一个commit,项目的提交历史上不希望存在错误的项目版本。同时要注意如果push报错要加-f,amend的提交会更改覆盖掉的commit号,并且如果有其它同事已经拉取了你想要覆盖掉的commit id号,便会可能出现错误。

git push
将本地仓库的代码更新到远程仓库。需要注意的是,push会检测本地历史commit是否与当前最新的commit号一致,这样可以避免在你pull之后,有同事更新了代码而你却不知道。同时会把你HEAD指向的commit节点到pull的commit节点中间所有的本地commit节点一并提交。

git status
查看commit操作之后的修改。

git add
git add .是将项目根目录下的所有文件进行提交。当我们根据需求修改代码的时候,往往是修改了源文件,头文件,以及一些配置文件。但是像.o这样的中间文件是没有必要提交的,尽量使用git add file来说明我们的修改。git add在本地仓库会对修改的文件建立一个新的blob节点并更新索引。或者可以编辑.gitignore文件,通过规则匹配或者直接写文件名,声明git add .提交时忽略的文件。

git rm
和git add 相反的操作,是指将操作从索引区删除。

git log
查看历史的commitid,根据提交信息,选择自己需要的commit版本。

git show commitid
根据commitid查看版本的改动,可以看到每行代码修改的具体信息。

HEAD:本地库的最新commit版本。
HEAD^: HEAD版本的前一个版本,以此类推

git diff commitid
比较当前版本与commitid版本的差异

git remote add name address
name是远程仓库的名字,address是真实地址,通过该命令添加远程仓库,可以在push代码的时候根据仓库名的参数,上传到不同的仓库。

pull / merge、fetch
pull是直接将远程代码更新到工作区,而fetch是将远程代码更新到本地仓库,再由merge操作更新到工作区。相比之下pull暴力直接,而fetch可以允许开发者处理本地代码和最新版本代码的冲突。

git使用流程

git add file(添加修改过的file)
git commit -m “description” (提交,描述尽可能概括修改内容,方便后续版本选择,很清楚明白这次的commit是为了修改什么)
git fetch
git merge
git push origin master

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值