前言

终于到了我们的git工具环节了,掌握git是我们每个程序员都必备的技能,今天就从里到外完全的介绍一下git工具,并且教你上传github项目。

一、什么是git?

我也不去百科上搜什么官方解释了,就用大白话跟大家说下。相信大家肯定都知道GitHub吧,对我们程序员来说GitHub就是宝藏库,上面有着全球开源的各种项目,而git就是管理github的一个工具。在开发项目的时候,一个大型项目开发周期都是按年来算的,随着项目版本不断迭代,如果我们开发到一半想去找回以前开发的项目版本,我们不可能重头再写一遍,所以linux之父就发明了git工具,git可以帮助我们回滚的过去的版本,极大提升了我们的项目开发效率。

二、git基本结构

工作区:仓库的目录。工作区是独立于各个分支的。
暂存区:数据暂时存放的区域,类似于工作区写入版本库前的缓存区。暂存区是独立于各个分支的。
版本库:存放所有已经提交到本地仓库的代码版本
版本结构:树结构,树中每个节点代表一个代码版本。

三、git基本命令

首先先说一下,学git不能像shell,vim这些知识点一样,有个模糊大概的理解在用到的时候才查知识。git虽然是一个工具,但是操作起来非常繁琐。所以在这里介绍命令的时候,我会边跟着开发一个项目介绍。

1.创建一个本地项目,并且把本地项目设置成仓库

首先我们要在本地端设置用户名还有邮箱地址
git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中
git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中
然后用命令 mkdir project 创建一个文件夹叫 project
最后用 git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中
这样大家就创建好了一仓库了。
在这里插入图片描述

2.项目创建内容,并把项目内容提交到暂存区

git add XX:将XX文件添加到暂存区
git add .:将所有待加入暂存区的文件加入暂存区
git rm --cached XX:将文件从仓库索引目录中删掉
git commit -m"给自己看的备注信息":将暂存区的内容提交到当前分支
git status:查看仓库状态

大家先用命令 vim temp.txt创建一般文本,然后里面写111,这样我们就相当于在工作区修改了内容。
工作区的内容必须先用 git add .将所有待加入暂存区的文件加入暂存区,然后我们可以用git status:查看仓库状态。然后会展示你一个可以提交到主分支(master)上的文件状态。在这里插入图片描述

最后我们只需要git commit -m xxx" 把文件内容提交到主分支上。在这里插入图片描述
这样我们就完成了一次项目。

3.查看历史项目以及项目回滚

git diff XX:查看XX文件相对于暂存区修改了哪些内容
git log:查看当前分支的所有版本
git reflog:查看HEAD指针的移动历史(包括被回滚的版本)
git reset --hard HEAD^ git reset --hard HEAD~:将代码库回滚到上一个版本
git reset --hard HEAD^^:往上回滚两次,以此类推
git reset --hard HEAD~100:往上回滚100个版本
git reset --hard 版本号:回滚到某一特定版本

我们可以重复上面操作几次,将内容迭代多几次。这样我们才能完成回滚操作。我们复习一遍,重复上面的内容,然后在之前的111下在加一个222。
在这里插入图片描述
好了有了两个结点后,我们就可以开始回滚操作了。回滚操作可以使用上面的命令,在这里我使用 git reset --hard HEAD^ 回滚到上一个版本。回滚成功后,就会发现头指针(HEAD)指向了上一个版本。
在这里插入图片描述
并且可以在看看你之前的temp.txt文件,会发现你之前写入的222不见了,只有111。这是因为我们回到了上一个版本,到现在你应该大概明白git是怎么运作了吧。现在你可以尽管尝试用刚刚介绍的其他命令,git log:查看当前分支的所有版本,或者通过别的命令跳转到下一个结点。

4.将本地项目传到GitHub

git remote add origin git@github.com:xxx/XXX.git:将本地仓库关联到远程仓库
git push -u (第一次需要-u以后不需要):将当前分支推送到远程仓库
git push origin branch_name:将本地的某个分支推送到远程仓库
注:这个给一个推送的主分支的例子:git push origin master
在上传项目之前,需要给GitHub设置一个ssh密钥,如果不懂的话请看这里有ssh获取密钥的介绍。在这里插入图片描述
我们把下面一大串东西复制后,到GitHub上,点setting,左边栏会有一个ssh添加,把你那一大串东西复制进去就可以了。
在这里插入图片描述
那现在我们就可以开始来传项目了。首先我们创建一个新的项目,注意名字与本地项目一样。创建进入后注意点成ssh模式。你可以看看里面那些命令,是不是大部分都是我们刚刚用的,接下来只要把git remote add origin git@github.com:leoyongyuan/project.git复制到本地上运行,在执行git push -u origin master 就可以了,注意后面的main要换成master,因为GitHub现在把主分支设置成master了不是以前的main。在这里插入图片描述
执行完看到下面情况就是运行成功了。接下来去你的GitHub页面刷新一下,刚刚那个项目就出来了。至此,本地传云端的大概操作就这些了。
在这里插入图片描述

5.将GitHub项目拉到本地

现在出现一种情况,有个小伙伴想和你一块开发一个项目。对于突如其来的开发小伙伴的支持,你当然是很乐意的。这时候你就需要把你的GitHub项目传给小伙伴了。这我们只需要熟悉一条命令即可。
git clone git@github.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下
现在我们用命令退出用cd ..到家目录下,然后运行rm project -rf把刚刚我们的项目删掉,假装我们就是那个小伙伴。
在这里插入图片描述
执行完毕后,看到上面的运行结果就是传输成功了。可以运行一下ls,就会看到出现了一个project文件。

总结

本文我们介绍了git的一些基本的操作,并且教了如何在本地传项目到GitHub,这只是git内容的一部分而已。git还有分支处理,请注意刚刚我们的所有操作都是在mater上的,对于多人同时开发,分支就显得非常重要了,这个部分我们放在下一章吧。在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐