在IDEA上使用Git/Github 的学习笔记(详细)

如何在idea上使用Git/Github的学习教程

寒假到了,又到了博主日常假期立flag,今天就做一个git学习笔记,用来记录和分享学习程序员必备技能之——git/github

首先,安装和配置git我就不多说了,网上教程多如牛毛。我这里要讲的就是,在安装完之后,怎么将实践结合起来学习git。

需要跟着我这篇博文一步步的实践就可以对git有所了解。

 

创建项目文件,对项目动一些手脚:

首先在idea里面创建一个简单的java项目,起名字叫TestGithub

在这里,我创建了一个Main文件,输出helloworld。然后呢创建了一个空的package,叫做pojo。

熟悉IDEA里面的命令行操作:

做完上面这些铺垫之后,首先我们要实践的内容就是,学会使用idea里面的命令行他在哪里呢?

这个就是idea里面的命令行,terminal是终端的意思。在这个命令行里面,我们相当于是打开了Windows里面的cmd命令行

我们可以执行一些熟悉的操作,比如:进入文件夹pojo/或者清屏ctrl+k

初始化一个Git空仓库:

在这里,我们使用git init这个命令来创建一个新的仓库,在下面的终端里面输入即可:

看到上面的注释;翻译出来就是“在F盘的XXX目录下,初始化了一个空的Git仓库”

比如上面这个,就是在src文件夹下面创建了一个包的同时,顺便把对应的git仓库也给初始化了,实在很赞的操作。

查看当前仓库的状态:

ok,创建完git仓库了,首先要学习的技能是查看这个git仓库的状态,输入这个git statue,查看当前仓库的状态

很显然,啥都没有,这个git仓库没有被commit过,这个文件夹也就没有历史版本。

那我们就搞点事情,让他有所记录,我们再看看这个仓库的状态是否有改变,我们再test1里面创建一个叫Person的类

然后再来执行上面那条git status的指令(按↑返回上一条命令)

显而易见,它提示了我,我创建了一个叫做Person的新文件。

但是注意这句话,

他的意思就是,我们有新建的但是未被提交的文件,这个状态在git里面叫做modified,否则我们在历史版本里面看不到我们刚刚作出的更改

ok,那么我们怎么样才能把文件提交呢。

★重点:文件的提交,和git仓库的三个状态(modified修改,staged暂存,commited提交)

在上述所提到的modified这种状态之后。

首先执行的操作是add,我们吧当前目录的所有文件add到一个“暂存区”,对应仓库这个概念的一个暂时存放你的代码的地方。这个状态在git里面叫做staged,这种状态作为提交之前的一个缓冲,我们可以在提交之前使用git status指令检查一下。

ok现在我们的代码就加入了暂存区,使用git add . 这个指令。

加入到“暂存区”之后呢,我们需要把项目提交到仓库里面,提交完成之后,这个状态叫做commited。commit会把暂存区里面的内容提交到仓库。如果再add.之后还有其他修改内容的操作,则不会加入仓库

使用这个命令:git commit -m “这里填写注释” 如下:

可以看出,一个文件被改变了。

那么我们再来看git仓库状态,git status,启动!

没有需要提交的东西,所有的变动都已经保存!

查看我们每次的提交log:

上面执行了很多操作,我们这么查看我们的工作事项呢,这条语句:git log,启动如下

上面,我们就完成了对操作的记录,里面有操作人的用户名(github用户名)和时间,以及这个提交的版本写的注释“第一次提交...”

没退出查看的时候,你无法继续输入命令,我们可以按回车下拉,或者J(上翻)K(下拉),当然我们想退出查看,继续输入命令的时候,我们可以按Q(quit)退出继续输入命令。

git log 还有一个“极简模式”,就是使用一行输出一个commit。类似如下效果和语句,输出一行(oneline)

这个时候,我们再次的对项目进行一些改动,我们在原来的Person类里面添加了一个成员变量

这个时候,相当于是对这个项目进行了一些修改,我们来查看状态

上面提示了我们,这个类里面有修改的操作。但是这个时候,你把person这个类里面改动的东西恢复原样。那么,status就不会提示改动的操作,一切以你文件是否“原样”为标准来判断

修改完成之后,我们保存当前进度作为一个历史版本,那么我们需要上述的add和commit二连combo

这样就完成了从“”暂存区”到git仓库的操作,我们就提交成功了第二个版本,使用log查看,就会提示两个commit版本

注意commit 后面的一串代码,这是一串哈希值可以定位一个提交记录,只需要这一串的钱七位就可以找到一条提交记录。我们可以对这个提交进行详细的查看,使用指令:git checkout + 哈希值前几位(大于7位)

向下滚动我们就能看到详细信息,包括注释等...

当然,我们甚至可以更加详细一点,使用这个指令,git log -p

我们可以看到更加详细的信息,比如:你修改了啥,下面是一点点例子,其实还有很多

上面的意思就是在Person这个类里面,添加了一个成员变量。

给重要的修改加tag标签:

关于这个操作,我们需要另起炉灶,创建一个空的文件夹并初始化一个仓库。

cd进入test文件夹之后,在test里面创建一个文件,比如我创建了一个class文件叫做Book。

我们先对这个文件保存一下,也就是add commit 二连击——“ac二连击”,我们使用船新的版本的二连击招数:如下

一条更比两条强,添加提交两开花,莱啦老弟。

然后再动一些手脚,

完事儿之后再次“ac二连击”——暂存之后提交。

然后我们不厌其烦的再给这个类进行一些完善

继续暂存和提交二连击操作。

这个时候假如,我们觉得最近这一次的操作真的很重要,我们需要给这次的提交起一个名字比如叫做version1

那么输入如下指令

我们就给这次提交打上了标签,叫做version1

我们可以通过git tag这条指令来查看所有的tag,如:

还可以对之前的某次commit进行添加tag操作,只要获取到commit的7位以上的哈希值即可,语句如下

我们不仅可以查看历史的commit,我们还可以回溯到历史的commit去通过commit的标签名字,将历史某次的commit当作当前正在操作的commit,比如一个commit肥肠重要的时候。比如我想回到version0.5的这次commit进行一些操作

 根据命令行提示,如下

注意最后一行,这个HEAD就相当于是指向当前正在处理的commit的一个指针,或者理解为文档处理的一个“光标”

通过log来查看,可以明显的看到,当前正在处理的commit就是标签为version0.5的这个commit

输出log,我们可以看到,当前正在处理的commit 并不是最近的commit(version1)

现在来查看log的时候,可以看到每个commit的后面都有标签信息

如果想查看tag的详细信息,我们可以使用tag show +“tag的名字”这个指令,比如:

如上,我们就可以看到全部的tag信息,包括时间和操作人......

 

分支 branch

当我们git init一个仓库的时候,这个时候就创建了一个分支,可以将它看作树干,他的名字就是我们常见的 master

当某个项目的节点之后,我们创建了另一个版本,相当于小说里面出现了另外一种剧情,倘若权力的游戏里面囧最后死了是一个版本的话,囧最后存活并当上七国之王则是另外一个版本,这两个版本就是两个分支,对应程序也是一样。

下面就来实践,首先创建一个空仓库:

进入并使用touch指令创建一个xyj.txt

我们可以在里面随便输入一点什么:

然后“ac二连击”,暂存-提交

 再来点剧情,当作版本2。

继续ac二连击

这个时候我们可以想好这个txt小说,可能有两种版本,一个是西天取经,一个是西天取不到经。

在我们这次提交这个节点上,我们创建一个分支点叫做——xtqj。

在这分支点上,我们可以创建旁边的分支剧情,首先我们要进入这个分支点。

如上,我们就切换到了分支点switchpoint,我们可以修改结局为西天取不到经

在这次commmit之后,我们当前正在处理的commit之上,就有两个分支。

如上,当前正在处理的就是swithpoint之后的这次提交,叫做not get。

分支的作用是什么呢,比如说,master版本用来做正常的开发,但是当某次commit之后发现了一个bug,

那么这里就可以分支一个点,在分支的版本中进行bug修复。修复的同时不耽误其他功能的开发。

最后在同一时间内,既修复完bug,又完成了功能的开发,开发进度不耽误。

 

 

合并分支:

上一节实践了分支,当我们修复完bug并且完成功能的开发之后,我们需要把两个版本合并为一个版本,这样我们就需要做一个合并分支的操作。

我们另起炉灶,初始化一个test4的仓库,并且做下述操作:

对txt文章添加一个内容之后,我们保存为ver1

再添加一个2之后,我们保存ver2提交

来到阶段3,我们添加3之后,我们再次提交

但是这个时候我们发现在阶段2-3之间有一个bug发生,我们需要在ver2这个点,开始一个分支,首先我们要回到version1.0

这个节点上。

在这个节点上,我们把它设立为一个叫做point的分支点

同时进入这个点,当然我们也可以用指令git checkout -b point

到了这个点上,我们就能在这个版本上添加一些东西

然后我们ac二连击,就可以在point这个分支上,开始一次叫做debug的commit

提交完这次debug ,我们再次回到master这个分支上

可以看到我们的txt文件,变成了如下这样

我们再添加一些内容

commit之后,我们再来查看这个项目,就可以看到在ver2这里,有一个分支点point

现在我们就要实践这个合并操作了,我们就要用到git merge + 分支点的名字 这个指令

上面的信息提示我们有冲突,这个时候,我们来查看文字,就可以看到,从2开始,master版本的文字就是3和4,point分支就是debug ,我们需要手动解决冲突,

修改后

最后我们确认提交一下

我们图形输出一下,清楚的可以看到,两个分支最后合并为一条主线

部署到github服务端

前面所述的一些操作,都是在local本地端,但是如果本地的电脑遭到了降维打击,硬盘被拍扁了,那样的话,之前所有的操作都无法复原,那么我们就需要一个类似网盘的东西,叫做github。他可以每次我们commit之后都可以在服务端增量更新,而不是覆盖原来的上传版本。

首先打开github的个人主页中的your repository,(你得先注册登录),然后new一个远程repository

然后描述和命 名你的远程仓库

创建完成之后,我们能获取我们仓库的连接

复制这个连接,我们在idea的命令行里面输入下面这个指令,我们就可以把我们的项目上传到我们刚刚新建的远程仓库添加上去

我们可以使用下面这个指令,查看我们的本地git仓库都添加到了那些服务端

如上,指令提示我们添加了一个服务端,github。我们还可以查看详细信息

fatch是下载的地址,push是上传的地址

我们这个时候需要提交这份代码到这个远程仓库。

前面是服务端的名称,后面是需要提交的分支名称,我们这次提交的是master。

回到github这个连接,我们就可以看见我们的远程仓库中已经有了内容

我们可以再次添加一个book2.txt内容进去,再次提交再次push到远程服务器

 

这个时候我们提交完成之后,我们

那么如何拷贝一个github上面很好的项目到自己这儿呢?

使用这个命令 git clone+githubURL

比如:

这样我就在网上down了一个仓库下来,这个仓库里面可能是一个工程,项目的类型有可能和你当前的工作台的项目类型不一样,这个就需要我们手动来修改了。

获取仓库里面的最新代码。

我们可以使用git pull 获取当前任务远程仓库的最新版本。当我们做好一次提交之后,我们可以把我们的代码使用git push(默认只推送当前分支)或者 git push -u origin master(将本地的master分支推送到origin主机,同时指定origin为默认主机)来推送我们的代码到远程仓库中去。

当然,我们使用git pull获取仓库里面最新的代码,如果多人提交的代码有冲突。还需要我们自己手动调整。

这个功能可用于多人协作编程,比如张三写好了前端页面,push到远程仓库之后,李四可以pull出来最新的前端代码来给自己使用,git pull 这个指令就相当于是如下代码

意思就是获取并合并我正在编辑的代码。是不是很好理解。

 

总结,结合biaoyansu的网站内容,可以浏览一下上述过程提到的一些操作和关于git的概念。

 

ok关于git和github就聊到这里,方便以后查阅和复习用

2019年1月18日 23:43:36

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章