【基础笔记】Git 分布式版本控制系统

什么是Git?

  • Git分布式版本控制系统(Version Control System),是把代码仓库完整地镜像下来,相当于每个人的电脑都是一个完整的版本库,这样的话,任何一处协同工作的服务器出现故障,都可以用任何一个镜像出来的本地仓库恢复。并且,即便在网络环境比较差的情况下也不用担心,因为版本库就在本地电脑上。
  • 工作原理/流程:


    gitTheory.png

    Workspace:工作区
    Index / Stage:暂存区
    Repository:仓库区(或本地仓库)
    Remote:远程仓库


Git、Gitblit、GitHub、GitLab的区别

GitblitGItHubGitlab这3个都是基于Git的版本控制系统。都可以通过Git软件来进行对代码管理的相关操作。

  • Github:最流行的开源项目托管仓库,很多大神的开源框架都可以在上面找到,后被微软收购。
  • Gitblit是使用钩子,通过钩子记录版本。是对同一个分支进行提交,之后再合并(目前公司在用,搭建的私有服务器)。
  • Gitlab拥有GItHub的一切,让团队对它们的repositories拥有更多的控制。可以设置project的权限,让用户分享一部分代码。提供了web界面,每个人通过创建的一个新分支来提交代码,一般用在企业、学校内部网络搭建git私服。

Git的基本使用

1. 安装Git:网上找到Git傻瓜式安装(略)Git下载地址

2. 创建本地代码仓库及相关操作:

①. 配置用户信息
鼠标右键找到Git Bash并打开,配置身份信息,这样在提交代码的时候Git就可以知道是谁提交的了。

configGit.png

②.创建本地仓库
给项目TestCode建立一个本地代码仓库,先进入到项目的目录下面
TestCode.png

接着在目下下面输入git init的命令,就创建好了本地代码仓库。
init.png

③. 删除本地仓库
仓库创建完成后,会在TestCode根目录下生成一个隐藏的.git文件夹,这个文件夹是用来记录本地所有的Git操作的,如想删除本地仓库,只需要删除这个文件夹就可以了。
.giepng

④.提交本地代码
add 用于把想要提交的代码先添加进来,而commit 则是真正地去执行提交操作。git add .添加所有文件,git commit -m "First 提交."提交,在commit 命令的后面,我们一定要通过-m参数来加上提交的描述信息,没有描述信息的提交被认为是不合法的。(git提交和修改多数在Android Studio中操作,暂不介绍如何在Git Bash进行操作和查看)

⑤. Git创建分支:

  • 为什么要创建分支
    在发布1.0版本的时候建立一个分支,然后在主干线上继续开发1.1版本的功能。当1.0版本上发现任何bug的时候,就在分支线上进行修改,然后发布新的1.0版本,并记得将修改后的代码合并到主干线上。这样的话,不仅可以轻松解决掉1.0版本存在的bug,而且保证了主干线上的代码也已经修复了这些bug,当1.1版本发布时就不会有同样的bug存在了。
  • 查看和创建分支
    git branch查看当前版本库中属于哪个分支,git branch version1.0创建名为version1.0的分支,使用git checkout version1.0切换到version1.0的分支上。(merge:合并代码)

⑥.忽略文件
在项目根目录和app模块下的.gitignore的文件中可以查看,忽略上传的文件。Android Studio自动生成的一些默认配置,通常情况下,这部分内容都是不用添加到版本控制当中的
⑦.查看修改内容、文件变动、撤销未提交修改、查看提交记录:git statusgit diffreset HEAD <file> 和 git checkout <file>git log

3. 与远程版本库协作

①.克隆代码
git clone <url>

②.本地代码推送到远程版本库
git push origin master其中origin 部分指定的是远程版本库的Git地址,master 部分指定的是同步到哪一个分支上

③.同步远程版本库代码

  • git fetch origin master,同步下来的代码并不会合并到任何分支上去,而是会存放到一个origin/master 分支上,用git diff origin/master查看远程版本库修改了哪些东西,git merge origin/master将origin/master分支上的修改合并到主分支上。
  • git pull origin masterpull命令则是相当于将fetch和merge这两个命令放在一起执行了,它可以从远程版本库上获取最新的代码并且合并到本地

GitBLit的使用

在csdn上找到很详细的一篇文章,包括创建项目,Colne,上传,提交等等这里就不赘述了。GitBlit的使用教程


Android Studio中使用Git

1. 在Android Studio中添加Git
在File-->Settings-->Version Control-->Git中添加git.exe的地址

git.exe

2.update project
在VCS工具栏下点击update project,默认选择下面两个选项
update project

merge 合并:采用合并的方式来更新代码,此时会产生一个commit,这也是一般常用的默认的操作,这个的好处是能够在log中看到所有的操作记录,但是对于代码洁癖来说,可能会无法接受。
Rebase 保留本地项目代码:简单来说就是所有的本地commit都是默认放到远程的commit记录的顶部,log也只会有一条记录线,简洁,但是有时候排查问题会不方便。
Branch Default 默认分支:每个分支都可以设置自己的update方式,可以在config中设置,这个是选择分支默认的方式
如果本地和远程仓库都有改动会进入到Merge页面
merge.png

点击apply后会将merge之后的代码保存到本地。
3.commit和Push

commit之前一定先进行update project。

点击VCS选择Commit。
Commit.png

选择需要的改动事项后Commit and push。
commitWarning.png

提示你有错误或者警告,警告可以不用管继续点击Commit and Push
push.png

此时进入到Push界面,会以时间降序的方式排位没有Push的Commit,右边是改动的文件,点击Push就可以提交到远程仓库了。如提示输入账号密码,输入之后就可以成功Push了。

其他参考使用说明
Git官方说明
结合Gitlab在Android Studio中使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351