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^^^
对三次提交进行合并(删除前两次提交记录并保存即可)。
此时我们发现只剩下最后一次的提交记录了。如下图: