git命令基础

借用一句话:git是目前世界上最先进的分布式版本控制系统(没有之一)。网上有非常多的文章介绍关于git命令的原理和使用。本文介绍一些基础命令,适合新手学习,高手请忽略:)

git命令基础_第1张图片
图1

上面这个图是很久之前画的,在这儿重新搬出来。麻雀虽小五脏俱全,图中包括了提交和撤销提交的基础命令。本文就结合这张图学习下git基础命令。

图中包括了2条主线,一条是从左向右,即提交代码,另外一条是从右向左,即回退代码。为毛要有回退代码呢?在提交的代码的过程中,大部分情况下是顺利的,但是仍有那么小部分情况没那么顺利,这个时候回退代码就会派上用场。当然对大部分开发者来说,最主要的还是提交代码。

先介绍下本地仓库和远程仓库。所谓本地仓库就是个人计算机上的仓库,也就是我们直接编辑和修改代码的仓库。本地仓库的创建方式有多种,可以由个人在本地创建,也可以从服务器克隆。大多数情况还是从服务器克隆,例如从github上clone一份代码时,其实就是将服务器上的远程仓库拷贝了一份到本地来,形成了一份本地代码仓库,仓库的信息在一个.git文件夹中,默认是隐藏的。远程仓库就是服务器上的代码仓库。一般来说,开发流程是这样的:首先在服务器上创建仓库,开发者将远程仓库clone到本地并行开发,然后将本地修改的代码通过本地仓库推送到远程仓库。下面就分分几个部分看看git基础命令。

1.本地仓库和远程仓库交互

两个仓库之间的交互无非就是两个方面,一个是从远程仓库更新代码(git pull),另一个就是把本地仓库的代码推送到远程仓库(git push)。这两个命令是仓库交互中用的最多的命令。

2.提交代码

提交代码,就是把本地修改的代码提交到本地仓库,完成这一步后,才能执行git push 将本地仓库的代码推送到远程仓库。把图1中的提交代码主要流程摘出来,如图2

图2

图中的方框表示状态。

(1)修改本地文件(包括新建文件,编辑已有文件和删除文件);

(2)命令行中执行 git add 文件名(对于删除文件,使用git rm 文件名);

(3)执行git commit,此时会弹出编辑器提示输入描述;

(4)输入这次提交代码的简要描述(便于查找)然后退出编辑器。

经过上述4个步骤,2条git命令,就将本地修改的代码提交到本地仓库。顺利的情况下,此时执行 git status查看下本地仓库的状态,会得到一个working directory clean 的提示。同时用git log命令可以看到刚才的提交记录,提交记录中有输入的提交描述。这个时候使用git push 就可以将刚才修改的代码推送到服务器,其他开发者更新代码后就会看到你的提交了。

再看一下提交代码过程中可能用到的命令:

(1)git status:这是一个经常使用的命令,用于查看本地仓库状态。命令会列举出本地修改(包括增加,编辑和删除)的文件以及分别处于什么状态。

git命令基础_第2张图片
图3

(2)git diff :查看本地修改的代码和原始代码的差异。这个命令适用在修改阶段,即修改了代码之后、执行git add/rm 命令之前的阶段。如果已经处于暂存阶段(执行了git add/rm命令),只需加上参数--cached,即git diff --cached即可查看修改的详细内容。

(3)git commit --amend:补充提交。适用阶段为在提交后(git commit)推送前(git push)。当已经完成了提交后,发现有文件不小心漏掉了,或者提交了之后发现提交描述写错了,这个时候就可以使用git commit --amend命令进行补充提交。

(4)git log:查看提交记录。命令会列出本地仓库中所有人的提交记录,记录中包括提交人,提交描述,日期和hash号等信息。如果要查看某次提交的详细内容,可用git log -p hash号或者git show hash号查看,其中hash号是在提交的过程中系统生成的40位长的字符串。

3.回退

这个是提交代码的反向过程,如图1中从右指向左侧的箭头所示。这一块的操作都是在本地仓库进行的,不会对远程仓库产生影响。

(1)从提交状态回退

假如本地仓库中最新的提交hash为a,然后我们在这个基础上提交了一次hash为b。那么如下两个命令含义为:

git reset --hard a:首先从仓库中删除b,强制代码回退(同步)到a指向的位置,同时b的修改不会保留。

git reset --soft a:区别在于会保留a之后的修改,因此b的修改会保留下来(处于暂存状态)。

(2)从暂存状态回退

git reset HEAD 文件名

(3)从修改状态回退

git checkout 文件名

4.总结

提交过程:git add ,git commit

回退过程:git reset HEAD,git reset --hard/soft

在提交代码的过程中,搞明白自己处于哪种状态,以及要到哪种状态,然后执行相应的命令即可。

你可能感兴趣的:(git命令基础)