Git的基础知识与实际操作


笔者最近开始接触github,出于提升自己能力的目的,又学习了git,在这里整理一些有关git的基础知识,希望能够帮助到一些像我一样的萌新朋友。
注意:此文章可能篇幅比较长,建议从头开始慢慢阅读,当然欢迎先收藏起来,遇到问题时进行查阅

基本操作

git init—初始化仓库

想要使用Git进行版本管理,必须先初始化仓库。本篇文章将新建一个名为git-tutorial的仓库(创建位置为D盘),并对它进行一定的操作。
1.新建仓库
首先我们需要在一个合适的位置新建仓库。
$ mkdir git-tutorial
在这里插入图片描述

(默认建立仓库的位置是C盘,若想改变仓库位置,可以先$ cd d: 进入D盘,其他盘同理)
在这里插入图片描述
2.打开文件夹
第一步我们已经建立了名为git-tutorial的仓库,现在打开它
$ cd git-tutorial
在这里插入图片描述
3.初始化
$ git init
在这里插入图片描述
至此,初始化完毕,可以在D盘中看到建立的仓库在这里插入图片描述

git status—查看仓库的状态

git status用于显示Git仓库的状态,十分常用,请务必牢记。
$ git status
例如我们现在使用这一命令
在这里插入图片描述
因为我们的仓库是空仓库,所以没有上传过任何东西。现在我们想向这个仓库中添加一README.md文件
可以使用**$ touch README.md**命令
在这里插入图片描述

这时候再用git status就会显示出一定的状态。在这里插入图片描述

git add 与git commit

相信大家也发现了上图中的一些细节:尽管在D盘中已经有了README.md文件,但是git status 中还是显示 No commits yet.
这是因为我们只是用Git仓库的工作树(工作树用于编辑文件)添加了README.md文件,此文件还没有被记入Git仓库的版本管理对象中。我们需要add 和commit操作。
1.git add—向暂存区中添加文件
$ git add 可以向暂存区(类似于缓存区)中添加文件。添加之后的文件并未进入库管理中。在这里插入图片描述
此时status发生了变化
此时git status发上了变化。
2.git commit—保存仓库的历史记录
使用git add只能将文件输入到暂存区,git commit可以将当前暂存区中的实际文件保存到仓库中。
在这里插入图片描述

$ git commit -m "First commit"

-m " " 表示对于此次版本提交的补充信息。
如果不加-m和""字符串信息也可。
但是需要额外向编辑器加入以下信息。
3.git commit -am ""
这一条命令相当于先后执行了上述的命令1add和命令2commit

git log—查看提交日志

git log 命令可以查看以往仓库的提交日志。包括记录提交或合并(合并以后会讲)的时间等等。
$ git log
在这里插入图片描述

- 只显示第一行
$ git log --pretty=short
只会显示第一行简述信息在这里插入图片描述

- 只显示指定目录、文件的日志
只要在git log命令后加上目录名,便会只显示该目录下的日志。
$ git log README.md
在这里插入图片描述

- 显示文件的改动
如果想查看提交所带来的的改动,可以加上-p参数。
$ git log -p
在这里插入图片描述

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

我们最开始的README.md文件是空文件,我们现在向其中添加数据:“Hello”
在这里插入图片描述
输入**$ git diff**
在这里插入图片描述
"+"号标出的是新添加的行,被删除的行由“-”号标出。

分支的操作

相信或多或少了解过github的同学对于分支这一概念并不陌生。使用git也可以从master分支创建一些分支。
每一个分支和master是相互独立的,我们可以在一些分支上进行一系列操作,再将它们与master主分支进行合并。

git branch—显示分支一览表

$ git branch
可以显示当前的分支在这里插入图片描述
现在只有master一个分支,

git checkout -b —创建、切换分支

1.创建分支
$ git checkout -b first-branch
可以建立一个名为first-branch的分支
在这里插入图片描述
2.切换分支
$ git checkout 分支名
切换分支
在这里插入图片描述
这时候再 $ git branch可以查看所有分支

切换到上一个分支

$ git checkout -
使用这一条命令可以直接回到上一个分支

git merge—合并分支

现在我们想要把first-branch这一个分支与master主分支合并起来,首先需要切换回主分支。
$ git checkout master

然后使用**$ git merge --no-ff first-branch**

可以将两个分支合并起来。
随后会启动编辑器,用于录入合并提交的信息。

这里的 --no-ff 能够防止快进,这里大家可以考虑参考这篇博客
git合并时–no-ff的作用
对于编辑器的进入退出,大家可以参考这一篇博客
如何退出编辑器

git log --graph—以图表形式查看分支

$ git log --praph
可以以图标的形式输出分支
在这里插入图片描述

更改提交的操作

git reset—回溯历史版本

Git的一个极大的特点是可以灵活操作历史版本。借助分散仓库的优势,我们可以在不影响其他仓库的前提下对历史版本进行操作。
$ git reset --hard 哈希值m
可以返回到哈希值为m的历史版本
哈希值可以通过 $ git log命令查看
(或者git log --graph也可以)在这里插入图片描述
图中的commit后的一串字符即为这一个版本的哈希值。

git commit --amend—修改提交信息

我们知道使用git commit命令上传的时候需要有-m "…"的提交上传信息的命令。但是倘若我们不小心把提交信息写错了,可以使用git commit --amend来修改提交信息***(只能修改上一条信息)***
$ git commit --amend
这里同样会进入编辑器,输入想要改变的信息并退出编辑器即可。

git rebase -i —压缩历史

假设我们在提交信息的时候发现内容有误,经过改正之后进行了提交。那么提交的历史中将会记录对和错的两条记录,这显然不是我们想要的结果,因为我们只是一时手误而已,那么我们就需要使用这一条命令。
例如,我们先建立一个feature分支在这里插入图片描述
在README.md文件中故意写错单词feature
(注意这一个操作结束后要使用commit上传一次)在这里插入图片描述
这时我们发现了错误,在README.md中改正在这里插入图片描述
然后进行提交
$ git commit -am “Fix”
在这里插入图片描述
此时记录中会有两次记录,一次输入错误的记录,一次输入正确的记录。我们要把两条记录合成一条完美的记录。
这时使用git rebase命令进入编辑器
$ git rebase -i HEAD~2
查看最近两次的记录。
在这里插入图片描述
pick中第一条为输入错误的记录,第二条为正确的记录。
将第二pick改为fixup 之后退出编译器,会发现这一分支的哈希值有所改变。不再是6c1819c

与远程仓库的联系

我们之前一系列的操作都是在本地进行的,所以我们需要将它推送至远程仓库(即网页版的github),当我们想要更改远程仓库的内容,将其克隆至本地进行修改再推送回去也是一个很好的选择,所以我们要建立本地与远程仓库的联系。

这里我们首先需要在github上建立一个仓库,在code目录下可以获得Github仓库的路径(这里我们建议使远程仓库名和本地仓库名保持一致)
如:git@github.com:用户名/git-tutorial.git

git remote add—添加远程仓库

$ git remote add origin 路径名
Git会自动将远程仓库的名称设为origin(标识符)

分支的推送

在把本地仓库和远程仓库连接起来之后,我们还需要把本地的分支推送至远程仓库中。
首先我们需要切换到想要推送的分支上
如:$ git checkout master
$ git push -u -origin master
即可将master分支推送至远程仓库。

git clone—获取远程仓库

当我们需要操作一些分支时,可以先将远程仓库的内容clone到本地,然后在本地操作,操作结束后再上传至远程仓库中。
$ git clone 路径名
将会把此路径名的仓库保存至本地。具体操作大家可以参考我的另一篇博客。
使用git上传文件

获取远程分支

在我们推送各个分支到远程仓库时,远程仓库会自动生成这些分支,在clone到本地时我们也应该将分支clone下来。
例如
$ git checkout -b classA origin/classB
这里的意思是将远程仓库的classB分支以classA的名字保存到本地仓库。

git push

在我们在某一个分支上进行更改之后
$ git push
即可推送分支。

git pull—获取最新的远程仓库分支

当我们向远程仓库中更新内容后,我们最开始建立的本地仓库并没有更新(因为我们只是在clone下来的仓库上进行了更改)
这时候
$ git pull orign 分支名
可以更新我们的远程仓库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值