天天看点

开发工具_版本管理Git使用指南私有平台建设参考手册Q&A

git是目前最流行的版本管理系统。

参考:

<a href="http://www.ruanyifeng.com/blog/2014/06/git_remote.html">http://www.ruanyifeng.com/blog/2014/06/git_remote.html</a>

<a href="http://www.bootcss.com/p/git-guide/">http://www.bootcss.com/p/git-guide/</a>

手册:

<a href="http://www.yiibai.com/git/">http://www.yiibai.com/git/</a>

官网:

git有很多优势,其中之一就是远程操作非常简便。基本上经常用的几个命令就能满足大多数场景的需求。同时可以和现有的ide集成开发环境结合使用。

首先看一下git是如何工作的:

开发工具_版本管理Git使用指南私有平台建设参考手册Q&amp;A

这里面涉及到了workspace、本地仓库和远程仓库。workspace就是本地的个工作空间,比如说我们的一个工程。本地的工程文件要和远程仓库交互,需要先在本地创建一个仓库,这时候就需要将本地的项目,提交到本地仓库中,然后再将本地仓库提交到远程仓库。

当然还有一些东西没法在这个过程里体现的,上图中只是托管的过程,实际上还有代码库的版本更迭的过程。这里用分支来管理不同的版本。创建一个git peoject默认的分支是master。

针对我们平时的一些场景来看下上面的过程:

我在本地创建了一个workspace,简单来讲就是创建了一个本地的工程项目,我如何让远程的代码库来管理我的代码呢?

创建工程项目,并创建本地仓库repository,并添加一个文件

创建好了本地的仓库,如何去管理本地仓库?

- 增加文件: git add

- 删除文件: git rm

- 重命名文件: git mv

- 更新文件:修改文件内容

- 检出: git checkout branch,用于本地分支的操作

- 查看状态: git status -s, git log

文件的增删改操作并没有提交到本地,需要commit之后才提交到本地仓库, 常用的提交命令git commit -a -m ” “或者git commit -m ” “, -m 提交的备注信息, -a 会自动提交已有文件的更新操作。 用户也可以在本地创建新的分支git branch new_branch, 当前的branch可以git branch命令查看,本地的branch切换git checkout new_branch。git checkout -b new_branch命令用于创建一个新的分支并切换到新分支。有了分支如何合并?在master分支下运行:git merge origin/new_branch,将会把新的分支合并到master分支。

本地的修改如何提交到远程仓库?

远程代码提交,需要先将本地代码添加到本地仓库,才能提交。

- 增加 git remote add &lt;主机名&gt; &lt;网址&gt;

- 提交 git push &lt;远程主机名&gt; &lt;本地分支名&gt;:&lt;远程分支名&gt;

本地对文件的update、mv、rm会影响仓库中的代码吗?

本地没有代码,从远端下载的代码,又该如何管理?

- git clone

- git fetch &lt;远程主机名&gt; &lt;分支名&gt; //获取更新 origin

- git pull &lt;远程主机名&gt; &lt;远程分支名&gt;:&lt;本地分支名&gt; //获取更新并与本地合并

远程主机的管理 git remote add &lt;主机名&gt; &lt;网址&gt; git remote show &lt;主机名&gt; git remote rm &lt;主机名&gt; git remote rename &lt;原主机名&gt; &lt;新主机名&gt;

具体的安装可以参照相关的官方教程实现,当然还有一些简便方法,可以下载all-in-one安装包,一次性安装。安装包可以去bitnami官网下载。

开发工具_版本管理Git使用指南私有平台建设参考手册Q&amp;A

基本的使用规范和github的使用是相同的,如果用户需要使用ssh来提交代码,需要添加公钥密码。当然也可以直接使用http地址提交,不需要配置。

ssh的设置可以通过,profile settings中完成,具体的过程gitlab上有帮助说明,点击进去就可以看到。这里不再赘述。

命令使用手册说明

要在对应的项目下设置不同人员的ssh key用于认证,同时在项目组成员中添加对应的成员。

象,高层的api是一个面向普通用户级别功能友好的前端。

这里主要是介绍高层的api,因为高层的api,暂时已经满足我们的需求。以下根据git的工作流程,分点列出api的介绍:

高层api操作git的方法的核心对象就是根据git类提供的方法。

(1)用filerepositorybuilder来创建新的仓库,或者打开已有的仓库。

(2)或者直接用git提供的静态初始化的方法:

git.init()

(此方法,源代码也是利用了repositorybuilder的方法)

利用核心类git的静态方法clonereposity,设置本地和远程的uri来获取仓库。

这边,jgit主要通过ssh和http(s)的方式与远程仓库进行交互。通过这两种方式,

必然是需要添加验证信息的。以下一一介绍:

clonecommand clonecommand = git.clonereposity();

clonecommand通过setcredentialsprovider()的方法,通过赋值一个

usernamepasswordcredentialsprovider对象,来提供用户名和密码登陆。

(不建议使用http的方式传送,但是也可行)

其实通过公钥访问的链接,有两种表示方式:

ssh://[email protected]/repo.git

git@../user/.git

而ssh利用公钥的访问方式的认证信息,通过jsch库提供。而在jgit中提供了

jschconfigsessionfactory的抽象类:

以下这是在command中注册认证信息:

使用的是上述jschconfigsessionfactory重写的configure方法中,设置

password,具体就不详述了。

对应git对象的add()方法,通过addfilepattern()匹配文件,添加到仓库中,使用call

方法最终实现命令执行。

往本地仓库的提交,设置信息message。

git.commit().setmessage(string message).call();

将远程的仓库拉取下来,需要设置认证的信息。

将修改提交到远程仓库,需要设置认证信息。