“不可不学是编程,不可不用是git”

撰文编辑:逻辑熊猫 | 图片:来自网络 Baidu

欢迎朋友圈各种姿势的分享

如需转载,请后台联系授权

转载时,清楚名出处

本文你可以看到

git是什么

为什么要用git

如何利用git获取源码

如何在本地完成版本控制

如何使用分支

- Git旅程,正式开始 -

-01-

Git是什么|为什么要用Git?

相信很多初入编程的朋友们或多或少都听说过git的大名,毕竟github这个全球最大同性交友平台不是吹出来的。

首先我们来回答这个git是什么?git是一个版本控制软件!

那么用git可以做什么呢?为什么要用git?可以这么说,git是一个文件专属的时间穿梭机!

比如说,你是一个小说作者,你可以用他来写小说,突然哪一段你不想写,或者之前删过的一段想要找回?怎么办,ok,我们的git可以做到,比如说,你写小说,有好几个新奇的点子,你都想试试,ok,我们的git可以帮你做到。那么作为程序员,好几个人以至于很多人参与一个项目,将每个人负责的部分合成一个,ok,我们的git可以做到!是不是很酷?

▼ Git ▼

branches,repository

-02-

Git的安装

市面上主流的三大操作系统大概是windows,MacOS,和Linux,这里主要讲linux下使用,windows需要在cmd下面进行操作,关于GUI和MacOS,暂时不提。

先从windows说起,windows下面直接从官网下载,使用安装包安装,一路下一步,完成即可。

▼ Git官网 ▼

https://git-scm.com/

▼ Download ▼

下载对应版本

Linux下,最好的方法是使用命令行,这里整理了一下各种版本Linux下的安装命令,如果命令不能直接使用,可以从官网上下载linux版本手动安装(由于不是本文重点,暂时不提)。

▼ Linux下 ▼

几种Linxu发布版root用户下使用的命令

-03-

使用GIT | 初始化与一般配置

如果你要使用git控制版本,那么你首先需要指定一个目录作为本地的仓库。

选择一个目录,使用命令git init初始化

也可以使用git init path来指定。

初始化成功之后之后的该目录下,使用ls -a会出现下面这些鬼东西,没错,你的git的使用数据,和版本控制,都是靠这个鬼东西,如果没有什么大不了的事情,千万不要脑袋抽筋,在不懂的情况下乱改里面的东西哦。

初始化之后,进行下面的配置,就可开始你的git之旅了。

git config [--global] user.name "user-name" 设置用户名

git config [--global] user.email "user-email" 设置用户邮箱

这一步的目的是告诉你的git,它是为谁工作。

如果使用--global, 那么当你在其他目录初始化的时候。默认使用这样的用户配置。

-04-

使用git | 从github上get代码

首先到github上去找一个你想要的代码。

https://github.com/mtoyoda/sl ,在这里复制这段URL。

使用命令 git clonehttps://github.com/mtoyoda/sl

就可以把这个项目下所有的内容copy到自己当前的目录下了。

然后你就可以尽情的玩耍了,哈哈哈~~~~

-05-

使用git | 利用git进行版本控制

首先我们新建一个文件。确认其为空,执行下面命令。

git add hello : 开始追踪这个文件

git commit -m "newfile hello empty file" 告诉git记住这个时候文件的状态。

结果如下面所示。

这是一个空文件。

现在,我们的git已经记录下我们的新文件和它此时的状态了。并且留下了一个快照(记录)。

使用git log命令可以查看所有的快照。

第一行:SHA-1码,确保这条记录是唯一的。

第二行:看到了吧,就是设置号的用户名和邮箱,即所谓的所有者信息。

第三行:记录的日期,和代表用户行为的编码。

第四行:发现了,这个是使用commit时加进去的备注。`

接下来,我们来修改这个文件吧,并按照下面的方式提交吧。

git commit -am "注释"

这是一条一步到位的命令。相当于add和commit 0 -m

当前hello的内容如下图。修改和提交记录如上图。

再来看看此时的log吧。包括每次的说明都在这里哦。

那么,我们现在来进行时光穿梭吧。来回到记录中,我们每次编辑的时候吧。

现在我们来使用checkout命令来回溯时光吧。

git checkout SHA-1 filename/path

现在我们是用cat来查看hello的内容而不用vi打开。

如何,学到这一步,相信各位读者已经可以做到自由地控制文件的版本了吧。

笔者按:

checkout的工作原理是直接把快照里的文件内容替换掉当前工作目录里的内容,git会视为工作目录里的内容被修改。

-06-

使用git | git的原理和常用命令

GIT把这项工作分成三个区。

工作区:就是你在电脑里能看到的目录。

暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。用与临时存放你的改动,事实上它只是一个文件,保存即将提交的文件列表信息。

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。就是安全存放数据的位置,这里面有你提交的所有版本的数据。

Git的一般工作流程:

修改:(modified)在工作目录中添加修改文件;

暂存:(staged)将需要进行版本怪你的温江放入暂存区域;

提交:(commited)将暂存区域的文件提交到git仓库。

git的四个常用命令:

add 命令用于把工作区的文件放入暂存区;

commit 命令用于把git暂存区的文件提交到版本库;

reset 命令用于把版本库的文件还原到暂存区域

checkout 命令用于把暂存区的文件还原到工作区;

git的其他常用命令:

log 命令用于查看历史提交的快照

status 命令用来查看工作区所有文件的状态

diff 命令用于比较不同版本之间的不同

rm 命令用于删除git对本地文件的追踪

关于diff :

git giff ID1 ID2 比较两个快照

git diff ID 比较快照与工作区内容

git diff HEAD 比较最新提交的快照和当前目录的内容

git diff --cached 比较最新提交的快照和暂存区的文件

git diff --cached ID 比较暂存区文件与快照

文章到这里,读者应该可以在各个版本的文件之间跳来跳去来。

俗话说,师傅领进门,修行在个人,各位读者看完文章一定要上机练习,发现问题解决问题。如果遇到本文没有提到的问题,可以留言或者加入社群共同交流哦。加群方法在文章结尾。

因为本文为了方便各个领域内的人来使用,所以到目前位置,对于指针的问题,暂时不谈。

-07-

使用git | 使用分支

由于工作中很多情况下需要用到分之,比如很多个人完成同一个项目,或者你一个项目中想尝试不通的想法,都有可能需要用到。

使用git branch 分支名可以创建一个新的分之,并给新的分支命名。

使用git status可以查看当前所在的分之,默认是在主分支(master)

使用git checkout 分支名可以切换到对应的分支。

这时可以对分之上的内容进行修改。如下图。

当你完成修改的时候,可以使用merge命令合并分之。

git merge 分支名

将分支“分支名”上的内容合并到当前分支。

如果发生冲突,需要手动修改文件,一般git会自动合并。

如果你想删除一个分支

可以使用命令:git branch -d 分支名

-

奇幻的旅程,继续进行 -

-01-

问答

1.

问:提交时如果不适用-m参数会怎样?

答:会跳到默认编辑器,git会逼着你写点什么!

2.

问:如何更改已经提交的注释(备注、说明)

答:使用git commit --amerd -m “内容” 可快算更改,不用-m会发生什么,见1.。

3.

问:你所说的指针是什么鬼东西?很重要吗?

答:如果你想把git玩的66的,那么你有必要学习一下指针。如果只是想要完成版本控制,上面的内容已经最后,因为本文面向大多数可能用到git,但是又实在不想花费大量时间去学习的人。

4.

问:windows和linux版本的git区别大吗?

答:windows提供图形界面。但是大部分工作还是使用cmd比较快。由于图形界面用起来或许更方便,便不在此赘述。注意命令,linux下用mv重命名,windows用ren重命名。

5.

问:如何批量管理相同后缀的文件?

答:git支持正则表达式。

6.

问:为什么没有github相关的内容?

答:你先把今天的玩明白,关于github的内容,以后会写的。

7.

问:如何删除一条已经没用搞得快照?太多了不好查找。。。

答:建议你不要难么做,你永远不知道你什么时候可能会用到你已经删除了的内容。如果为了方便查找,可以使用重定向的方法如 git log > logfile,然后用vim打开,使用正则表达式搜索你想要的东西。如果非要删除的话可以使用命令git reset --hard 快照。

8.

问:如果有其他问题怎么办?

答:可以在文章底部留言,或者添加小编微信留言,或者加入社群,大家一起探讨哦。

-02-

服务相关

免费社群

如果二维码失效

请添加小编微信

备注“加群”

笔者微信

逻辑熊猫

一个有用的公众号

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180329G1W17X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券