gitlab使用說明


# gitlab使用說明

## 1. gitlab啟動

    $ gitlab-ctl   start

## 2. 在gitlab的網站創建一個project

(1)定一個項目名,選定相關的項目設置,這里我們定義為private  
(2)項目創建成功后得到項目
git@192.168.1.153:tx/tx_project.git 的地址,可用於將project從遠程pull下來或者push上去。

## 3. 關於ssh key的設置

### 3.1 安裝git  

    $ apt install git  

(2) 設置Git的 user name 和email(如果是第一次的話) 設定本機用戶名,綁定郵箱,讓遠程服務器知道機器的身份 
 
    $ git config --local user.name "用戶名"  
    $ git config --local user.email "郵箱"
  
(3) 生成密匙  
這里輸入你的郵箱,生成一個與郵箱相對應的key  

    $ ssh-keygen -t rsa -C "郵箱"  
連續三個回車,如果不需要密碼的話。   
最后得到兩個文件:id_rsa和id_rsa.pub   
SSH 公鑰默認儲存在賬戶的主目錄下的 ~/.ssh 目錄 
 
(4) 添加密匙到ssh-agent  
確保 ssh-agent 是可用的。ssh-agent是一種控制用來保存公鑰身份驗證所使用的私鑰的程序,其實ssh-agent就是一個密鑰管理器,運行ssh-agent以后,使用ssh-add將私鑰交給ssh-agent保管,其他程序需要身份驗證的時候可以將驗證申請交給ssh-agent來完成整個認證過程。   
添加生成的 SSH key 到 ssh-agent。
  
    $ ssh-add ~/.ssh/id_rsa  
<font color=red>注意:如果報錯Could not open a connection to your authentication agent.  
執行 ssh-agent bash   
再執行ssh-add ~/.ssh/id_rsa可解決</font>

## 4. 完善新建的項目

### 4.1 設定本機用戶名,綁定郵箱,讓遠程服務器知道機器的身份

    $ git config --local user.name "用戶名"  
    $ git config --local user.email "郵箱"
### 4.2 如果你沒有最新的代碼,希望從頭開始,下面展示在你希望pull過來的文件夾下

    $ git clone git@192.168.1.100:xx/xxx.git //這里是項目的地址(可從項目主頁復制),將遠程服務器的內容完全復制過來  
    $ cd xxx                       //clone 之后進入該項目的文件夾  
    $ touch README.md                    //新建readme文件  
    $ git add README.md                  //將新的文件添加到git的暫存區  
    $ git commit-m ‘first commit(注釋)’ // 將暫存區的文件提交到某一個版本保存下來,並加上注釋  
    $ git push -u origin master          //將本地的更改提交到遠程服務器

### 4.3 如果你已經有一個新版代碼,希望直接把本地的代碼替換到遠程服務器

    $ cd aa                         //進入代碼存在的文件夾  
    $ git init                      //初始化,會生成一個.git文件夾  
    $ git remote add origin git@192.168.1.100:xx/xxx.git  //添加遠程項目地址(可從項目主頁復制)  
    $ git add .                      //添加該文件夾中所有的文件到git的暫存區  
    $ git commit -m ‘注釋’           //提交所有代碼到本機的版本庫  
    $ git push -u origin master     //將本地的更改提交到遠程服務器

<font color=red>注:如果報錯fatal: remote origin already exists.  
先輸入git remote rm origin  
再git remote add origin git@192.168.1.100:xx/xxx.git</font>

## 5. 版本穿梭

版本回退  
在Git中,我們用git log命令查看:   
每一個提交的版本都唯一對應一個commit版本號,   
現在,我們要把當前版本回退到上一個版本,就可以使用git reset命令:
  
    $ git reset --hard HEAD^  
這個時候,最新的版本就被上一個版本覆蓋了,繼續用git log就找不到了。這個時候,如果想恢復到原來的版本,只要找到原來的commit版本號就可以了。  

    $ git reflog //查看命令歷史,以便確定要回到哪個版本  
    $ git reset --hard commit_id //比如git reset --hard 3628164(不用全部輸入,輸入前幾位即可)
 
## 6. git分支管理

### 6.1 創建與合並分支

我們創建dev分支,然后切換到dev分支: 
 
    $ git checkout -b dev  
git checkout命令加上-b參數表示創建並切換,相當於以下兩條命令: 
 
    $ git branch dev  
    $ git checkout dev  
然后,用git branch命令查看當前分支, 
  
    $ git branch //命令會列出所有分支,當前分支前面會標一個*號  
然后,我們就可以在dev分支上正常提交. 
     
    $ git add readme.txt  
    $ git commit -m "branch test"  
dev分支的工作完成,我們就可以切換回master分支: 
 
    $ git checkout master  
切換回master分支后,再查看一個readme.txt文件,剛才添加的內容不見了!因為那個提交是在dev分支上,而master分支此刻的提交點並沒有變 
現在,我們把dev分支的工作成果合並到master分支上:
  
    $ git merge dev  
git merge命令用於合並指定分支到當前分支。合並后,再查看readme.txt的內容,就可以看到,和dev分支的最新提交是完全一樣的。  
注意到上面的Fast-forward信息,Git告訴我們,這次合並是“快進模式”,也就是直接把master指向dev的當前提交,所以合並速度非常快。  
當然,也不是每次合並都能Fast-forward,我們后面會講其他方式的合並。
合並完成后,就可以放心地刪除dev分支了:  

    $ git branch -d dev  
刪除后,查看branch,就只剩下master分支了. 

### 6.2 解決沖突

准備新的feature1分支,繼續我們的新分支開發: 
 
    $ git checkout -b feature1  
修改readme.txt最后一行,改為:   
Creating a new branch is quick AND simple.   
在feature1分支上提交:
  
    $ git add readme.txt   
    $ git commit -m "AND simple"  
切換到master分支:
  
    $ git checkout master  
Switched to branch 'master'  
Your branch is ahead of 'origin/master' by 1 commit.  
Git還會自動提示我們當前master分支比遠程的master分支要超前1個提交。   
在master分支上把readme.txt文件的最后一行改為:   
Creating a new branch is quick & simple.
  
    $ git add readme.txt 
    $ git commit -m "& simple"  
現在,master分支和feature1分支各自都分別有新的提交,  
這種情況下,Git無法執行“快速合並”,只能試圖把各自的修改合並起來,但這種合並就可能會有沖突,我們試試看:  

    $ git merge feature1  
Auto-merging readme.txt  
CONFLICT (content): Merge conflict in readme.txt  
Automatic merge failed; fix conflicts and then commit the result.  
果然沖突了!Git告訴我們,readme.txt文件存在沖突,必須手動解決沖突后再提交。git status也可以告訴我們沖突的文件;   
我們可以直接查看readme.txt的內容:  
Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,我們修改后保存再提交:
  
    $ git add readme.txt 
    $ git commit -m "conflict fixed"  
[master 59bc1cb] conflict fixed
最后,刪除feature1分支:  

    $ git branch -d feature1  
Deleted branch feature1 (was 75a857c).

## 7. 刪除gitlab上的文件夾

    $ git rm -r --cached .setting       //--cached不會把本地的.setting刪除  
    $ git commit -m 'delete .setting dir'[注釋]   
    $ git push -u origin master  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM