IDEA下通过Git实现代码管理
1、介绍
1.1 Git概述
Git是类似于SVN等代码管理软件,使用分布式技术实现。Github是互联网代码仓库,每个人可以在上面创建自己的仓库,使用git完成同github仓库的代码同步等管理工作。
IntelliJ idea->Git: 使用
Git->GitHub: 同步资源
1.2 Git逻辑架构
git架构上分为远程仓库、本地仓库和工作空间。远程仓库就是位于GitHub上的仓库,本地仓库是为用户本机的仓库目录,工作空间是用户开发所处的目录。三者关系与操作如下图所示:
远程仓库->本地仓库: 下载远程仓库到本地仓库(git clone)
本地仓库->工作空间: 检出本地仓库项目到工作空间(git checkout)
工作空间-->本地仓库: 提交变更到本地仓库(git commit)
本地仓库-->远程仓库: 推送本地仓库到远程仓库(git push)
1.3 Git分支和标记
branch是分支,是一个独立发展的路线,成熟后会合并到master主分支上。tag是分支推进过程中的里程碑,是一个记号。
1.4 Git帮助
#查看所有命令
cmd>git help -a
#
cmd>git help -g
2、Github
使用git前需要在github上注册账号,并创建字节的仓库目录。流程如下:
-
登录github网站
http://github.com
-
注册用户
-
激活账号
登录邮箱,激活账号即可。
-
创建仓库
-
查看github上仓库列表
-
github上的仓库
在setting选项卡中进行删除。如下图所示:
点击删除按钮后,弹出警告窗口:
输入确认删除的仓库名称后,最后才可删除!
3、Git安装、配置与连接
Git使用ssh连接github,下载git后不需要再单独下载ssh软件,git内部集成ssh软件包。
3.1 下载软件包Git-2.16.2-64-bit.exe
3.2 安装软件到指定目录
3.3 进入git-bash命令程序
执行以下命令:
cmd>git-bash.exe
进入命令行窗口,界面如下:
3.4 生成公私密钥对
cmd>ssh-keygen -t rsa -C "xxx@xxx.com"
注意:-C后使用的是在github中注册时所用的email地址。
查看在home目录下生成公私秘钥文件
windows的主目录位于C:user${当前用户}.ssh下。
3.5 复制公钥文件内容到GitHub上
打开GitHub的公钥管理页面,如图所示:
定位到SSH and GPG keys条目,如下图所示:
点击new SSH Key按钮,如下图所示:
在文本框中粘贴生成公钥文件内容,输入title后,点击add SSH Key即可。如下图:
3.6 在git-bash命令下测试是否能够ssh到github服务器
# 运行git-hbash命令行程序
cmd>git-bash.exe
# ssh到远程github主机
$>ssh git@github.com
出现如下图信息,表示连接成功!
4、Git常用命令
4.1 标签和分支
标签是一条分支上具有里程碑式的阶段划分,分支是两条不同的路线。一条主分支就是master分支,在开新功能时通常会创建新的分支,在新分支上进行开发,成熟后再合并到master主分支上去。
4.2 本地仓库命令
仓库命令都是针对整个仓库进行的操作,因此命令后面不加文件等参数。
-
git init
该命令时在本地创建仓库目录后,进入目录下,将该目录初始化层仓库目录的过程。该命令会创建.git目录。
#创建目录 $>mkdir repo1 #进入目录下 $>cd repo1 #进行初始化处理 $>git init
-
git clone
克隆仓库是在首次使用远程仓库时,即本地没有仓库目录,从远程服务器下载整个仓库到本地文件系统中的初始化本地仓库过程。因此需要指定远程仓库的url地址,该地址可以在github的仓库主页上找到。url构成由域名构成如下:
https://github.com/{github注册账号}/{仓库名称}.git
以下命令就是下载oldboy-xupccc账号下的test1仓库到本地系统中:
# 进入本地仓库目录下(以下同) $git>cd localrepo # 使用远程仓库名 $>git clone https://github.com/oldboy-xupccc/test1.git # 指定本地名 $>git clone https://github.com/oldboy-xupccc/test1.git localtest1
-
git add
该命令是将文件添加到跟踪区域,以备能够进行版本管理。
$>git add *.txt $>git add README.md
-
git reset
重置操作,相当于撤销之前的操作。比如add一个文件reset后,相当于文件仍没有被跟踪。
$>git reset
-
git status
查看状态
$>git status
-
忽略某些文件
git使用.gitignore文件指定哪些文件忽略。
# 以o或a结尾的文件忽律 *.[oa] # 忽略以~结尾 *.~
-
gif diff
git status只能查看文件的状态,但是具体哪些做了修改,可以使用diff来看。
$>git diff
-
git pull
pull命令是下载远程仓库内容到本地仓库,覆盖本地仓库的内容。
$>git pull
-
git push
push命令是将本地仓库上传到远程仓库,覆盖远程仓库的内容。
$>git push
4.3 git remote
git remote是远程仓库命令组,管理跟踪的分作所在远程仓库的集合。管理远程仓库的工作,包括添加远程库,移除废弃的远程库,管理各式远程库分支,定义是否跟踪这些分支,等等。
4.3.1 查看远程当前仓库
要查看当前配置有哪些远程仓库,可以用git remote命令,它会列出每个远程库的简短名字。在克隆完某个项目后,至少可以看到一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库
#查看当前远程仓库的简短描述
$>git remote #输出orginal
#查看当前远程仓库的详细描述
$>git remote -v #输出origin https://github.com/oldboy-xupccc/big12.git (fetch)
4.3.2 添加新的远程库
要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用。
$>git remote add oro https://github.com/oldboy-xupccc/big12.git
查看结果:
$>git remote -v
输出内容如下:
origin https://github.com/oldboy-xupccc/big12.git (fetch)
origin https://github.com/oldboy-xupccc/big12.git (push)
oro https://github.com/oldboy-xupccc/big12.git (fetch)
oro https://github.com/oldboy-xupccc/big12.git (push)
4.3.3 使用短名fetch仓库的文件
fetch是抓取远程仓库有,本地仓库没有的文件。
#使用短名进行抓取
$>git fetch oro
#使用具体的远程地址进行抓取
$>git fetch https://github.com/oldboy-xupccc/big12.git
4.3.4 推送数据到远程仓库
$>git push orignal master
4.3.5 查看远程仓库的信息
$>git remote show origin
输出如下内容:
* remote origin
Fetch URL: https://github.com/oldboy-xupccc/big12.git
Push URL: https://github.com/oldboy-xupccc/big12.git
HEAD branch: (unknown)
Remote branch:
refs/remotes/origin/master stale (use 'git remote prune' to remove)
Local branch configured for 'git pull':
master merges with remote master
4.3.6 删除和重命名远程仓库在本地的名称
#重命名远程仓库
$>git remote rename oro oro2
#删除远程仓库
$>git remote rm oro
5、总结
git作为一种代码管理工具,因其具有分布式特点,可以随时随地进行代码提交和管理,因此受到越来越多企业的青睐。并且在各大开发环境中也都对其进行了集成。