萌新程序猿大多有这么个阶段:项目做了一部分,想要添加新功能的时候,畏畏缩缩地把整个项目Ctrl+c,Ctrl+v一份——目的是为了不把辛辛苦苦写好的部分给玩儿坏。但是你想想,如果要修改一百次,岂不是要copy一百份代码?
![](https://i-blog.csdnimg.cn/blog_migrate/493f3c3b505c3292de03056ca75768bb.png)
![](https://i-blog.csdnimg.cn/blog_migrate/8724ff85d6448e3dcc5bf4a44272fd56.png)
本篇文章不含高深的理论讲解,囊括Git最基本的几个操作,适合入门级程序员初学Git使用,请学习Git高级应用的同学绕道。
1. Git简介
迄今为止世界上最先进的分布式版本控制系统!
这玩意儿,就是Linus大神为管理Linux源码使用C语言耗时两周写成的。随着Git的迅猛发展,2008年又诞生了“同性交友网站”-Github,一个为世界上所有开源项目提供免费Git托管存储的网站。自此,无数开源项目迁移至Github。
![](https://i-blog.csdnimg.cn/blog_migrate/fd20c795be00c51c9e1eb61623c37717.png)
1.1 Git仓库
想象一下现在你是乐高世界里的一名建筑师,正在工地(工作区,即项目目录Working Directory)造一栋大厦。为了方便试错,你把每一次完成的一小部分劳动成果copy出来,放在小拖车(暂存区Stage)上拉进仓库(Repository),其中暂存区与仓库统称为版本库。
1.2 安装配置
这里不作赘述,各平台安装方式可自行搜索。需要注意的是,在Windows平台,所有安装路径与git项目路径不能包含中文!
1.3 操作流程
下面以一个实际项目需要使用到的几项git命令来介绍:
- 创建版本库
- 在项目路径下,右击鼠标,点击Git Bash Here,调出Git命令行。
![](https://i-blog.csdnimg.cn/blog_migrate/2bc887c934483052be3eb845ed46913d.png)
- 使用
git init
命令创建一个可管理版本库
![](https://i-blog.csdnimg.cn/blog_migrate/4765eb2ac77856a0453869faec6b8252.png)
- 得到Initialized empty Git repository in …即成功(此时路径下多出一个.git隐藏目录,千万不要手动操作此目录中任何内容,负责容易损坏仓库)。
- 添加文件
这里我们在刚刚右击鼠标的路径下新建一个README.md文件,这便是我们工地的大厦。
![](https://i-blog.csdnimg.cn/blog_migrate/ec38c7d9ed17823d760b7620f0596933.png)
运行如下两条命令,把文件上传至仓库
$ git add README.md
$ git commit -m "The first modification"
![](https://i-blog.csdnimg.cn/blog_migrate/3459fc976a403dc707e5f8e7435e2343.png)
我们继续对文件进行修改
![](https://i-blog.csdnimg.cn/blog_migrate/c5c93c33af1ffcc816d5632dff72e53b.png)
- 文件查看
- 运行
git status
命令
![](https://i-blog.csdnimg.cn/blog_migrate/c4e79b944ec7b3767343781ce5b533a3.png)
运行结果显示项目文件被修改过,但是还没提交修改。
- 运行
git diff
命令
![](https://i-blog.csdnimg.cn/blog_migrate/5b04a14818baa89a5ac5146c47227469.png)
运行结果结合项目文件,可知git diff命令可以看到我们具体修改了哪些内容(git diff查看的是:工作区该文件与版本库中当前分支上该文件之间的差异)。
另外还有:
git diff --cached查看暂存区和仓库差异;
git diff HEAD 查看工作区和仓库的差异。
- 按顺序运行
$git add README.md
$git commit -m”The second modifacation”
$git log
可看到最近3次修改提交日志
![](https://i-blog.csdnimg.cn/blog_migrate/004c0c8c9ebc806cc403d978cdda862f.png)
- 版本回退
- 使用
git reset –hard HEAD~1
回退到上一个版本。(git中HEAR~X
表示回退到往上X个版本,X表示1-100,这样我们便回到了第一个版本。
![](https://i-blog.csdnimg.cn/blog_migrate/28b6315f9234ec0844b27901dbcab5cf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/20ae7c04729ae37c6cf95ba9168c66ab.png)
- 如果我又想回退到第二个版本,也就是未来,该怎么办?
使用git reset –hard a4b0a
命令!a4b0a是上面git log时获取的第二个版本的id号,取前几位就够了嗷~
![](https://i-blog.csdnimg.cn/blog_migrate/a9075dde61e3091668543de921784e3f.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a1456fcc691fb6ec68c1245a397979c0.png)
- 撤销
这也是一个非常方便的命令,简单来说,这个命令让你回到最近一次git add或者git commit命令提交的文件状态。
$ git checkout -- README.md
![](https://i-blog.csdnimg.cn/blog_migrate/632e50d0421ca127f6deb5a7ff15fe1b.png)
- 删除
$ git rm README.md
删除版本库中的文件,然后使用git commit -m ""
提交删除操作即可删除版本库内容。
![](https://i-blog.csdnimg.cn/blog_migrate/4af7b11c06fb5a3d5e03567e6af2a112.png)
这时我们使用git status
查看版本库状态,已经没有文件了
![](https://i-blog.csdnimg.cn/blog_migrate/a019dcceba283d28fdb378c5f4a55200.png)
然后在文件管理器中删除README.md文件即可。甚至你还可以删除git版本库
$rm -rf .git
![](https://i-blog.csdnimg.cn/blog_migrate/a9e4929f4f8204fb98e2da2a1fbe1b6a.png)
![](https://i-blog.csdnimg.cn/blog_migrate/51d2a5039223c9088fee12db7abf4727.png)
以上命令能够帮助你快速上手git,自此再也不用担心被人看到版本控制copy代码的垃圾操作了!
扫描关注 " 有趣的技术小窝",看天马行空的技术杂谈; 获实用的软件、资料分享
![](https://i-blog.csdnimg.cn/blog_migrate/ec2f478ac82012ead47a1901c0d9e2a7.jpeg)