如何使用Git版本控制

来源:互联网 发布:明代男子服饰知乎 编辑:程序博客网 时间:2024/04/29 15:28

一、前期准备

下载git版本控制器(由于本人是Window版本的,以下的文章都是针对Window的指令)

Git下载地址。

下载完成之后,安装直接点next就可以了,不用调整什么东西。

如何判断是否安装成功呢?

只要在dos窗口,执行git,出现以下代码,就表示成功了。


然后打开Git文件夹中的git-cmd.exe窗口。

二、Git基本原理及特性

①、只关心数据整体是否发生变化
Git:只关心文件数据的整体的变化。
其他版本控制器:关心文件的内容是否有改变,每次记录那些文件做了更新,并更新了什么内容。

②、Git提交更新的原理
Git将所有的文件做了快照,存储在微型的文件系统中。
当提交的时候,Git会检索一遍所有文件的指纹信息并对每个文件进行快照,然后保存一个指向这次快照的索引。
如果文件的指纹信息与先前的信息一致,那么Git就不生成快照,将原先的快照作为索引。
快照:根据文件内容生成的HashCode码,作为身份验证。

③、Git大部分都是本地操作的
Git大部分操作只需要访问本地文件和资源,不需要联网。
Git将当前项目的历史信息都是保存在本地文件的。当查看的时候,不需要像服务器索取。

④、Git对于文件的状态
①、已提交(commit):表示将文件中的数据保存到本地数据库了
②、已暂存(staged):表示文件中的数据存放到了提交清单中,等待提交
③、已修改(modified):表示文件被修改了,但是并没有暂存,更不可能提交。

⑤、Git工作的流程
1、修改文件
2、将修改后的文件做快照,并存储到提交清单中
3、根据提交清单。提交数据到本地的数据库(Git目录中)

三、Git的基本指令

①、为文件夹配置Git环境(指令 git init)
git init:表示为该文件夹配置版本控制装置,然后会生成.git的隐藏文件夹。这就是本地数据库,该文件夹下的所有改动都会存储到.git文件夹下。
例:
我在D盘下创建一个Test文件夹,并在内创建一个a.md文件

然后为该Test文件夹,配置git环境,以后该文件夹下的所有改动,都会记录到git中。
首先用刚才打开的命令窗口,将位置切换到Test文件夹下。

然后使用:git init指令。就会发现在Test文件夹下多了个.git的隐藏文件。这样环境就配置好了

②、提交文件到git中(所用的指令:git add +文件名、git status、git commit)
我们刚才说过了文件有三种状态,我们创建的a.md就是属于第三种(modified)。
那么首先需要将其加入到(staged)的状态:
使用:
git add + 文件名   就是  git add a.md
然后文件就到了暂存的状态。
我们可以通过  git status查看当前git版本控制器的状态


绿色表示,有文件处于暂存状态。
那么最后一步就是提交代码了
使用:git commit -m "提交的说明"  这里 git commit表示提交语句  -m真正表示提交文件内容。 这么使用是因为提交可以有很多种(提交文件内容,或者提交其他的东西,详细查看文档) 所以才加了个 -m表示主指令的子指令。
所以就是:git commit -m "first command"
当提交的时候,发现需要提示配置user.name和user.email,导致提交错误

③、配置git基本属性(git config --global user.name、git config --global user.email)
git config --global user.name + "youName":配置用户名
git config --global user.email + "yserName@example.com":配置用户的email
配置完成之后,就能够将文本提交到系统中了。

④、查看项目历史记录(git log)
git log :查看项目历史记录


⑤、创建分支 (git branch)
我们知道git是分布式管理,所以分支是git的核心。
分支的作用:当处于不同分支下的代码,之间是互不影响的。比如说:就是我在a分支下有个苹果,我在b分支下有个梨。那么我给a分支一个橘子,然后拿走a分支的苹果。跟b分支没有任何关系。
主分支:
首先我们通过git status 查看当前分支,我么看到有这么一句话

表示当前所处的分支是master。说明了当创建的时候系统自动为我们创建了一条分支叫做master。这个就是主分支。
创建、删除、跳转到分支:
git branch + 分支名:创建分支                                                  使用:创建一个名为a的分支 git branch a
然后通过git branch 来查看当前拥有分支的名字和数量,还有*表示当前所处的分支

我们想要从master分支切换到a分支上:
git checkout + 分支名:切换分支                                使用:git checkout a,在调用git branch查看

这个分支不想要了,我想删除分支:
git branch -d + 分支名:删除分支              //注无法在当前为a分支上,删除a分支。

所以我们必须写切换回master分支,才能删除a分支。
git checkout master
git branch -d a

那么没有一句话就可以创建分支并跳转到分支呢?
git checkout -b + 分支名 :创建分支并跳转到该分支      使用:git checkout -b a  完成后再用 git branch查看下吧~

⑥、合并分支(merge)
那么我在a端写完了代码,我的伙伴在b端写完了代码,我们如何把这些代码合并在一起呢?
git merge + 分支名 : 表示当前分支与指定的分支合并,然后文件生成在当前分支。
使用:git merge a;  //master分支下合并 a

⑦、创建文件版本(git tag)。
每个应用都有各自对应的版本:比如说 xx v1.0  、xx v1.1 这样的版本。
这样我们就可以获取各个版本的代码了~

git tag -a + 版本号 -m + "版本的相关信息":创建版本号     使用:git tag -a v1.0 -m "版本1.0"  用git tag查看。
然后用git tag发现Git并没有为我们提供默认的版本号,不像branch自动提供一个master分支。

git show + 版本号 :查看该版本的具体信息。   使用: git show v1.0

git tag -d + 版本号:删除版本。     使用: git tag -d v1.0

三、使用Github连接Git

1、创建Github账号及Github项目
     StormZhang的创建Github及Github项目的介绍
2、SSH
SSH是一种网络协议,用于计算机之间的加密登录,GitHub是基于 SSH 授权的。所以GitHub通过SSH来确认你的身份。从而不用使用账号、密码登陆GitHub,也就是说我们通过本地的git修改远程端的github上的代码就不需要使用账号、密码登陆了。因为SSH就是你的密码。
我们要做的是,生成本机的SHH,然后将本机的密码挂到自己的github上,这样就能实现你的github账号连接到你的电脑了
①、生成本机的SHH
打开Git文件夹下的,git-base.exe窗口(git-cmd.exe窗口是无效的),调用
ssh-keygen -t rsa -b 4096 -C "you_email@example.com",之后一直点回车就可以了
然后就会在Users/你的用户名/.ssh目录下生成两个文件
id_rsa   和 id_rsa.pub文件。用记事本打开id_rsa.pub文件,复制里面的全部内容。
②、将SSH生成码,填写到github上
打开Github->Setting

然后:选择SSH and GPG keys,并点击New SSH key(图的来源:stormzhang的Git教学)

将复制的SSH生成码,填入到Key中,Title不需要填写。

    
这样就连接完成了。
之后我们,就可以连接Github的仓库了。

四、利用Git上传代码到github

任务:将本地新建的Android代码上传到Github上。

①、在Github创建Resopisitory
我们从创建Github账号及Github项目得例子中明白了,如何在Github上创建一个仓库。那么我们自己在Github上创建一个MyAndroid的respository

第一个参数:表示从本地上传Android项目,要忽视的文件(就是这些文件不需要上传到Github)。
第二个参数:表示你的授权 0 0,商业上的东西。(这个参数,根据你的喜好而定)

②、在文件夹中创建Android项目:我的名字叫MyAndroid,然后创建github环境。(跟创建Test的方式是一样的)
然后发现AndroidStuido上增加了:
 用来提交代码的,但是推荐使用cmd窗口来提交git。这样有助于理解git机制。

③、将本地的git与Github上的MyAndroid Respoistory关联
git remote add origin +你的repository地址 (可以是SSH地址,也可以是Https地址)
Https的劣势是:每当提交的时候,需要使用到账号和密码。
使用:git remote add origin git@github.com:newbiechen1024/MyAndroid.git
repository地址:

讲解下这段话的意思:git remote :表示 远程操作    add:表示添加   origin:表示github仓库的名字(默认为origin)
git@github.com:newbiechen1024/MyAndroid.git 就是你项目的SHH的地址。
所以这句话连起来的意思是:当前git关联到origin仓库的MyAndroid项目。
完成之后:可用 git remote -v 查看当前远程连接的repository。


④、提交代码到Github
1、将本地的Android代码commit到git上

2、将git上的代码提交到github上(如果直接提交会报错)
因为:Github上的MyAndorid项目中,是有文件的,尤其是.gitignore与本地的.gitignore向冲突了,必须合并冲突文件才能进行提交。
所以真正的第二步是
2、加载Github上MyAndroid中的数据
调用:get pull origin master  :将origin上最新的master上的代码加载到本地

发现出现:fatal:refusing to merge unrelated histories
原因是:Git 2.9.0之后的版本 开始预设行为不同合并没有共同祖先的分支。
解决办法:添加git pull origin master –allow-unrelated-histories
然后就提示

我们用AndroidStudio打开 .gitigonre文件。
发现多了一些代码:
<<<<<<< HEAD  到 =====表示本地Android冲突的代码。
====   >>>>>>> 676b1afdf33cef0c9cfea4ebeb12a431ed3c3e9f 表示Github上互相冲突的代码。
我们只要选择其中一份就可以了。
这里我要的GitHub上的那份,也就是删除了<<<<<<< HEAD  到 =====之间的代码。
解决冲突之后,就可以提交代码到本地了。
git add .
git commit -m "merge comflict"

3、提交代码到Github
git push origin 本地分支:Github上的分支。   比如说:git push origin net:master 将net分支上的数据上传到master分支上。
穿插:GitHub分支的创建
同时比如说:使用 git push origin master:a   将git上的master添加到GitHub上的a分支上。如果 Github上没有a分支,那么Github会自动创建a分支。
那么怎么删除GitHub上的分支呢?
git push origin :a   这就删除了

如果本地分支与Github上的分支相同的话。可以直接使用 git push origin + 分支名
这里就是:git push origin master。
这就完成了git提交到github上的操作。

六、GitHub如何用于项目中多人协作开发
实用网址:http://gold.xitu.io/entry/56263cfd00b0023ca69de5ec
可用的方法:https://gist.github.com/belm/6989341



0 0
原创粉丝点击