专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

使用git一张图就够了

git已经称霸版本控制工具领域。git命令恐怕是每天敲的最多的单词了。git的四个区及每个区频繁使用的提交回撤命令使用的顺溜了吗?通过本文,你可以快速顺溜,甚至顺滑。如果你熟悉git,温故而知新,为你加深对git的理解。

70_1.png

上图展示了工作中最最常用的几个命令和作用的区域。理解了这幅图,它满足了你日常工作中对git的要求

git从本地提交代码到远程的基本流程

git从本地提交代码到远程的基本流程为:你本地编码实现功能后,你首先要做的是将代码从你workspace(项目目录)添加到index(暂存区),然后提交到head,最后推到remote repo(远程库)

git作为分散式(分布式)的版本控制工具,我喜欢称分散式,更具体形象,好理解。所谓分散,每个员工本地都有一个自己的仓库,开发代码像你自己的仓库提交。你不影响别人的,别人的也不影响你的,互不干扰。最后把没有问题的代码一并push到git中央仓库。

git之所以有分散式的功能。离不开他核心的几个概念:git有四个库,workspace、index、head、remote repo。其中workspace、index、head属于你本地私有的库,remote repo就是git中央仓库。结合上图,可以更好的体会

简述图中涉及到的关键命令

1、 git add [file]

这可能是你接触的第一条个命令。将你的功能代码添加到index

1、 git commit

代码到index,下一步就要提交到head。这里会生成提交记录列表,通过这些记录,你可以进行回滚、退回等操作

1、 git push

将本地库的代码推到远程库,供大家使用功能和上线使用

1、 git checkout

通过此命令,可以用index区的代码覆盖掉workspace的代码。实际场景为:你写了一个main方法测试一个map是否可以put一个null值,这个main只是临时用,验证map后就可以不要了。这时,直接运行git checkout .,这些main代码就没有了

1、 git reset

当你执行git add命令发现add错了,有一个错误代码add到了index。这时,你可以用git reset命令,用head区覆盖掉index区的代码

1、 git reset –hard

git add命令执行了,git commit命令也通过了,这时你发现有错误代码提交上来了,这时,你可以这样操作git reset –hard HEAH^,这条命令会覆盖workspace、index、head,也就是用远程库覆盖本地所有区的代码

--soft – 缓存区和工作目录都不会被改变
--mixed – 默认选项。缓存区和你指定的提交同步,但工作目录不受影响
--hard – 缓存区和工作目录都同步到你指定的提交

实际场景运用

我们实际操作一下,来说明这几个命令的用法

程序中main方法加了一句代码:System.out.println("hello girl");

70_2.png

首先,使用git status(用法下面有介绍)查看workspace的变化,可以看到我刚刚操作了哪些文件

70_3.png

然后,执行git diff命令(他的用法后面有介绍)查看不同点。可以看到刚刚在intellij中加的代码:红色表示删除,绿色表示新增

70_4.png

这时,我们执行:git add src/main/java/com/yy/AppRun.javagit add操作之后,新增的代码就添加到了index区,变化的文件由add前的红色变成了add后的绿色

70_5.png

add成功后,要将新代码提交到head区,为此执行命令: git commit -m”commit code”,新代码此时已在提交完成

70_6.png

通过git log查看提交记录,可以看到我们刚提交的记录

70_7.png

下一步就要把代码推到远程库了。执行:git push origin test后,显示下图信息,代码就推到远程库了,你的同事就可以欣赏到你的艺术代码了

70_8.png

验证一下,我们到远程库看一下新提交的代码:System.out.println("hello girl");

70_9.png

到此。以上演示了新的代码从本地workspace库一直到remote repo远程库的过程,从命令角度为git add--->git commit--->git push

下面演示index区覆盖workspace区

70_10.png

使用git diff可以看到新代码

70_11.png

现在不想要这行代码了,执行git checkout .

70_12.png

同时,到intellij中查看,发现,刚加的代码已经没有了

70_13.png

你可能会说,我从intellij中直接删除就可以了,还简单,多好啊。是啊,你说的没错,但是,在实际开发中,完成一个功能往往涉及多个类还有配置文件,这时你早已记不清都修改了哪些吧。所以,这时git checkout .比较,哪个更简单呢

下面演示head区覆盖index区

intellij中新加一句:System.out.println("hello xiao mei nv");

70_14.png

执行 git add src/main/java/com/yy/AppRun.java

70_15.png

执行git diffgit diff没显示不同信息,说明workspace区与index区代码是一样的,也就证明新代码已经到index

现在不想要新加的代码了,需要回退index区workspace区。执行git reset src/main/java/com/yy/AppRun.java,之后执行git diff

70_16.png

发现workspace区index区存在不同,也就证明了index退回了原来的版本

下面演示head区覆盖index区和workspace区

intellij中新加一句:System.out.println("hello da mei nv");

70_17.png

执行git add,然后git commit -m"commit",新代码已经提交到head区

70_18.png70_19.png

这时如果不想要新加的代码了,执行:git reset --hard HEAD^

70_20.png

查看intellij,刚提交的代码没有了,也就是代码回退到加入新代码之前的状态了

70_21.png

除了图中的命令,还有一些有必要知道的命令,上文实际操作场景中已应用到一部分

1、 git status

查看你本地修改的代码

1、 git diff [file]

比较你项目库和index的不同点。不指定file则比较项目所有不同点

1、 git log

查看提交记录列表

1、 git merge branchName

合并branchName到本分支

1、 git branch -a

查看本地和远程库所有分支

1、 git fetch -p

同步(拉取)远程库分支信息,假如远程库有的分支删除了而你本地还有对应这个远程分支的本地分支,这条命令会删除调没有远程分支的本地分支

1、 git chekcout branchName

切换到branchName分支,没有这个分支就新创建一个

以上只是把常用的git命令简述一下,同时结合实际场景运行起来。希望帮助你理解学习git,用git更好的帮助你管理代码,实现功能,完成任务,站稳脚跟,提升自我,成为大牛

未经允许不得转载:搜云库技术团队 » 使用git一张图就够了

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们