Git基础命令01

之前已经使用Git在GitHub上建立了自己的博客,使用Git也有一段时间了,现在对git的一些命令和作用进行总结。

SVN 与 Git

首先SVN都是集中式的版本控制系统,而Git是分布式版本控制系统。

集中式版本控制系统的缺点就是传输受网速影响较大,且版本库是集中存放在中央服务器,需要从中央服务器取得最新版,然后才开始工作,修改完后,再把内容推送给中央服务器。中央服务器一旦挂了,那就危险了。

分布式版本控制系统没有中央服务器的概念,每个人的PC都有完整的版本库,有各自的版本库管理自己的修改内容。并提供很好的分支合并和冲突解决方式。

以前工作都是使用SVN,现在使用了Git之后,觉得SVN真的是太不人性化了。

常用命令

git clone

使用'GitHub'的过程中一般看到好的开源代码就会忍不住下在下来捣鼓捣鼓,一般会有两种方式下载,一个是DownloadZip,一种就是使用安装好的'Git'(Git安装就不在这里说了),并且在Git命令行使用git clone克隆到本地。

git status

代码通过git clone克隆到本地之后,就可能会有修修改改,因为说Git是一个分布式的版本控制系统,所以克隆下来的代码就形成了一个本地版本库,每一次修改都会被检测到,所以当修改一个文件之后就可以使用git status查看当前工作目录的状态,可以看到哪些被修改了。

git add 和 git commit

修改了相关文件之后就想着提交了,使用过SVN的同学一个都是这样的逻辑。git add 和 git commit正可以满足需求。在将这两个命令之前,要先讲讲Git里工作区和暂存区的概念,我们
克隆下来的目录里可以看到的目录结构被认为是一个工作区,工作区里有一个.git的隐藏目录,这个不算工作区,而是Git的版本库。Git版本库里存了很多东西,其中最重要的就是称为
stage的暂存区。我们在执行git add命令的时候就是把修改添加到了暂存区(stage)里,然后执行git commit命令将暂存区的内容提交到当前分支。对于这块大家也可以查看廖雪峰大神对
工作区和暂存区的解释,文末附上链接。

然后在讲讲命令本身,'git add . '用于提交所有修改内容至暂存区,也可以使用'git add files' files为具体文件名称。然后使用'git commit -m "the commit message"'提交至本地
版本库。

git log

提交完之后,第二天再看可能已经忘记前一天的内容了,这时候需要查看之前提交记录,可以使用'git log'命令,查看当前分支的提交历史记录。'git log'看到的东西太多了,可以使用
'git log --oneline',这样每条log只显示一行。当然还可以加其他的筛选条件,如根据提交作者、提交时间、commit信息等过滤。

git relog

该命令会显示当前分支的最近几次提交。是git用来记录引用变化的一种机制,比如记录分支的变化或者是HEAD引用的变化。

git reset

提交完之后,可能觉得修改的内容不合理,需要回退到上一个版本,这时候需要使用'git reset'命令。在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,
当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。这里其实就是Git使用HEAD作为指针,指向了不同的修改记录。当然也可以使用'git log'查看当前分支的提交历史记录,
查找回退的版本commit_id。使用'git reset --hard commit_id',将HEAD指针指向commit_id对应的版本。commit_id也有可能查不到了,就可以使用git reflog查看你的每一次命令。

01篇暂时就先写到这里,根据之前使用SVN的思路慢慢理清楚Git本地版本库的从拉代码、修改、提交和回退的过程,了解暂存区和工作区概念,初步感受下分布式版本库管理。至此,其实从GitHub上拉代码到提交,我们
都是提交到本地库的,并没有提交到GitHub上的远程仓库。

参考链接:

Git 
更新时间:2020-12-06 10:41:16

本文由 HycJack 创作,如果您觉得本文不错,请随意赞赏
采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
原文链接:https://www.hycjack.cn/archives/git基础命令01
最后更新:2020-12-06 10:41:16

评论

Your browser is out of date!

Update your browser to view this website correctly. Update my browser now

×