1. 程式人生 > >ubuntu 上git版本管理庫搭建攻略

ubuntu 上git版本管理庫搭建攻略

GIT版本控制系統

第一部分 基本概念

版本庫:本地庫、公共庫

每個開發人員在本地都有自己的版本庫,在伺服器上有一個公共的版本庫。所有的歷史記錄都儲存在本地庫中。向版本庫提交程式碼無須連線遠端版本庫而是記錄在本地庫中。

版本庫中儲存什麼:和專案相關的所有檔案。

工作目錄樹:又稱版本庫的“斷面檢視”,就是專案的整個目錄結構。工作目錄樹建立方法有兩個,第一個用Git相關命令初始化版本庫生成“.git”目錄,於是“.git”的父目錄就是工作目錄樹;第二個方法克隆一個已經存在的版本庫(就是拷貝),隨之也建立了相應的工作目錄樹。

程式碼修改與檔案同步:push、pull

Push是一個修改-確認-提交的過程,把自己修改的提交到本地庫和公共庫,通過這個動作可以讓專案組中其他人員看到、獲得你做的修改;

Pull是一個取來-合併的過程,方便工作人員從公共庫中取來專案中其他人員改動的部分到本地庫中並和自己的合併在一起。

標籤:版本管理的一個手段,可以理解為具體的版本號。

分支:專案開發中,遇到某些模組需要特別開發或者重寫等情況,可以在版本庫中建立分支,並行開發。分支的生命週期可以是長期也可能很短。

分支合併:所以的分支、主線都是圍繞著專案服務,最終都是向著一個終點目標,這就會發生合併。Git能夠自動合併,不能合併時會提示衝突

第二部分 Git伺服器安裝與設定

1先檢查本機是否安裝python,在終端輸入

:python --version


,能顯示處python版本即安裝。

2安裝 openssh伺服器:

sudo apt-get install openssh-server openssh-client


3安裝 git伺服器 :

sudo apt-get install git-core

4配置 git伺服器,建立git伺服器管理使用者 :

sudo adduser --system --shell /bin/sh  --gecos 'git version control' --group --disabled-password --home /home/git git


初始化全域性設定 (設定使用者名稱和郵箱):

git config --global user.name"myname"
git config --global user.email"[email protected]
"

 

5管理員在個人計算機上建立個人公鑰和私鑰 ,在預設使用者的主目錄路徑下,執行以下命令,按照提示建立公鑰和私鑰:

ssh-keygen -t rsa

 

預設情況下,公鑰和私鑰會儲存在~/.ssh目錄下,如下所示:

id_rsa  id_rsa.pub known_hosts   把id_rsa.pub拷貝到伺服器上初始化gitosis用

6安裝python的setuptool:

sudo apt-get install python-setuptools

7下載並安裝gitosis :選定目錄為src

cd /src
git clone git://eagain.net/gitosis.git
cd gitosis
sudo python setup.py install


8初始化gitosis 並讓他執行起來  此處用來配置超級管理員

cp ~/***/id_rsa.pub /src/id_rsa.pub
sudo -H -u gitgitosis-init < /src/id_rsa.pub


9修改post-update許可權:

sudo chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update

10.管理員在自己的機器上clone gitosis管理平臺

 git clone [email protected]:gitosis-admin.git
Initializedempty Git repository in /usr/local/work/gitosis-admin/.git/
remote:Counting objects: 5, done.
remote:Compressing objects: 100% (4/4), done.
remote:Total 5 (delta 0), reused 5 (delta 0)
Receivingobjects: 100% (5/5), done.

11安裝完成,在管理員PC上進入上一步clone形成的gitosis-admin目錄修改gitosis使用者許可權,新增使用者的公密到keydir,修改完後commit、push到伺服器即可完成倉庫許可權的相關操作

第三部分 Git客戶端安裝

Linux中安裝git

sudo apt-get install git-core git-docgit-gui git-svn git-cvs gitweb git-daemon-run git-email git-arch gitk


git安裝包說明:

git-core 、git-doc包是git的核心程式,它只包括最小的依賴關係,如果只安裝git包的話,那麼一些git的外圍擴充套件將無法使用。

git-gui包是一個基於Tk的git程式,是帶有GUI的,可以用滑鼠點選操作的git。

git-svn包用於支援從svn倉庫匯入到git倉庫

git-cvs包用於支援從cvs倉庫匯入到git倉庫。

gitweb包則是一個成熟的基於web的用於git倉庫管理的web程式

git-daemon-run包用於支援使用者使用git://形式的命令來訪問git倉庫。

git-email包支援使用git傳送郵件。

git-arch包是為了相容arch倉庫的。大家或許聽說過linux的發行版本arch,但現在說的arch和這個發行版本似乎沒有必然關係。git-arch中的arch是gnu arch,它是一個類似於cvs、sccs、svn的版本控制系統。git-arch包用於支援從gnu arch倉庫匯入到git倉庫。

gitk包是一個帶有Tcl/Tk GUI的可以用來瀏覽git倉庫歷史資訊的桌面程式。

  檢測安裝是否成功:

在終端輸入git

測試下是否成功安裝 git,出行如下表示提示成功

usage: git [--version] [--exec-path[=GIT_EXEC_PATH]][--html-path]
          [-p|--paginate|--no-pager] [--no-replace-objects]
           [--bare][--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
          [--help] COMMAND [ARGS]
 
The most commonly used git commands are:
   add        Addfile contents to the index
   bisect     Find by binary searchthe change that introduced a bug
   branch     List, create, ordelete branches
   checkout   Checkout a branch or paths to theworking tree
   clone      Clone arepository into a new directory
   commit     Record changes to therepository
   diff& nbsp;      Show changesbetween commits, commit and working tree, etc
   fetch      Downloadobjects and refs from another repository
   grep       Printlines matching a pattern
   init       Create anempty git repository or reinitialize an existing one
   log       Show commit logs
   merge      Join two ormore development histories together
   mv        Move or rename a file, a directory, or a symlink
   pull       Fetchfrom and merge with another repository or a local branch
   push       Updateremote refs along with associated objects
   rebase     Forward-port loca lcommits to the updated upstream head
   reset      Reset currentHEAD to the specified state
   rm        Remove files from the working tree and from the index
   show       Showvarious types of objects
   status     Show the working treestatus
   tag       Create, list, delete or verify a tag object signed with GPG
See 'git help COMMAND' for more information on a specificcommand.


Windows中安裝git

Windows中安裝git:通過linux模擬器Cygwin安裝和執行git

Git安裝成功後設置

主要設定name和email兩個全域性變數。name用來說明版本歷史上的修改是誰提交的,email用來聯絡修改者。

在終端上輸入 如下進行配置:

git config --global user.name “XXXX”

git config --global user.email [email protected]

用下面的命令檢查上述設定是否成功:

git config --global --list

user.name = XXXX

使用不同的顏色顯示不同型別的內容

git config --global color.ui “auto”

取消顏色

git config --global color.ui “false”

第四部分 Git專案簡單應用

GIT系統管理員部分:

1.管理員在自己的機器上clonegitosis管理平臺

git clone g[email protected]:gitosis-admin.git
Initialized empty Git repository in /usr/local/gitmanage/gitosis-admin/.git/
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.

Initialized empty Git repository in /usr/local/gitmanage/gitosis-admin/.git/

remote: Counting objects: 5, done.

remote: Compressing objects: 100% (4/4), done.

remote: Total 5 (delta 0), reused 5 (delta 0)

Receiving objects: 100% (5/5), done.

出現上面的資訊說明管理員成功的把管理平臺clone到自己的PC機上。在gitmanage目錄下會產生gitosis-admin目錄

在這個目錄下有gitosis.conf 配置檔案和 keydir目錄。修改gitosis.conf管理gitosis使用者許可權,keydir儲存使用者的公鑰(一個pub檔案)。修改完成後commit、push到伺服器即完成系統管理員的相關操作,操作過程如下:

首次開啟gitosis.conf檔案如下所示

   groupgitosis-admin  表示系統管理組;

   writable 表示許可權類別

   members 表示管理組的成員

接下來管理員配置使用者及專案,如下所示:

這個過程中往系統中添加了使用者lds(以新增盧德山為例,lds為他pc機使用者名稱),並給他賦了相關專案的許可權。上面配置了textproj和uboot兩個工程,writable表示讀寫許可權,readonly表示只讀許可權。

如何向系統新增:使用者在自己的PC機終端上執行ssh-keygen -t rsa 命令,生成id_rsa.pub把其重新命名為lds交給系統管理員,系統管理員拷貝到gitosis-admin目錄下的keydir目錄即可,之後執行如下命令把這些配置提交到伺服器:

   git add .
   git commit –am “addmembers and project”
   git push


專案管理者,提交專案及管理過程

注:在新專案提交之前一定要先在gitosis.conf檔案中配置這個專案,如下面要提交的textproj專案,提交之前在gitosis.conf已經配置好,如上圖所示。

1.新建專案textproj及提交,過程如下:

mkdir textproj
cd textproj
git init
touch hello.txt
git add hello.txt   或者  git add .
git commit -am 'first commit'
git remote add origin [email protected]:textproj.git
git push origin master


2.提交現有的專案,和上面的稍微有一點區別。直接進入到要提交的專案目錄,執行如下命令:

cd 專案目錄
git init
git add .
git commit -am “註釋說明”
git remote add origin [email protected]:專案目錄名.git
git push origin master


3.更新現有的專案,過程如下:

cd 專案目錄

git pull

普通開發人員使用方法

1首先從伺服器上clone版本庫,以上面的textproj為例,在終端執行如下:

 git [email protected]:git-testproj.git

成功後產生textproj工程目錄,進入到目錄下即可開始開發工作。

2.開發人員提交自己的工作,還是以上面的textproj為例,在終端執行如下:

假設開發人員對工程中的hello.txt進行了修改

git addhello.txe   (或者git add .)

gitcommit –am“註釋說明”

git push

3.更新現有的專案,過程如下:

 cd 專案目錄

git pull


相關推薦

ubuntu git版本管理搭建

GIT版本控制系統第一部分 基本概念版本庫:本地庫、公共庫每個開發人員在本地都有自己的版本庫,在伺服器上有一個公共的版本庫。所有的歷史記錄都儲存在本地庫中。向版本庫提交程式碼無須連線遠端版本庫而是記錄在本地庫中。版本庫中儲存什麼:和專案相關的所有檔案。工作目錄樹:又稱版本

mac IntelliJ IDEA git relocate 給 git 版本管理的專案更換個 git 專案地址

專案使用git管理(不是svn,有svn不用,非得再弄個git來管理專案,搞不懂為啥,純屬搞事情嘛。) 當git地址改變了該怎麼辦? 其實git遠端地址改變和idea沒有任何關係,idea上git裡面也沒有重新定位遠端地址的選項。 svn的選單裡面是有個 relocate 的選項的,

使用git版本管理工具傳程式碼到碼雲

因工作需要使用程式碼管理工具。當然,程式碼管理是可以更方便,助於團隊的合作及程式碼的合併。但之前沒有實際操作過上傳和下載,下載只是壓縮包的直接下載,通過git工具使用命令下載還是第一次操作。 中間波折許多,嘗試多次未能完成,同事幫忙也沒搞定,幸好有一大神實際操作了一把,大

linux運維、架構之路-git版本管理

nbsp font 同步 class ges 之路 blog git服務器 工作目錄 一、常見版本管理系統 1、SVN 集中式的版本控制系統,只有一個中央數據倉庫,如果中央數據倉庫掛了或者不能訪問,所有的使用者無法使用svn,無法進行提交或者備份文件 2、Gi

一圖看懂git版本管理 reset revert checkout

技術分享 git design alt sig res 就是 文件 eset git是一個流程,流程就有提交和回滾,git提供這些命令就是讓你提交修改和回滾修改的. 自己用powerdesign畫了一張圖,可以很容易看懂git中版本如何向前提交和向後回滾 提交相關:add

git版本管理規範

團隊 通過 git 命名 otf ××× ast 代碼 完成 一般約定 一般分為一下幾個分支進行管理: master(主分支):穩定的線上版本 develop(開發分支):用於開發集成測試分支,不穩定 release(測試分支):用於測試的分支 hotfix:用於緊急修復

git版本管理 .gitignore不起作用的解決辦法

暫存 範圍 -m gitignore pan 說明 遠程 git版本管理 span 一、出現的問題   從服務器克隆下來的項目,在本地修復運行產生了部分緩存文件後,確認可以提交到遠程分支了,提交時發現居然把緩存文件也列入了提交的範圍了,去.gitignore文件查看,發現

git版本管理實用筆記

1.git目前是世界上最先進的分散式版本管理器。 2.版本 控制: (1)集中式版本控制:集中存放在中央伺服器上,首先從中央伺服器上獲取最新的版本,完成自己的內容之後推送給中央伺服器。最大的特點是必須連網才能夠繼續工作。 (2)分散式版本控制:沒有所謂的中央伺服器,每個人的電腦都是一

使用git版本管理工具

git add 提交檔案 git commit -m "提交解釋" git push origin master 提交到主分支 2.生成ssh-key和新增ssh-key ssh-keygen -t rsa -C "[email protected]" ssh-add ~/.ssh/id_

Git--版本管理的使用及理解

如果多人合作時,git也是需要中間交換伺服器來解決衝突合併,這不還是集中式版本控制嗎? 而svn不是也可以將所有原始碼下載到本機,然後在本機修改,儲存在本機上,為什麼這個不能說是分散式,提交的時候不也是解決衝突合併就ok嗎? git和svn的區別: https://blog.csdn.n

直接用版本管理管理網站?

2011-09-22 github.com 提供pages服務,可以將頁面提交到庫中,自動進行網頁發表。 如使用者名稱是alice,建立了庫alice.github.com,如果將index.html放到master下,則可以

Linux 下安裝Git 版本管理工具 使用記錄

Git -Version 檢視已經安裝的Git版本 預設1.7.x版本比較老 1.yum remove git 移除當前版本 2.安裝git依賴包    yum install curl-devel expat-devel gettext-devel openssl-devel zl

idea配置git版本管理

本文部分內容轉自博文:https://www.cnblogs.com/java-maowei/p/5950930.html 第一部分: 安裝 1. 下載地址:  https://git-scm.com/download/win; 如果速度慢, 使用 迅雷下載; 2.

Git版本管理使用

初次執行配置 配置 使用者名稱 git config --global user.name xxx 配置 郵箱 git config --global user.email xxx 檢視使用者名稱 git config user.name 開始正式使用

Git版本管理-Tony講義

這是一個有關版本管理的培訓課件,以Git版本管理為例,講述版本管理的歷史,為什麼選擇Git作為版本管理,Git基本操作,如新增,修改,提交,推送,下載等;Git高階操作,如衝突解決,里程碑,分支操作,遠端版本庫和補丁的提取和打補丁的方式。 這個課件通過業餘時間整理,花費了兩個

Ubuntu升級git版本

安裝了VSCode,提示我git版本需要升級。步驟如下 # To get the very latest version of git, you need to add the PPA (Personal Package Archive) from the Ubuntu Git Maintaine

Android Studio 使用Git 版本管理並提交到Github 詳解

開發的時候,一定會用到版本管理工具,常見的兩個分別是SVN 和 Git 。 SVN相對來說比較簡單,屬於集中式版本管理工具,簡單來說就是大家都往同一臺電腦(服務)上提交。 而Git 屬於分散式版本管理工具,每個人在自己的電腦上擁有一個版本倉庫。當然也可以提交到Github上

git 版本管理的說明

什麼是Git----------------->為什麼選擇Git----------------->如何安裝Git到MAC OS X------------------>如何使用Git 在使用Xcode如何利用git管理程式碼,這裡首先說明一下怎麼在Xco

Git版本管理之旅(一)—— Git簡介及架構淺析

背景與誕生 功能 架構 安裝 背景與誕生 1991年,Linus建立了開源的Linux; 2002年以前,世界各地的志願者把原始碼檔案通過diff的方式發給Linus,然後由Linus本人通過手工方式合併程式碼! Q:為什麼把L

idea新建的maven web專案配置git版本管理

一、首先在碼雲上註冊並新建一個專案:下面按如下配置即可:二、建立README.md檔案,內容為git上專案名稱三、建立.gitignore檔案,即git提交時忽略的檔案內容為:*.class #package file *.war *.ear #kdiff3 ignore