两者都是基于Web的Git repositories仓库,拥有流水线型的web开发流程,很大程度上GitLab是仿照GitHub做出来的。它们为开发团队存储,分享,发布,测试和合作Web项目提供了中心化,云存储的场所。
GitHub:作为开源的代码库以及版本控制系统,拥有900万的开发用户。是目前最火的开源项目托管系统。同时提供公共仓库和私有仓库。但是如果使用私有仓库是需要付费的。
GitLab拥有更多的特性: (1)便捷的用户界面,在同一界面上获取到:projects,用户,最近的用户,群组和状态; (2)允许设置查看权限是公有还是私有; (3)允许用户选择分析一个project的一部分代码; (4)允许用户设置project的获取权限 (5)可以获取到团队的整体的改进进度
导航条的"+"进入创建页面:
创建工程页面:
Project path:项目路径,一般认为是项目名称 Import prject from:从哪导入项目,提供Github/Bitbucket等几个选项 Description(项目的描述):可选项,对项目的简单描述 Visibility Level(项目可见级别):提供Private(私有的,只有你自己或者组内的成员能访问)/Internal(所有登录的用户)/Public(公开的,所有人都可以访问)三种选项。SSH(Secure Shell)是一种安全协议,在你的电脑与GitLab服务器进行通信时,我们使用SSH密钥(SSH Keys)认证的方式来保证通信安全。 创建SSh密钥,将密钥的公钥添加到GitLab,以便通过SSH协议访问git仓库。 SSH 密钥的创建需要在终端(命令行)环境下进行,我们首先进入命令行环境。通常在OS X和Linux平台下我们使用终端工具(Terminal),在Windows平台中,可以使用Git Bash工具,git客户端安装目录下git-bash.exe文件
A:进入SSH目录:cd ~/.ssh
(1)如果还没有 ~/.ssh 目录,可以手工创建一个(mkdir ~/.ssh),之后再通过cd ~/.ssh进入SSH目录
(2)可以通过ls -l命令查看SSH目录下的文件,来确认你是否已经生成过SSH密钥;如果SSH目录为空,我们开始第二步B,生成 SSH 密钥;如果存在id_rsa.pub这个文件,说明你之前生成过SSH密钥,如何添加多个sshkey也不难,一般很少用,这里不介绍了。
B:生成SSH密钥
我们通过下面的命令生成密钥,请将命令中的YOUR_EMAIL@YOUREMAIL.COM替换为你注册gitlab时用的Email地址。
ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM"
在SSH生成过程中会出现以下信息,按屏幕的提示操作即可:
Note:Enter passphrase (empty for no passphrase) :时,可以直接按两次回车键输入一个空的 passphrase;也可以选择输入一个 passphrase 口令,如果此时你输入了一个passphrase,请牢记,之后每次提交时都需要输入这个口令来确认。
实践过程中Android studio 如果有密码无法同步,建议不要密码。
公钥默认地址:C:\Users\用户.ssh
连接git服务器生成可信任文件known_hosts,否则会报:Push failed: Failed with error: fatal: Could not read from remote repository.
Per android Studio help under SSH Executable:
Built-in: select this option to use the implementation provided by IntelliJ IDEA. Native: select this option to use native implementation. 修改SSH Executable 为 Native
SSH密钥生成结束后,根据提示信息找到SSH目录,会看到私钥idrsa和公钥idrsa.pub这两个文件,不要把私钥文件id_rsa的信息透露给任何人。我们可以通过cat命令或文本编辑器来查看idrsa.pub公钥信息。 (1)通过编辑器。使用你熟悉的文本编辑器,比如 记事本、Sublime Text等软件打开idrsa.pub,复制里面的所有内容以备下一步使用。
(2)通过cat命令。在命令行中敲入cat idrsa.pub,回车执行后命令行界面中会显示idrsa.pub文件里的内容,复制后在下一步使用。
(3)通过直接使用命令将id_rsa.pub文件里的内容复制到剪切板中
Windows: clip < ~/.ssh/id_rsa.pub
Mac: pbcopy < ~/.ssh/id_rsa.pub
GNU/linux (requires xclip): xclip -sel clip < ~/.ssh/id_rsa.pub
打开gitlab的Profile配置页面,选择SSH Keys,如图: 添加SSH公钥。填写Title和Key,其中Title是Key的描述信息,Key是上面复制的SSH公钥的内容,直接粘贴到输入框中保存即可
1)项目名称-Team-Share Project... 在Configure Git Repository窗口,点击“User or create repository in parent folder of project”,然后点击“Create Repository”,新建一个本地仓库: 注意:这里一定要选择"create the Repository in the parent folder of the project……",否则,git会把整个MyUtils目录放在gitLab的MyUtils目录下,就是一个MyUtils目录又嵌套另一个MyUtils目录 此时,项目中可以看到很多问号,表示有文件需要提交: 2)项目右键-Team-Commit Commit message输入提交的理由;点击Select All;然后点击Commit and Push 这时候会弹出一个Destination Git Repository窗口:
URI填写在1.2步中获得的https格式的项目地址; Authentication填写github的账号和密码; 勾选“Store in Secure Store”以免每次都要输入密码。 Next > 3)在Push Ref Specifications窗口中,点击“Add All Branches Spec”,其他不用填,然后点击Next > 4)自动选择了master,点击Finish 上传成功,点击OK 5)在gitLab上验证是否上传成功
Team- Add to Index,可以观察到图表有了变化
Team-Remove from Index
Team-Commit-Commit and Push (该操作会自动将文件加入索引控制)
Team-Show in History 选择对比模式(Compare Mode)
(1)在远程gitLab上创建分支 commits-NEW BRANCH 新分支的hotfix,是用来线上bug修复的,所以create from 是 master (2)在MyEclipse上创建分支 Team-Swtich To-New Branch 创建完新分支,会自动切换到分支上
Team-Pull 我使用MyEclipse拉取代码的时候报错: 出现这个问题大概是因为你要设置本地和远程的分支的对应值,找到自己的的本地git路径-项目-.git-config。文件原内容:
[core] repositoryformatversion = 0 filemode = false logallrefupdates = true添加如下内容:
[branch "master"] remote = origin merge = refs/heads/master [branch "hotfix"] remote = origin merge = refs/heads/hotfix [branch "develop"] remote = origin merge = refs/heads/develop [remote "origin"] url = http://10.127.138.129/wanglei_dev/servletLearn.git fetch = +refs/heads/*:refs/remotes/origin/*url:用于指定自己的的远程gitlab地址 branch:"XXX",远程分支有几个就对应有几个branch
为了模拟冲突,我在我本地develop的开发分支下,又创建了一个develop1的开发分支 (1)我在develop1的开发分支下修改了某个文件test.java,然后只commit。 (2)切换到develop开发分支下修改了同一个文件test.java,同样我也只是先commit (3)develop分支现在开发合并代码:Team-Merge,选择要合并那个分支 (4)合并之后我们会看到:冲突 (5)解决查看冲突: (6)我们通过5的操作可以查看到谁都改了什么,进而开始进行冲突的解决,解决完冲突我们会看到我们文件是这样: (7)我们需要加入的索引控制,上传即可
(1)新建一个目录,用来保存项目 (2)$ git svn clone svn://用户名:密码@10.12.4.53/pt/AutoPlatform/DemandManagement --no-metadata (3)进入clone的文件夹,带有.git目录的文件,查看svn的commit记录:git log (4)本地初始化git查看完成:git remote add origin http://xxx.xxx.xxx.xx/sysdev/lecture.git (5)推送到远程git仓库:git push -u origin master
