android学习之路(八)---- Git版本控制

一、简介GIT
SVN:集中式版本控制,只有服务器上面才有资源仓库,断网情况下不能使用
GIT:分布式版本控制,客户端和服务器上面都有资源仓库,而且相同,断网情况下可以使用,断网情况下,同样可以提交代码,联网的时候只需要push到服务器

二、GIT的工作模型
三、GIT基本交互流程图
四、GIT安装
    1. 点击Git-1.7.9-preview20120201.exe进行安装
    2. 安装到D:\software\Git(建议目录)目录下,手工建立这两个目录,
    3.Select Component(默认选项)
    4.
     android学习之路(八)---- Git版本控制_第1张图片
    5.
    android学习之路(八)---- Git版本控制_第2张图片
6、安装完毕之后,在桌面会出现Git Bash图标,双击!
    android学习之路(八)---- Git版本控制_第3张图片
安装完成
五、GIT仓库操作
    1.在D:\software目录下面创建一个文件夹repository(仓库),在建立一个git目录,则将git中央仓库放在D:\software\repository\git 下面了
    2.进入中央仓库,点击鼠标右键,选择,Git Bath
    android学习之路(八)---- Git版本控制_第4张图片
    3. git init --bare shared.git (新建一个空的中央仓库shared.git)    这里写图片描述
    就会在D:\software\repository\git下面创建一个shared.git目录,里面有一系列的文件夹
    ①D:\software\repository\git\shared.git\hooks下面有一些钩子程序
pre-commit.sample : 表示代码提交之前的程序
post-commit.sample : 表示代码提交之后的程序(给项目经理发邮件之类的)
    ②D:\software\repository\git\shared.git\info\exclude
这个文件中内容是配置你自己不需要进行版本控制的文件的的
    ③D:\software\repository\git\shared.git\objects
这个目录里面存放的是提交的内容,(但是在这个文件夹里面是找不到的)
    ④D:\software\repository\git\shared.git\config
进行系统的GIT相关配置
    4、新建目录F:\develope\workroom 模拟客户端本地代码仓库,并创建两个新的员工user1和user2
    5、克隆中央仓库到user1中,
①打开F:\develop\workroom\user1
②在此目录下面,打开git bath
git clone /f/software/repository/git/shared.git/ . (注意有个点,表明当前目录)
    这里写图片描述
    然后就会在F:\develop\workroom\user1中多一个隐藏的文件夹.git(本地仓库)
    里面的内容和中央仓库内容一样!!!
    6. 第三步:设置个人信息
android学习之路(八)---- Git版本控制_第5张图片

-git config user.name "user1"
-git config user.email "[email protected]"

    经过上面的两行代码,就将用户的信息写到了user1/.git.config文件中了
android学习之路(八)---- Git版本控制_第6张图片
7. 进行代码的开发了
android学习之路(八)---- Git版本控制_第7张图片
8、告诉git对哪个文件进行跟踪
这里写图片描述
9.提交index.jsp文件到本地代码仓库:
    ① git commit
    ②进入了编辑模式,然后按i键键入插入模式,输入备注信息:user1 add the file
    ③按esc键进入编辑模式,然后键入::wq 保存退出则成功提交了!
10.将本地代码仓库PUSH到中央仓库

git push origin master

    android学习之路(八)---- Git版本控制_第8张图片
11 .user2从中央仓库克隆代码到本地

git clone /D/software/repository/git/shared.git/ .

这里写图片描述
然后就克隆进user2中了!!!

12. 查看user2index.jsp中的内容
这里写图片描述
13.user2告诉git它是谁

git config user.name ‘user2’
git config user.email ‘user2@163.com

这里写图片描述

14.编辑index.jsp

vim index.jsp

    进入编辑模式,并进行更改,查看更改内容
     这里写图片描述
15. 通过add将index.jsp添加到缓存区

git add index.jsp

16.commit提交

git commit -m “user2 update”  //提交并通过-m添加备注信息

这里写图片描述
17. push到中央仓库
android学习之路(八)---- Git版本控制_第9张图片
18.user1从中央仓库pull源代码,并查看index.jsp的内容

 -git pull
 -cat index.jsp

android学习之路(八)---- Git版本控制_第10张图片

==============版本管理员操作========================
第一步: 创建数据仓库

git init --bare shared.git

==============开发人员1操作=============================
第二步:复制仓库到本地

git clone /f/software/repository/git/shared.git/ . (注意有个点,表明当前目录)

第三步:设置个人信息

git config user.name "user1"
git config user.email "[email protected]"

第四步:忽略无需版本控制的文档

echo "*.txt" > .gitignore

第五步:新建一个文件

echo "User1 add content" > index.jsp

第六步:提交文件

git add index.jsp
git commit -m "User1 add the file"

第七步:把自己的仓库提交到公共服务器

git push origin master

==============开发人员2操作=============================
第八步:复制仓库到本地

git clone /f/software/repository/git/shared.git/ .

第九步:设置个人信息

git config user.name "user2"
git config user.email "[email protected]"

第十步:忽略无需版本控制的文档

echo "*.txt" > .gitignore

第十一步:新建一个文件

echo "User2 add content" >> index.jsp

第十二步:提交文件

git add index.jsp
git commit -m "User2 add the file!"

第十三步:把自己的仓库提交到公共服务器

git push origin master

==============开发人员1操作=============================
第十四步:下载服务器最新数据

git pull

六、GIT相关概念
    1、工作区
    2、暂存区
android学习之路(八)---- Git版本控制_第11张图片
    3、版本库
android学习之路(八)---- Git版本控制_第12张图片
    4.日志命令

-git log --pretty=raw

android学习之路(八)---- Git版本控制_第13张图片
5.我们拿到一个hash码时怎样找到与之对应的用户呢?

 -git cat-file -t 6d14ef
 -git cat-file -p 6d14ef

android学习之路(八)---- Git版本控制_第14张图片
6.查看tree对象的值
android学习之路(八)---- Git版本控制_第15张图片
7. 查看blob对象的内容
android学习之路(八)---- Git版本控制_第16张图片
8、版本结构图、
android学习之路(八)---- Git版本控制_第17张图片
9、探究head和master分支
android学习之路(八)---- Git版本控制_第18张图片
android学习之路(八)---- Git版本控制_第19张图片
android学习之路(八)---- Git版本控制_第20张图片
七、Tortoisegit
(1)Tortoisegit的安装
    第一步、点击TortoiseGit-1.7.7.0-32bit.msi-- >Next
android学习之路(八)---- Git版本控制_第21张图片
    第二步、
android学习之路(八)---- Git版本控制_第22张图片
    第三步、点击insatll进行安装,然后Finish
    第四步、测试是否安装成功:点击鼠标右键,有过有响应的选项即证明安装成功
(2)、将上面五中的内容进行一个修改,用TortoiseGit进行实现
    1.将D:\software\repository\git中的内容全部删除, 将F:\develop\workroom中的user1user2全部删除
    2. 对中央仓库进行初始化
    2.1 D:\software\repository\git 点击鼠标右键,点击Git Create repository here
android学习之路(八)---- Git版本控制_第23张图片
     2.2 按照上面的方法初始化以后发现,直接生成了各类文件,我们期待的是生成一个shared.git文件夹
    怎么做?首先要先建好文件夹shared.git,然后在该文件夹下面初始化!!!
    3.在F:\develop\workroom下面分别建立user1user2文件夹
    4.将中央仓库的内容克隆到user1
进入user1– >鼠标右键Git Clone– >进行下列设置
android学习之路(八)---- Git版本控制_第24张图片
    5. 在F:\develop\workroom\user1下面创建一个文件index.jsp,然后用记事本打开,写上:

 user1 add file

    6. 在F:\develop\workroom\user1下面点击鼠标右键– >TortoiseGit– >settings
android学习之路(八)---- Git版本控制_第25张图片
点击应用,确定
    7. 选中index.jsp,点击鼠标右键,– >TortoiseGit – >Add.. – >选中index.jsp
– >OK– >OK (这样就将index.jsp纳入版本控制了)
    8. 选中index.jsp,点击鼠标右键:– >Git Commit- >”master”
    9.
android学习之路(八)---- Git版本控制_第26张图片
    10. 发现index.jsp的图标变为:
这里写图片描述
表示提交成功了!!!(注意:是提交到本地仓库里面了,即F:\develop\workroom\user1\.git)
    11、将本地的仓库push到中央仓库:
    11.1 在F:\develop\workroom\user1\下面点击鼠标右键– >TortoiseGit– >push
    11.2 上面的push可以直接添加到鼠标右键弹出的菜单中:
     TortoiseGit– >settings– >General– >Context Menu– >选中pullpush

    12.user2的工作:
    12.1 Git Clone
    12.2 设置user2的信息:
F:\develop\workroom\user2– >鼠标右键–> TortoiseGit–>setting–>Git
    设置的信息放在了F:\develop\workroom\user2\.git\config文件里面
    12.3 将index.jsp中的内容改为:

user1 add file
user2 update file

这里写图片描述
    表示修改过,尚未提交
    12.4 将修改后的文件提交到user2的本地仓库中,注意,这里的图形界面不用add,直接在图标上面点击鼠标右键– >Git commit –>”master”,增加备注信息。
     12.5 将user2的本地仓库push到中央仓库在F:\develop\workroom\user2点击右键:Git push – >OK

13. 打开:F:\develop\workroom\user1– >鼠标右键– >Git pull则完成了
(1)、显示的情景分析:
     1. 首先,user1和user2分别从中央仓库里面clone了相关内容到各自的本地仓库,然后分别修改index.jsp
     2. user1
    2.1 user1将index.jsp修改为:user1 update the index.jsp
     2.2 user1将index.jsp纳入版本控制,并提交到本地仓库
    2.3 user1将本地仓库push到中央仓库
    3. user2
    3.1 user2将index.jsp修改为:user2 update the index.jsp
     3.2 user2将index.jsp纳入版本控制,并提交到本地仓库
    3.3 此时的user2无论是push或者pull到中央仓库都会发生冲突了conflict!!!并且pull
index.jsp的图标变为:
这里写图片描述 (冲突图标)
     原因:因为刚刚两个人都修改了index.jsp的同一行都进行了修改操作,但是,如果修改的是不同的行,
那么就不会发生冲突了
    解决:选中冲突文件– >右键– >TortoiseGit – >Edit conflicts– >会出现一些响应的文件:
    index.jsp.LOCAL.jsp :本地最新版本的
    index.jsp.REMOTE.jsp : 别人push到中央仓库的,中央仓库最新版本的
     index.jsp.BASE.jsp : 我本地没有修改时的内容
android学习之路(八)---- Git版本控制_第27张图片
    ①.比较TherirsMine面板上面的内容,从Merged面板可以看出第一行和第二行不用整合,第三行需要整合,此时,在Mine面板上面选中飘红的行(第三行),点击鼠标右键,出现下面四行内容:

Use this text block : 表示就使用这样的整合
Use this whole file
Use text block from ‘mine’ before ‘theirs’:将我的内容放在他们内容的前面
Use text block from ‘theirs’ before ‘mine’

选择第三行或者第四行就行了!!
     ②、点击左上角的保存按钮,
    ③、告诉Git我已经解决完了冲突了!
    在冲突的文件上面点击鼠标右键– >TortoiseGit – >Resolve – >OK,则原来的一系列文件就会
消失了
    ④. 提交index.jsp到本地仓库,然后push到中央仓库
    4. 进入到user1的目录下,pull下中央仓库的内容,发现整合完毕!
    (4)、显示工作中,要定期push和pull,上班前pull,下班前push
    (5)、怎样看一个文件的修改记录呢?以上面的index.jsp为例:
android学习之路(八)---- Git版本控制_第28张图片
    在任何一个user下面选中index.jsp,点击右键,– >TortoiseGit– >Show log

(6)、将该文件与前一个相对比:
TortoiseGit– >Diff with previous version
(7)、我们编辑完一个文件提交到本地仓库之后,比如index.jsp,一般不会立即push到中央仓库,而是,先检查一下是否有人push过了,怎么检查呢?
android学习之路(八)---- Git版本控制_第29张图片选中index.jsp-- >TortoiseGit– >check for modifications– >refresh 即可
android学习之路(八)---- Git版本控制_第30张图片如果有人已经push过了,就先将中央仓库pull下来!!!
八、Git与Eclipse的整合(给Eclipse装插件)
(1) 选择Help- >Install New Software
(2) 点击”Add”选择安装文件,zip文件
android学习之路(八)---- Git版本控制_第31张图片
(3)
android学习之路(八)---- Git版本控制_第32张图片
(4) Next– >Next– >I accept… – >Finish
(5)
android学习之路(八)---- Git版本控制_第33张图片
(6) 重启eclipse
(7)查看插件是否安装好了?window – >Preference– >Team– >展开是否有Git
九、在eclipse下面操作git
(1)进入Git Repository Exploring
(2)选择:Clone a Git repository
(3)
android学习之路(八)---- Git版本控制_第34张图片
(4)Next
android学习之路(八)---- Git版本控制_第35张图片
(5)点击Finish
android学习之路(八)---- Git版本控制_第36张图片
(6)怎样将上面的user3导入到java面板中呢?
    在user3上面点击鼠标右键,– >Import Projects
android学习之路(八)---- Git版本控制_第37张图片
(7)Next– >Finish –>则将该项目放到了java面板当中
(8)设置用户信息:
    Perferences– >Team– >Git – >Configuration– >New Entry,分别设置
user.name和user.email
(9)修改index.jsp

user2 update the index.jsp
user1 update the index.jsp
user3 update the index.jsp

(10)在Index.jsp上面点击鼠标右键,Team– >Add to Index(将index.jsp纳入git版本控制)
(11)提交到本地仓库:选中index.jsp– >Team– >Commit
android学习之路(八)---- Git版本控制_第38张图片
点击Commit;
(12)push:选中user3– >Team– >Remote– >Push– >Next
android学习之路(八)---- Git版本控制_第39张图片
(13)Finish– >OK
(14)校验是否push成功:
进入F:\develop\workroom\user2 ,Git pull一下查看index.jsp的内容即可!!
android学习之路(八)---- Git版本控制_第40张图片
(15)在index.jsp上面点击鼠标右键,在Team下面有Compare WithReplace with(可以恢复成以前每次修改时的状态)
(16)在Git Repository Exploring面板下:
这里写图片描述
(17)注意:在Eclipse中只能给一个用户设置信息:user.nameuser.email等等,其他用户的信息设置不能在Eclipse中操作
(18)editeclipse下面解决冲突的方法:
    1.新建user3 user4,都修改了index.jsp,user3push到中央仓库,user4push的时候出现冲突!
    2. 在出现冲突的文件上面点击鼠标右键,– >Team– >Merge Tool– >在弹出的对话框中选择第二个,–》OK
android学习之路(八)---- Git版本控制_第41张图片
3.选中user4下面的问题index.jsp– >Team– >Add to Index,整合完毕,然后commit,push
十、topSSH远程版本控制
  1. 安装topSSH
  2.
android学习之路(八)---- Git版本控制_第42张图片
十一、分支:
android学习之路(八)---- Git版本控制_第43张图片
  1.实际开发中一般不会使用master分支进行开发,应该首先提交到develop分支上面去,到了稳定的阶段才会push到master分支上面
  2.产品实际开发过程中走的流程:
android学习之路(八)---- Git版本控制_第44张图片
案例:
android学习之路(八)---- Git版本控制_第45张图片
1.给新项目建立一个中央仓库,在D:\software\repository\git下面新建一个文件夹Apollo.git,打开文件夹,新建一个空仓库(共享仓库)
android学习之路(八)---- Git版本控制_第46张图片
2.在Eclipse中克隆下中央仓库
3.创建F:\develop\workroom\Apollo文件夹,并在当中使用TortoiseGit克隆上面的仓库,并且里面有一个index.jsp,并插入:HelloWorld!!! 然后,add,commit,push,这时即有了基础代码了
4.回到eclipse界面,克隆中央仓库,到F:\develop\workroom\Apollo(要首先删除原来的用户)
5.import projects,然后进入java面板,将index.jsp修改如下:

HelloWorld!!!
Function 1;(ApolloV1.0)

然后–add–commit–push
6.发布v1.0: (打Tag):选中Apollo– Team–Advanced–Tag
android学习之路(八)---- Git版本控制_第47张图片
6.新建一个分支,选中工程名称–TeamSwitch toNew Birtch
android学习之路(八)---- Git版本控制_第48张图片
点击Finish自动切换成develop分支!!!
7.进行2.0的开发(基于develop分支):
在工程Apollo下面打开index.jsp,修改如下:

HelloWorld!!!
Function 1;
Function2;
Fuction 3;

这时候表示V2.0已经开发到一半了!!!
  8.V1.0发现了Bug,要去修复,所以现在要暂时停止v2.0的开发,将开发中的2.0,commit,
  9.找到1.0的代码进行修复,所以要切换,在工程名上面点击右键–TeamSwitch Toother–选中V1.0
New branchBranch name:V1.0_fixup
android学习之路(八)---- Git版本控制_第49张图片
  点击Finish,工程切换到Apollo V1.0_fixup,查看此时工程下面的index.jsp:

HelloWorld!!!
Function 1;

  10、解决bug:将上面的代码修改为:

HelloWorld!!!Nihao.
Function 1;

然后addcommit(备注写上”fixup”)
  11. 马上发布一个V1.1:
选中工程–Team–advanced–Tag
android学习之路(八)---- Git版本控制_第50张图片
  12. 把刚才修复的bug整合到刚才暂停的V2.0当中,选中工程名,切换到develop分支!
  13. 整合,选中工程名称,–Team–Merge–Tags–V1.1(或者–Team–Merge–Local–V1.0_fixup),至此,整合完毕!!

你可能感兴趣的:(android学习,android)