版本管理工具

什么是Git,Git与SVN区别是什么

什么是git

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git与SVN区别是什么

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

具体api可以参考:https://www.runoob.com/git/git-tutorial.html

Git结合android studio使用

安装Git

下载地址:http://git-scm.com/download/

安装步骤:双击安装,按默认选项一路下去即可。

安装完成后,在开始菜单里找到“Git”–>“Git Bash”,出现如下图,就说明Git安装成功!
在这里插入图片描述

配置信息

在上图命令行中输入你的用户名与邮箱

$ git config – globaluser.name “Your Name”

$ git config – globaluser.email “email@example.com”

命令中的 --global 参数表示你这台机器上所有的Git仓库都会使用这个配置

Android Studio中配置Git

在Android Studio中点击Settings–>Version Control --> Git,然后在Path To Git executable上输入你刚刚安装Git的位置,最后点击Test按钮出现Git executed successfully说明配置成功,如下图:
在这里插入图片描述

GitLab 使用

注册账号
这里说下注册账号的时候需要注意的事项。

如果注册账号的时候提示如下错误

therewas an errorwith the reCAPTCHA,please solve the reCAPTCHA again

那是因为注册时需要验证码验证,就是reCAPTCHA,是一个图形验证码。但是这个验证码需要FQ才能看得到,否则你一直都注册不了。如图:
在这里插入图片描述
GitLab账户配置SSH Keys
首先需要检查你电脑是否已经有 SSH Keys
在Git Bash 客户端,输入如下代码:

$cd ~/.ssh
$ls

在这里插入图片描述

如下说明已经存在,存在就可以忽略步骤
创建一个 SSH Keys
在Git Bash 客户端,输入如下代码:

$ ssh-keygen -t rsa -C "your_email"

然后根据提示进行相应操作,如下图所示:
第一个Enter表示Keys存储的位置,默认按回车键即可。第二个和第三个Enter表示Push文件的时候要输入的密码,不需要密码就默认按回车键即可,然后出现如图底部信息就说明创建成功了!
在这里插入图片描述
GitLab配置SSH Keys
进入上图所示存储 id_rsa.pub 的文件夹拷贝该文件中的内容,然后登录你的GitLab账号,点击网页右上角的头像–>Settings,点击左边菜单栏的 SSH Keys 进入页面添加 SSH key。如下操作:
在这里插入图片描述
在这里插入图片描述
创建项目
在GitLab网站点击导航条上的 “+” 即可进入创建项目的页面,然后根据提示填写相应信息,如下图:
在这里插入图片描述
Project path:项目路径
Project name:项目名称
Project deion (optional):项目描述(可选项)
Visibility Level:可见登记,Private表示私有的,只有你自己或者组内的成员能访问,Internal表示所有登录的用户,Public表示公开的,所有人都可以访问。
创建完成后是这样的:
在这里插入图片描述

Android Studio中使用Git

将项目上传到GitLab
本地已创建好的项目为WildmaGit
配置忽略文件
Android Studio创建项目后会自动生成.gitignore文件,这个文件可以用来忽略那些不用加入到仓库的文件。项目根目录下与module目录下都会生成该文件,如下:
在这里插入图片描述
一般情况下我们只需要将项目根目录下的/.idea/workspace.xml与/.idea/libraries改成.idea即可,其他没有特殊要求就用默认的。如下:
修改前:
在这里插入图片描述
修改后:
在这里插入图片描述
初始化本地Git仓库
点击Android Studio顶部菜单栏上的VCS–>Import into Version Control–>Create Git Repository,如图:
在这里插入图片描述
然后选择需要初始化的项目根目录,如图:
在这里插入图片描述
初始化之后发现文件名由原来的白色变成了红色,这表示文件已经被git跟踪了,但是并没有添加到仓库中。如图:
在这里插入图片描述
将本地Git仓库已与远程仓库进行关联
打开项目文件夹,在该文件夹中打开Git Bash。输入如下命令后就代表本地Git仓库已与远程仓库进行关联了。

gitremote add origin git @gitlab.com:wildma/WildmaGit.git

具体步骤见下图:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
添加文件
选中项目的根目录,点击Android Studio顶部菜单栏上的VCS–>Git–>Add…,如下图:
在这里插入图片描述
添加文件后发现文件名由原来的红色变成了绿色,说明已经将文件添加进仓库了。如下图:
在这里插入图片描述
提交文件
每次提交前需要先更新项目,原因是如果是多人合作的项目,需要先将远程仓库中他人提交的最新代码更新到本地仓库。如图:
在这里插入图片描述
然后选中Merge,点击OK,如果本地代码与远程代码有冲突就会弹出冲突提示,根据需求Merge即可,如图:
在这里插入图片描述
Update后就可以提交文件了,选中项目的根目录,点击Android Studio顶部菜单栏上的VCS–>Git–>Commit Directory…,如图:
在这里插入图片描述
然后会弹出如下提交框,这里可以选择你要提交的文件和填写提交信息,如图:
在这里插入图片描述
提交文件后发现文件名由原来的绿色又变成了最开始的白色,说明已经将文件提交上仓库了。如图:
在这里插入图片描述
将提交的文件推送到远程仓库
选中项目的根目录,点击Android Studio顶部菜单栏上的VCS–>Git–>Push…,如下图:
然后会弹出如下推送框
在这里插入图片描述
点击Push后,就可以在GitLab上看到刚刚推送的内容了。如下图:
在这里插入图片描述

从GitLab上clone项目

首先到GitLab上复制项目的地址,如图:
在这里插入图片描述
然后点击Android Studio顶部菜单栏上的VCS–>Checkout from Version Control–>Git ,如图:
在这里插入图片描述
最后填写相应的信息即可,如下图:

Git Repository URL:填写刚刚复制的项目地址
Parent Directory:项目路径
Directory Name:项目文件夹名称
在这里插入图片描述
点击clone后,项目就clone下来了!

分支管理

分支策略
在实际开发中,我们会用到很多分支。这里说下各分支的作用。
master分支:最稳定的分支,保存需要发布的版本,不在该分支上做任何开发,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。
dev分支:开发分支,保存最新的代码,平时开发就在该分支上。当某个版本开发完成后就合并到master分支,然后在master分支进行版本发布。
feature功能分支:它是为了开发某种特定功能,从Develop分支上面分出来的。开发完成后,要再并入Develop
release预发布分支:它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式
bug分支:用来修复bug的分支,一般是线上版出现bug的时候,从master分支创建一个新的bug分支进行bug修复,修复完成合并到master分支和dev分支(保证master分支与dev分支同步),然后删除该bug分支。
实际开发中我主要用到这三个分支,当然每个人都不同,有些人还会细分到功能分支,预发分支。其中master分支与dev分支都需要推送到远程,为了其他成员能共同开发,bug分支则放在本地即可,你自己修复完bug删掉即可。
推荐阮一峰分支管理策略:http://www.ruanyifeng.com/blog/2012/07/git.html
分支操作
创建分支
点击Android Studio顶部菜单栏上的VCS–>Git–>Branches…,如图:
在这里插入图片描述
然后选择New Branch,输入分支的名字,例如“dev”,如图:
在这里插入图片描述
在这里插入图片描述
点击OK,分支dev就创建成功了,并且默认切换到该分支。重复上面的步骤可以看到当前分支显示的是dev,如图:
在这里插入图片描述
推送分支到远程
这时候我们在dev分支上修改内容,然后按照前面说的提交文件,将提交的文件推送到远程仓库即可。如图:
在这里插入图片描述
在这里插入图片描述
点击push,然后就可以到Gitlab上看到我们刚刚推送的dev分支了,如图:
在这里插入图片描述
切换分支
dev分支上版本V1.0开发完了,需要将代码合并到master上进行发布。因为当前在dev分支,所以需要先切换到master分支,点击Android Studio顶部菜单栏上的VCS–>Git–>Branches…,打开Git Branches窗口,然后选择本地分支栏下的master->origin/master,然后点击Checkout。如图:
在这里插入图片描述
合并分支
第三步已经将分支切换到master了,现在进行分支合并。点击Android Studio顶部菜单栏上的VCS–>Git–>Branches…,打开Git Branches窗口,然后选择远程分支栏下的origin/dev,然后点击Merge。如图:
在这里插入图片描述
这个时候到GitLab上却发现master分支上并没有合并到dev分支修改的内容,那是因为刚刚只是将远程dev分支的内容合并到本地master分支,本地master分支还没有push到远程,push一下就可以啦~ 如图:
在这里插入图片描述
这个时候发现GitLab上master分支与dev分支是保持一致的了。然后将最新的master分支打包发布即可!
删除分支
删除本地分支:
点击Android Studio顶部菜单栏上的VCS–>Git–>Branches…,打开Git Branches窗口,选中本地dev分支,选择Delete即可。如图:
在这里插入图片描述
删除远程分支:
点击Android Studio顶部菜单栏上的VCS–>Git–>Branches…,打开Git Branches窗口,选中远程dev分支,选择Delete即可。如图:
在这里插入图片描述
标签(Tag)管理
标签一般是用于标记某个发布的版本, 例如你发布了版本v1.0,这个时候会打一个v1.0的Tag,主要是方便以后查看和管理某个版本的代码。
1. 创建标签
方法一:
点击Android Studio顶部菜单栏上的VCS–>Git–>Tag…,如图:
在这里插入图片描述
然后填写Tag名称与Tag信息,点击Create Tag即可创建本地标签。其中Commit填写以前某次提交记录的记录号,表示在该次提交上打Tag。如果不填表示Tag打在最新提交的commit上。
如何获取Commit记录号:
VersionControl->Log>选中Commit记录->右键->Copy Revision Number,获取Commit记录号2a691fe224956b2c19ec6d5b20c2da4fdc432b7c
在这里插入图片描述
创建tag,如图:
在这里插入图片描述
方法二:
VersionControl->Log>选中Commit记录->右键->New Tag
在这里插入图片描述
输入Tag名称:关于版本的Tag,统一以V开头,如V1.0.20200624.5,Tag会自动关联到当前Commit记录以及对应的分支
方法三:
使用Git命令行,可以使用Git面板或者Android Studio的Terminal面板

$ git tag -a v1.6 -m “publish v1.6 version”

-a : Tag名称,如V1.6
-m : Tag备注信息,如"publish v1.6 version"

$ git tag -a v1.2 9fceb02 -m “my tag”

9fceb02 :commit记录Id,可以只需要前7位,不用完整
2.查看Tag标记
方法一:
点击Presentation Setting显示设置
在这里插入图片描述
将Show Tag Names选中
在这里插入图片描述
设置完毕,Log面板就可以现在Tag名称
在这里插入图片描述
方法二:
根据Tag名称搜索Tag标签,在Version Control面板点击搜索按钮或者使用快捷键Ctrl+F
在这里插入图片描述
支持模糊查询
在这里插入图片描述
方法三:
git命令
获取Tag列表

git tag

在这里插入图片描述
使用通配符来过滤Tag

git tag -l "v*"

在这里插入图片描述

3. 推送标签到远程
方法一:
点击Android Studio顶部菜单栏上的VCS–>Git–>Push…,如图:
在这里插入图片描述
然后弹出Push框,选中Push Tags,点击Push即可推送到远程。如图:
在这里插入图片描述
方法二:

git push origin --tags

在这里插入图片描述

最后到GitLab就可以看到刚刚创建的Tag了,如图:
在这里插入图片描述
4.checkout某个标签的代码
方法一:
建议新建本地分支,避免影响主分支代码
VersionControl-> Log -> 选中提交记录-> 右键 -> Checkout Revision ‘XXXXXXX’,
代码就还原到指定Tag的记录,我们就可以在当前代码中开发
在这里插入图片描述
方法二:
点击Android Studio顶部菜单栏上的VCS–>Git–>Branches…,如图:
在这里插入图片描述
然后选择Checkout Tag or Revision…,最后在弹出的Checkout框中填入Tag的名称即可。如图:
在这里插入图片描述
在这里插入图片描述
5.删除标签
方法一:
git命令
查看本地标签:

git tag

删除本地标签:

git tag -d tagName

方法二:
选中一个拥有Tag标签的提交记录-> 右键-> Tag ‘xxx’->delete
在这里插入图片描述

6.删除远程标签
方法一:
git命令

git push origin :refs/tags/tagName

以上命令需要在Android Studio自带的命令行中输入,如图:
在这里插入图片描述
方法二:
在删除本地tag的方法一时,会弹出是否删除远程tag,点击删除即可

Git复制其他分支提交

使用场景:比如在branchA分支中修改了某个bug,当前在branchB分支,想把branchA做的修改也”复制”到branchB分支来。
方法一:
cherry-pick用法

单个commit只需要git cherry-pick commitid

多个commit 只需要git cherry-pick commitid1..commitid100

注意,不包含第一个commitid , 即  git cherry-pick (commitid1..commitid100]

方法二:
选中提交记录然后,点击cherry-pick
在这里插入图片描述

Git同步远程分支

git fetch   #将某个远程主机的更新,全部取回本地

git branch -a       #查看本地及远程的所有分支,如下图

git branch -r       #查看远程所有分支

git branch           #查看本地所有分支

git checkout 分支 #切换分支:

git push origin -d 分支名  #删除远程分支: 

 git branch -d 分支名  #删除本地分支

git remote show origin  #查看远程分支和本地分支的对应关系

git remote prune origin #删除远程已经删除过的分支

情景1:同步别人新增到远程的分支

 1.git branch查看一下本地分支,再git branch -a查看一下远程分支,对比下,远程存在哪些本地没有的新分支.
  2.将某个远程主机的更新,全部取回本地:git fetch
  3.再次查看远程分支:git branch -a 发现远程的分支已经可以看见了
  4.拉取远程分支到本地:git checkout -b 远程分支名

情景2:本地删除了分支,远程也想删除
2.1:本地想要删除某个分支,远程仓库的这个分支也要删掉怎么办?

 a.使用git branch -d 分支名来删除本地分支。
 b.使用git push origin -d 分支名直接来删除远程分支。在次使用git branch -a,发现分支已经不存在了。

2.2:只把远程的删除掉怎么办?

a.使用git push origin -d 分支名直接来删除远程分支。此时删除的只是远程的分支,本地仍然存在

2.3:远程删除了分支,本地也想删除

1.git branch -a查看远程分支,红色的是本地远程远程分支记录。

2.执行下面命令查看远程仓库分支和本地仓库的远程分支记录的对应关系:

  git remote show origin  

3.会看到:
 
 refs/remotes/origin/远程仓库已经删除的分支名              stale (use 'git remote prune' to remove)

 其中:

 Local refs configured for 'git push':  命令下面的分支是本地仓库的远程分支记录中仍存在的分支,但远程仓库已经不存在。

4.输入git remote prune origin来删除远程仓库已经删除过的分支

5.验证 git branch -a

  此时可以看到本地远程分支记录已经和远程仓库保持一致了。

Git只删除远程仓库文件

一、删除文件
1.克隆远程仓库到本地库。
例如使用ssh方法:

git clone git@github.com:xxx/xxx.git

2.对需要删除的文件、文件夹进行如下操作:

git rm test.txt (删除文件)
git rm -r test (删除文件夹)

3.提交修改

git commit -m "Delete some files."

4.将修改提交到远程仓库的xxx分支:

git push origin xxx

二、删除远程仓库 但不删本地资源
我们在使用idea开发的过程中经常会出现新建项目的时候直接把xxx.iml文件也添加到了git trace
当然这并不会出现什么问题,问题是当我们把xxx.iml文件push到我们github上之后,然后在另一台电脑上pull了下来会出现一些问题,因为xxx.iml文件不是项目的源码。也就是说对于导入项目来说是多余的。
正规的源码目录:

src/

pom.xml

.ignore
但是,我们又不能直接在本地删除xxx.iml。因为该文件是我们在本地开发的时候必须的。
那么问题来了:我们要在保留本地文件的情况下,删除远程仓库的文件(程序员一定要通过技术手段来实现目的,捂脸笑)
ok,废话不多说,下面是解决方案:

把xxx.iml加到`.gitignore`里面忽略掉,然后提交使.gitignore生效,也既是

git rm -r --cached xxx.iml  //-r 是递归的意思   当最后面是文件夹的时候有用

(git add xxx.iml)      //若.gitignore文件中已经忽略了xxx.iml则可以不用执行此句

git commit -m "ignore xxx.xml"

git push

修改本地仓库与远程仓库的连接

在含.git文件的项目文件夹下,右键打开git bash

1、直接修改连接

git remote origin set-url +URL

2、先删后加

git remote rm origin

git remote add origin  +远程仓库地址

3、如果不想要之前的提交记录可以直接删除.git文件,再重新初始化仓库,提交代码

Git 解决合并冲突

Android Studio自带了解决冲突的工具,以下是操作步骤
选中项目->右键->Git->Resolve Conflicts
在这里插入图片描述
会出现一个弹窗,显示了冲突的文件,选择某个文件后,点击Merge
在这里插入图片描述
会出现三个代码框
在这里插入图片描述
a、左边的Local Changes代表”当前“分支上的修改;
b、右边的Changes from Server代表“合并进来”的分支上的修改;
c、中间的Result代表经过处理后的最终内容;
左上角有一排按钮,分别介绍一下作用
在这里插入图片描述
上下箭头:跳转到上(下)一个不同;
在这里插入图片描述
这三个从左往右依次代表:比较左边和中间的内容,比较中间和右边的内容,比较左边和右边内容;
在这里插入图片描述
这三个从左往右依次代表:接受两边没有冲突的改变,接受左边没有冲突的改变,接受右边没有冲突的改变,什么叫没有冲突的改变待会儿会解释;

现在回头看内容区域,会看到四种颜色
红色区域:代表当前分支和合并分支都编辑过的内容,属于冲突;
蓝色区域:代表被单方面编辑过的内容,属于改变;
灰色区域:代表被删除的内容,属于改变;
绿色区域:代表新增的内容,属于改变;

通过之前所述我们可以知道,真正需要解决的冲突只有红色区域,其他高亮区域只是为了让我们再次确认改变的内容是否合理,如果对自己的代码有信心,那就不用管那些区域了,c步骤中的三个按钮就派上用场了,你可以按照自己的需求接受改变的代码,通常可以直接接受两边没有冲突的改变:
在这里插入图片描述
接受后就变成上图了,现在我们需要解决冲突了,如果不记得自己的修改是什么,就可以关闭该工具,通过查找历史提交,比对历史代码来确认正确的代码;有的时候由于代码格式化的原因,你并没有改变代码的内容,但是格式化增加了一些空格,那么也会产生冲突。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值