天天看點

開發工具_版本管理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();

将遠端的倉庫拉取下來,需要設定認證的資訊。

将修改送出到遠端倉庫,需要設定認證資訊。