IDEA配置Git进行代码管理

随笔


Git介绍

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git组成部分:

SVN是集中式的,Git是分布式的。集中式就是所有的代码都存储在中央服务器,分布式就是每台电脑都是中央服务器。

使用Git分支开发流程

从一般开发者的角度来看,git有以下功能:
  1. 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
  2. 在自己的机器上根据不同的开发目的,创建分支,修改代码。
  3. 在单机上自己创建的分支上提交代码。
  4. 在单机上合并分支。
  5. 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
  6. 生成补丁(patch),把补丁发送给主开发者。
  7. 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
  8. 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:
  1. 查看邮件或者通过其它方式查看一般开发者的提交状态。
  2. 打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
  3. 向公共服务器提交结果,然后通知所有开发人员。
日常开发流程:

Git安装配置

本地下载安装

公司内可能会把Github封掉了,所以使用淘宝提供的镜像下载
下载地址:http://npm.taobao.org/mirrors/git-for-windows/
安装方法参考:https://www.cnblogs.com/wj-1314/p/7993819.html

远程仓库配置ssh密钥:
  1. 打开本地Git Bash

设置Git的user name和email:(如果是第一次的话)

$ git config --global user.name "1805xxxx"
$ git config --global user.email [1805xxxx@cnxxxx.com](mailto:1805xxxx@cnxxxx.com)
  1. 创建 SSH Key
$ ssh-keygen -t rsa -C [1805xxxx@cnxxxx.com](mailto:1805xxxx@cnxxxx.com)

连续3次回车,在C:\Users\1805xxxx.ssh 目录下最后得到了两个文件:id_rsa和id_rsa.pub,其中id_rsa.pub就是需要配置到远程仓库的公钥,打开复制ssh-rsa这段代码,再进入远程Git仓库进行配置。

  1. 远程Git仓库配置

创建远程Git仓库

公司GitLab地址:http://opensource.cnxxxx.com/ (公司内网)
首先新建一个Git仓库:填写项目名称和项目描述,可见等级根据自己需求定义。

新建项目
项目管理

本地IDEA使用Git

先测试本地环境Git是否安装成功,在设置里找到Git—Test

工作开始前都先把代码从github库上拉取下来,更新自己的代码,避免别人修改过的代码与自己的有冲突,必须要养成这样一个良好的习惯。

clone

拿到git路径,打开IDEA,选择Checkout form Version Control,检出仓库到本地:

在URL中输入git地址,点击Test进行测试连接,下边Director选择自己的工作空间,连接成功后,点击Clone按钮,即可将远程仓库克隆到本地。

.gitignore

按照规则忽略文件
安装.ignore插件,配置.gitignore文件

安装完以后可以看到与规则匹配的文件都变成灰色了,即使修改了也不会被提交。

add

在项目中新建文件的时候,IDEA会询问是否将该文件加入版本控制,如果选择了是,那么就相当于执行了add命令,文件名会变绿色,如果选择了否,那么文件名会变红色,未加入版本控制。
新建文件时,未加入版本控制:


选择Yes,加入版本控制,文件名会变绿色:

commit

进行文件的提交,提交文件后,可以在IDEA提供的版本控制里边查看当前分支开发情况:
localMaster为我自己本地建的分支。origin/master为远程主分支。

这个时候,只在自己本地仓库存在该文件,远程Git仓库并不存在。

fetch

比如这个时候有人在该package下提交了另外一个文件,并提交到了远程仓库,远程仓库多了RemoteGitTest.java文件,但是并不影响本地。如果要同步远程仓库的代码,需要使用fetch命令。

该命令会将远程仓库的代码同步下来,但是并不会合并。

可以看到最左侧为主分支,然后自己的本地分支突出来了。

pull

pull和fetch命令都是从远程仓库拉取代码,但是fetch相当于是从远程获取最新版本到本地,但不会自动merge。pull是会自动fetch,并且merge代码。
如果需要有选择的合并git fetch是更好的选择。效果相同时git pull将更为快捷。

merge

现在本地仓库和远程仓库有了不同,为了提交代码,必须先将代码进行合并,在IDEA右下角,是有当前分支的名称的,可以快速进行切换自己的本地分支。

切换到本地的主分支,然后点击远程分支,选择Merge into Current,将远程分支合并到本地。这样,该分支就是包含远程代码的最新代码。

合并后,如果有冲突需要解决冲突,最后在控制台可以看到如下:

继续修改本地文件,可以看到现在就在一个分支上了。

push

合并完代码后,现在代码都是存放在自己的本地电脑中的,其他人并看不到,所以需要推送到远程仓库,让所有人都看到。

点击push后会出现Push Commits的窗口,里边都是自己本地仓库的提交记录,右侧是修改过的文件,点击下边的Push,即可推送到远程仓库。

推送完成后,在IDEA右下角会显示推送成功的消息:

然后看本地控制台:标签都到了同一位置,说明本地与远程代码保持了一致。

branch

有时候会接到多个开发任务,但是这多个开发任务修改的是不同位置的代码,这个时候可以快速拉取多个分支,然后分别完成不同的开发任务。
选择某一个分支,点击checkout As... 意思是从远程分支拉取一个新的分支

我这里拉取了一个test分支

点击ok,右下角自动给你切换到test分支,并且本地分支栏也多了test分支

如果想切回其他分支,只需要选中其他分支,然后点击Checkout即可快速切换到另一个分支。两边修改的代码互不影响。

以上就是在IDEA中快速进行分支开发。

SourceTree进行Git管理

SourceTree只是通过UI的方式来方便进行版本管理,实际上和使用Git Bash写脚本命令一样就,增加了交互式界面,操作也更安全些。

1.下载sourcetree

https://dl.softmgr.qq.com/original/Development/SourceTreeSetup-3.2.6.exe

下载后安装默认安装,需要修改一些文件,才能跳过验证,破解安装,步骤如下:

  1. 初次启动sourcetree

会在个人目录生成 C:\Users\1805xxxx\AppData\Local\Atlassian,注意你的个人目录

如果看不到是因为AppData是隐藏文件夹

  1. 关闭sourcetree安装验证

C:\Users\1805xxxx\AppData\Local\Atlassian\SourceTree下创建名为accounts.json的文件

[{
  "$id": "1",
  "$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
  "Authenticate": true,
  "HostInstance": {
    "$id": "2",
    "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
    "Host": {
      "$id": "3",
      "$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
      "Id": "atlassian account"
    },
    "BaseUrl": "https://id.atlassian.com/"
  },
  "Credentials": {
    "$id": "4",
    "$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
    "Username": "",
    "Email": null
  },
  "IsDefault": false
}]
  1. 修改user.config
    然后在进入C:\Users\1805xxxx\AppData\Local\Atlassian\SourceTree.exe_Url_dbhf2dawcrrrvxjjwvb2mxghqxuehspc\3.2.6.3544
    修改user.config内容,增加下面代码:
            <setting name="AgreedToEULA" serializeAs="String">
                <value>True</value>
            </setting>
            <setting name="AgreedToEULAVersion" serializeAs="String">
                <value>20160201</value>
            </setting>

4.再次启动安装程序
默认安装,跳过了注册界面,由于我们将使用git客户端,因此选择我不想使用Mercurial即可。

配置SourceTree

配置token

之后就可以开始项目开发版本管理了,例如开始拉取一个项目,注意一般开始使用dev分支,确认没问题的代码才会合并到master上

clone

就可以把远程Git仓库下的项目克隆岛本地就行管理了,其他具体用法可以参考网上的教程。
以上就是Git的安装和使用的一些记录。

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

推荐阅读更多精彩内容

  • 简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快、最简...
    JonesCxy阅读 1,005评论 0 3
  • Git 是目前最流行的分布式版本控制系统之一。 版本控制指的是,记录每次版本变更的内容和时间等细节,保留各版本之间...
    神齐阅读 1,396评论 0 7
  • 前言 大家好!在下游回来了!不啰嗦快进正题!本篇文章是面对刚开始接触Git的新手,所讲命令并不全,在文章结束会放入...
    老匡话Android阅读 3,914评论 -2 18
  • 这篇博文是自己在学习git过程中的思考总结。本文仅仅代表个人的看法,如有不妥地方还请本文文末留言。 😊 原文链接g...
    Ming_Hu阅读 1,054评论 4 18
  • 小王子,麻麻爱你!这个周末麻麻就可以回家抱抱亲亲宝贝,愿宝宝依然任性无限,耍赖无边! 小王子,当初粑粑麻麻希望你像...
    李豫一阅读 408评论 0 0