心语:我喜欢你,认真且怂,从一而终。
关于Git,其实对于我们日常开发是很常用的,所以,小编编写本篇文章教大家如何使用git,便于日后工作与学习。
首先,在使用git之前,我们还是应该了解一下关于git的发展历程,因为这样,我们才能真正明白这个工具存在的真正意义是什么。而我们或许可以借鉴前人的经验,也可以开发一个这样的工具(虽然这个实现起来可能很难,但是我们站在巨人的肩膀上,还是有可能的呦),话不多少,那么就直接进入正文吧!
1.git的发展史
Git最初是由Linux开发者Linus
,这是一个相当厉害的人物,有兴趣的可以去百度百科了解了解他,他用了仅仅两周时间纯C语言编写而成,在编写完成之后就立马上手接管Linux源代码,不过在此之前它是商业收费的分布式版本控制器,但BitMover公司看中Linux开源精神,免费授权给Linux社区使用,在2002年时,Linux开始使用BitKeeper分布式版本控制系统管理源代码,但好景不长,有一天Linux社区成员Andrew(samba(局域网共享文件c/s程序)的作者)试图破解BitKeeper共享给所有人使用,被BitMover公司发现并收回了免费使用的版权,随后Linus就用了两周时间开发出了git(两周时间包括测试),也就是目前为止最好用的分布式版本控制系统。
在日常的开发中,除了git,其实还有许多类似的版本管理工具,像SVN、cvs这种集中式的版本控制系统。但是他们其实还是有一些区别的,那么它们到底有什么区别呢?
2.分布式和集中式的区别
- Git是分布式版本控制系统,它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。
- 集中式它们都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。而且集中式版本控制系统是必须联网才能工作。
本篇文章我主要是讲的是git,如果想了解集中式控制系统的话,可以自行百度,其实使用的原理都是一样的。
3.git的下载、安装与环境配置
对于git的安装,可以去git官网,下载自己电脑对应的安装包,按照步骤一步步安装就好了。
安装完成后,打开Git bash软件,属于git,如果弹出关于git一系列的命令提示,则证明安装成功。
对于初使用git的人来说,需要进行设置用户名和邮箱,在命令行输入以下代码:
git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
配置完成后,我们可以打开自己电脑主盘下.git目录下的.gitconfig文件,查看自己设置的用户名和密码。如果该文件中配置的用户名和密码正确,则说明配置成功。
4.初始化版本库
什么是版本库?版本库又名仓库,英文名repository,你可以简单的理解一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改,删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻还可以将文件”还原”。
其实,很简单,通过命令 git init 把这个目录变成git可以管理的仓库。
此时,项目的文件夹中就会多了一个.git文件夹,这个目录是Git来跟踪管理版本的,没事千万不要手动乱改这个目录里面的文件,否则,会把git仓库给破坏了,如果害怕自己不小心删除了,可以将此文件夹隐藏。
5.git常用命令
-
git add .
该命令主要是将当前文件夹下所有文件全部提交到暂存区,如果未出现报错信息,则说明已添加成功。
-
git commit -m "注释"
提交代码到仓库,这里的仓库所指的是本地仓库 -
git status
该命令是主要用来查看是否还有文件未提交
-
git diff .
如果当你修改了文件中的内容,可以用 git diff .来查看修改的信息以及内容。
此时,文件的内容已被修改,当我们再次使用git status 查看是否有文件未提交,则会这样显示。
上面的命令告诉我们testDemo文件已被修改,但是未被提交的修改。注意看中间字的颜色,红色表明还没有添加到暂存区,如果是绿色就表明已经添加到了暂存区,那么我们可以使用 git add .和git commit -m “再次提交” 进行再次提交即可。
-
git log
当我们如果提交了很多次的话,如果想查找提交记录的话,可以使用git log查看下历史提交记录
-
git reflog
git reflog可以查看当前版本库的提交历史,凡是对仓库版本进行迭代的都会出现在这个里面,包括你回滚版本都会出现在这个历史中
-
git reset --hard
但是有时候我们想回到上一个版本或者回到某一时刻的文件,那么肯定要用到版本回退的命令了,对于版本回退其实有两种方法
1.git reset –hard HEAD^ ,如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推。那如果要回退到前100个版本的话,使用上面的方法肯定不方便,我们可以使用下面的简便命令操作:git reset –hard HEAD~100 即可。
2.git reset –hard 版本号 这种方法是比较灵活的,只需要知道某一提交记录下的版本号就可以想回退到哪个版本就可以回退到哪个版本,但是前提是需要知道回推的版本号,那我们可以通过git log 查看想回退的那个版本号(版本号合很长,只需要知道前六位就行)
-
git checkout --test.html
该命令是通过git add test.html 提交到暂存区后,然后又对此文件做了修改后,需要撤销当前修改,只要没有commit之前,如果我想在版本库中恢复,都可以使用。
此时,已经对修改暂存区test.html里的内容这一行为进行了撤销。
注意:
如果是全部文件撤销的话,就使用 git checkout .
如果单独文件修改的话,文件名前一定要加上 -- ,不加的话就会变成切换分支了。
-
git rm
如果我们使用普通的命令,rm删除文件,git状态会提示你删除了文件,你只需要使用add重新提交一次就可以了。
那么如果想恢复文件呢?
通过git rm 删除了某一文件,在没有commit的情况下,可以先git reset 重置下缓存区操作,然后使用git checkout命令将文件取消操作,若提交的话,可以通过版本回退,恢复文件。 -
git clone
主要是用来从拉取远程仓库里的代码的。
git clone git@github.com:chenlongjia/testdemo.git
- git feach
该命令是用来下载远程仓库里变动的代码,它和git pull是有一些区别的,当你想直接拉取下来进行合并时,可以使用git pull,但如果只想拉取下来不进行合并,建议使用git feach
-
git pull
-
git pull命令用于取回远程主机某个分支的更新与本地的指定分支合并,主要是为了避免代码拉取冲突时常使用的习惯性操作。
-
git checkout
使用git checkout -b
参数来创建一个分支,创建完成分支后会自动切换过去,git checkout的作用是检出,如果是文件的话,会放弃对文件的缓存区操作,但是要使用reset重置一下变更才行,如果是分支的话会切换过去。
git checkout -b dev
//等价于 git branch dev和git checkout dev
我们在使用branch来查看当前属于哪个分支,也就是查看HEAD的指向,此时列表就会多出来一个dev分支
git branch
如果想删除分支呢。可以使用
git branch -d [本地分支名]
- git merge
该命令主要是用来合并代码的,一般情况下因为在团队开发中,master只有一个,合作开发里任何人都可以从master里拉取代码,拉取master后创建分支,分支名改为你要做的操作,比如修改某某文件,修改什么什么bug,然后在提交一个版本,我们一般不会在master提交代码,是为了保持代码的安全性。
比如,你是在dev分支下开发的某一个模块,然后将代码提交,最后再在master分支合并dev下的代码。
此时,代码将会合并到master分支下。在这里,要注意以下几点:
1. 如果你在dev分支下创建文件,没有提交到仓库,那么它在所有仓库都是可见的。
2. 切换仓库时git只会更新跟仓库有关的文件,无关的文件依然存放在工作区。
6.配置git以及创建远程仓库
1.在创建远程仓库之前,首先得去github官网注册一个github账号。
2.配置用户名和邮箱
git config --global user.name "幕筱佳"//名字
git config --global user.email "1403353457@qq.com"//邮箱
3.本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要在本地电脑生成SSH Key:
ssh-keygen -t rsa -C "1403353457@qq.com"
通过这个命令会生成 id_rsa 和 id_rsa.pub两个文件,而其中 id_rsa.pub这个文件就是需要配置在github中的公钥, id_rsa这个文件就是自己电脑上的密钥。公钥会默认生成在该目录下。
4.将这个文件里的内容用记事本打开,配置在github中即可。
这样,我们就完成了git的相关配置。
5.创建远程仓库
我们已经在本地创建了一个Git仓库了,然后要想实现关联操作,就得在远程也创建一个仓库,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。那么我们应该怎么做呢?
首先,登陆GitHub,创建一个新的仓库,建议给每一个仓库都添加redme.md文件。
出现上图,证明仓库就创建完成了
7.推送代码到远程仓库
- 首先我们得进行本地仓库跟远程仓库的关联
git remote add origin git@github.com:chenlongjia/testdemo.git
//“幕筱佳”是我的GitHub的账户名,你需要填写你自己的账户名
2.使用 git push origin master
本地仓库推送到远程仓库,首次推送建议使用 git push -u origin master
,那么后续再推送代码到该仓库,直接使用git push 即可。(前提必须是代码必须先提交到本地仓库)
至此,推送代码到远程仓库就完成了