Git基础使用教程

Git简介

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。它是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git的简单使用

在使用之前我们得先去Git官网上下载安装好。
下载地址我放在下方了,选择适用于自己系统的版本下载即可。
Git下载地址
安装也十分简单(以Windows为例),不需要做任何改变,直接一直下一步即可。
安装好之后便可以进入使用环节了。
我将通过四大场景来介绍Git的使用方法。

场景一:Git本地版本库管理

本场景可能会用到的命令:

git init 						# 初始化一个本地版本库
git status 						# 查看当前工作区(workspace)的状态
git add  						# 把文件添加到暂存区(Index) 
git commit -m "” 				# 把暂存区里的文件提交到仓库
git log 						# 查看当前HEAD之前的提交记录,便于回到过去
git reset -—hard HEAD^			# 向前回退一个版本,加一个'^'回退一个版本
git reflog 						# 可以查看当前HEAD之后的提交记录,便于回到未来
git reset -—hard 				# 回退到指定的版本

想象以下场景:你现在要开发一个新的项目,于是你创建了一个新的文件夹。你希望用Git对这个项目代码进行管理。

你可以使用git init将这个文件夹纳入git的管理下。

此时你在查看下勾选上隐藏的项目,便可以看到文件夹中多了一个.git文件夹。

如下图所示:

新建一个readme.txt文件,通过git add readme.txt命令将其放到暂存区中。

接着我们可以使用git commit -m "新建了readme"将暂存区中所有文件提交到版本库中,引号中的内容可以自己定义用来对这次提交进行说明。

接着我们来对readme.txt进行修改,在其中加入一些内容。如下图所示:

再将其添加到暂存区后进行提交。

提醒:记住,每次修改都要先add再commit

此时用git log命令便可看到两次提交的记录

使用git reset -hard命令可以回到之前的版本,比如git reset -hard f217043a2edebec871d便可回到上次提交(新建了readme)的状态。

此时再看readme.txt又重新变成空白的了。

不过此时使用git log命令发现只有"新建了readme"这个版本了,如下图所示:

若再想回到“添加了内容”这个版本就不能用git log了,可以使用git reflog

我们发现"添加了内容"这个版本又出现了。

此时再用git reset --hard 命令便可再次回到"添加了内容"版本。

场景二:Git远程版本库的使用

此场景下可能用到的命令

git clone					#可以将一个远程仓库克隆到本地。
git fetch					#下载一个远程存储库数据对象等信息到本地存储库。
git push					#将本地存储库的相关数据对象更新到远程存储库。
git pull					#从其他存储库或分支抓取并合并到当前存储库的当前分支。

我们先在GitHub上新建一个仓库,并添加一个readme.md。

在本地的一个文件夹里打开git bash。

在GitHub中将上图选中的部分复制下来,替换git clone xxx命令中的xxx部分,便可以将项目从GitHub上克隆下来。

在本地对README进行编辑提交到本地仓库后,再用git push命令推到远程仓库。再到GitHub上查看,发现README内容已经改变了,如下图所示:

然后先在GitHub上更改一下README的内容,再用git pull命令将更新拉下来。我们发现本地的README文件又和线上的一致了,如下图所示:

场景三:团队项目中的分叉合并

本场景中可能用到的命令:

git branch				#创建分支
git checkout			#切换分支
git merge				#合并分支

我们先用git branch命令创建一个新的分支newbranch,再用git checkout命令切换到这个分支上。

在这个分支上我们新建一个"new_text.txt"文件,并在其中加入一句话。

然后用git checkout命令重新切换回main分支,我们发现之前新建的文件不见了。

再切换回newbranch分支发现new_text又回来了。

接着我们试试看合并分支功能。

我们使用git merge --no-ff命令,这样在合并后newbranch还能作为一段独立的分支段。如下图:

接着我们试着解决冲突。

我们先在main分支和newbranch分支上分别对new_text进行修改。再将newbranch分支合并到main上。果然发生了冲突,如下图:

发生冲突后我们只能手动解决了。

对发生冲突的文件进行修改,决定好要删除哪些保留哪些,然后再提交,冲突便被解决了。如下图:

最后再使用git push命令推到远程仓库中。

场景四:Git Rebase

我们发现之前在分支上的每次修改,在推送到远程仓库后都有体现,如果项目特别大分支以及分支上的修改特别多就会显得杂乱不堪。

接下来我们便试讲这个功能。

我们先在newbranch分支上进行多次修改和提交。如下图:

再使用git rebase -i HEAD^^^对三次提交进行合并(删除前两次提交记录并保存即可)。

此时我们发现只剩下最后一次的提交记录了。如下图:

参考文章:五⼤场景玩转 Git,只要这一篇就够了! 作者:孟宁

posted @ 2020-10-14 01:56  dyc123  阅读(171)  评论(0编辑  收藏  举报