一、Git指令的基本操作


1、git init:初始化仓库
2、git status:查看仓库的状态

工作树和仓库在被操作过程中,状态会不断发生变化。在Git操作过程中常用git status 来查看当前状态,是基本的操作。

3、git add:向暂存区中添加文件
如果只是利用Git仓库创建了文件,那么文件并不会被记入Git 仓库的版本管理对象中,只创建文件,然后使用git status,得到的结果就是:Untracked files。
要想让文件成为Git仓库的管理对象,就需要git add 命令将其加入暂存区(临时区域)。

4、git commit:保存仓库的历史记录
git commit命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。
①记述一行的提交信息:
git commit -m “First commit”
其中-m参数后“First commit”称作提交信息,是对这个提交的概述

②上面只是简单地记述了一行信息,如果需要更多的说明,那么直接执行 git commit 命令,然后编译器会给额外的地方来记录更加详细的信息。

5、git log:查看提交日志
git log指令的作用:可以查看仓库中提交的记录。包括可以查看什么人在什么时候进行了提交或合并,以及操作前后有怎样的差别。

9f129…表示本次提交的哈希值;
author表示我们给Git设置的用户名和邮箱地址;
data表示提交的额日期和时间

①只显示提交信息的第一行
如果在一个项目中存在多人多次修改,那么这是使用git log 显示的内容就比较多了,看起来会很杂,这个时候使用 git log --pretty=short 命令,可以只显示一行

②只显示指定目录、文件的日志
只要在git log命令后面加上目录名,便会只显示该目录下的日志。如果加的是文件名,那么只显示与该文件相关的日志。git log readme.md

③显示文件的改动
如果想查看提交所带来的的改动,可以加上 -p 参数,文件的前后差别就会显示在提交信息之后。
git log -p readme.md

git diff :查看更改前后的差别


这个命令可以查看工作树、暂存区、最新提交之间的差别。

①查看工作数和最新提交的差别
如果现在执行git diff命令,由于工作树和暂存区的状态并无差别,结果什么都不会显示,要查看与最新提交之间的差别,请执行以下命令:git diff HEAD

这里的HEAD是指向当前分支中最新一次提交的指针。
【注】我们在实际使用过程中,可以在执行git commit 命令之前,先执行git diff HEAD 命令,查看本次提交和上次提交之间有什么差别,确认完毕之后再进行提交。

二、分支操作


分支的概念很重要,尤其是团队协作的时候,假设两个人都在做同一个项目,这个时候分支就是保证两个人能协同合作的最大利器了。举个例子,A,B两人都在做同一个项目,但是不同的模块,这个时候A新建了一个分支a,B新建了一个分支b,这样A、B做完的代码的改动都在各自的分支上面,互不影响,等到两人都把各自模块做完了,最后再统一把分支合并起来。

执行git init 初始化git仓库之后,会默认生成一个主分支master ,也是你所在的默认分支,也是实际开发正式环境下的分支,一般情况下master 分支不会轻易直接在上面操作的。

1、git branch:显示分支一览表
git branch 命令可以将分支名列表显示,同时确认当前所在分支。


2、git branch a:创建分支a
如果我们想要在默认分支基础上新建一个分支,直接执行git branch a 即可实现创建名称为a的分支,这时候分支a和分支master 是一模一样的内容,我们再输入 git branch 查看当前分值情况:

可以看到出现了a分支,第二行 * 符号后面是master,表示我们正在master的分支下。

3、git checkout a:切换到分支 a
我们如果想切换到分支a 进行开发,只需要执行git checkout a,这个时候我们可以再使用 git branch 查看当前分支情况:

【注】:先新建再切换,未免很麻烦,也可以直接使用git checkout -b a 一步到位。

4、git merge:合并分支
我们在各自的分支上面完成工作后需要将代码合并到master分支上来。①先切换至master分支上来。②执行 git merge a 。这个时候a分支的代码就合并过来了。

5、git branch -d:删除分支
假如这个分支新建错了,或者a分支的代码已经顺利合并到master分支来了,那么a分支没用了,需要删除,这个时候执行 git branch -d a 即可。

【注】有时候可能会删除失败,如果需要强制删除,可以执行:git branch -D a

6、git tag :代码版本
我们在客户端开发的时候经常有版本的概念,比如v1.0、v1.1之类的,不同的版本肯定对应不同的代码,所以我们一般要给我们的代码加上标签,这样假设v1.1版本出现bug,但是不知道v1.0是不是有相同的bug,有了版本标签就可以顺利切换v1.0版本的代码了。

①git tag v1.0:为当前代码新建v1.0标签
②git checkout v1.1:切换v1.1标签下的代码

三、更改提交的操作


1、git reset:回溯历史版本
Git 的另一个特征便是可以灵活操作历史版本。借助分散仓库的优势,可以在不影响其他仓库的前提下对历史版本进行操作。

①回溯到 feature-A 分支前:

hard 后面是feature-A创建之前时间的哈希值

②创建fix-B 分支:

作为这个主题的作业内容,我们在README.md中添加一点文字:

提交:


向GitHub 提交代码
1、SSH
当你拥有一个 GitHub 账号之后,就可以自由地clone或者下载其他项目,也可以创建自己的项目,但是你没法提交代码。提交代码需要特定的授权,而GitHub 上面一般都是基于SSH授权的。

什么是SSH呢?简单点就是一种网络协议,用于计算机之间的加密登录。目前是每一台Linux 电脑的标准配置。而大多数Git 服务器,都会选择使用SSH 公钥来进行授权,所以想要在GitHub 上面提交代码,第一步就是要先添加SSH key 配置。

2、生成SSH key
3、GitHub上添加SSH key
4、Push & Pull

在提交代码之前我们要先了解两个命令,因为这两个命令需要跟远程仓库配合。

① Push:推。 如果你本地代码有更新了,那么就需要吧本地代码推到远程仓库,这样本地仓库跟远程仓库就可以保持同步了。
git push origin master :把本地代码推到远程master 分支

② Pull:拉。 如果别人提交代码到远程仓库,这个时候你需要把远程仓库的最新代码拉下来,然后保证两端的同步。
git pull origin master:把远程最新的代码更新到本地。一般我们在push 之前都会先pull,这样不容易冲突。

5、提交代码
添加SSH key成功之后,我们就有权限向GitHub 上我们自己的项目提交代码了,而提交代
码有两种方法:
①:Clone自己的项目 我们以我在 GitHub 上创建的 test 项目为例,执行如下命令:

这样就把 test 项目 clone 到了本地,你可以把 clone 命令理解为高级点的复制,这个时候该
项目本身就已经是一个git 仓库了,不需要执行 git init 进行初始化,而且甚至都已经关联好了
远程仓库,我们只需要在这个 test 目录下任意修改或者添加文件,然后进行 commit ,之后
就可以执行:

②:关联本地已有项目 如果我们本地已经有一个完整的 git 仓库,并且已经进行了很多次 commit
,这个时候第一种方法就不适合了。
假设我们本地有个 test2 的项目,我们需要的是在 GitHub 上建一个 test 的项目,然后把本地
test2 上的所有代码 commit 记录提交到 GitHub 上的 test 项目。
第一步就是在 GitHub 上建一个 test 项目,这个想必大家都会了,就不用多讲了。
第二步把本地 test2 项目与 GitHub 上的 test 项目进行关联,切换到 test2 目录,执行如下命
令:

什么意思呢?就是添加一个远程仓库,他的地址是 git@github.com:stormzhang/test.git ,
而 origin 是给这个项目的远程仓库起的名字,是的,名字你可以随便取,只不过大家公认的
只有一个远程仓库时名字就是 origin ,为什么要给远程仓库取名字?因为我们可能一个项目
有多个远程仓库?比如 GitHub 一个,比如公司一个,这样的话提交到不同的远程仓库就需要
指定不同的仓库名字了。

查看我们当前项目有哪些远程仓库可以执行如下命令:

接下来,我们本地的仓库就可以向远程仓库进行代码提交了:

就是默认向 GitHub 上的 test 目录提交了代码,而这个代码是在 master 分支。当然你可以提
交到指定的分支,这个之后的文章再详细讲解。

对了,友情提醒,在提交代码之前先要设置下自己的用户名与邮箱,这些信息会出现在所有
的 commit 记录里,执行以下代码就可以设置:

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐