git部署詳解

1.1 關於版本控制

1.1.1 本地版本控制

本地版本控制系統 許多人習慣用複製整個項目目錄的方式來保存不一樣的版本,或許還會更名加上備份時間以示區別。這麼作惟一的 好處就是簡單,可是特別容易犯錯。有時候會混淆所在的工做目錄,一不當心會寫錯文件或者覆蓋意想外的文件。node

1.1.2 集中化的版本控制系統

如何讓在不一樣系統上的開發者協同工做?因而,集中化的版本控制系統(Centralized Version  Control Systems,簡稱 CVCS)應運而生。這類系統,諸如 CVS、Subversion 以及Perforce 等,都有一個單一的集中管理的服務器,保存全部文件的修訂版本,而協同工做的人們都經過客戶端連到這臺服務器,取出最新的文件或者提交更新。多年以來,這已成爲版本控制系統的標準作法。linux

1.1.3 分佈式版本控制系統

         在這類系統中,像Git、Mercurial、Bazaar 以及 Darcs 等,客戶端並不僅提取最新版本的文件快照,而是把代碼倉庫完整地鏡像下來。這麼一來,任何一處協同工做用的服務器發生故障,過後均可以用任何一個鏡像出來的本地倉庫恢復。由於每一次的克隆操做,實際上都是一次對代碼倉庫的完整備份。nginx

1.2 Git簡介

 

    官網:https://git-scm.comgit

         git是一個分佈式版本控制軟件,最初由林納斯·託瓦茲(Linus Torvalds)創做,於2005年以GPL發佈。最初目的是爲更好地管理Linux內核開發而設計。github

Git 官方中文手冊 https://git-scm.com/book/zh/v2web

1.2.1 Git歷史

自2002年開始,林納斯·託瓦茲決定使用BitKeeper做爲Linux內核主要的版本控制系統用以維護代碼。由於BitKeeper爲專有軟件,這個決定在社區中長期遭受質疑。在Linux社區中,特別是理查德·斯托曼與自由軟件基金會的成員,主張應該使用開放源代碼的軟件來做爲Linux核心的版本控制系統。林納斯·託瓦茲曾考慮過採用現成軟件做爲版本控制系統(例如Monotone),但這些軟件都存在一些問題,特別是性能不佳。現成的方案,如CVS的架構,受到林納斯·託瓦茲的批評。redis

2005年,安德魯·垂鳩寫了一個簡單程序,能夠鏈接BitKeeper的存儲庫,BitKeeper著做權擁有者拉里·麥沃伊認爲安德魯·垂鳩對BitKeeper內部使用的協議進行逆向工程,決定收回免費使用BitKeeper的受權。Linux內核開發團隊與BitMover公司進行蹉商,但沒法解決他們之間的歧見。林納斯·託瓦茲決定自行開發版本控制系統替代BitKeeper,以十天的時間,編寫出第一個git版本sql

1.3 安裝git

1.3.1 環境說明

[root@gitlab ~]# rpm -qa centos-release
centos-release-7-4.1708.el7.centos.x86_64
[root@gitlab ~]# uname -a
Linux gitlab 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@gitlab ~]# getenforce 
Disabled
[root@gitlab ~]# systemctl status firewalld.service 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

# 本文使用的linux系統均爲該系統vim

# 本文使用的windows系統爲 Microsoft Windows [版本 10.0.15063]windows

1.3.2 Yum安裝Git

# centos 自帶git

[root@gitlab ~]# rpm -qa git
git-1.8.3.1-11.el7.x86_64

 # 安裝方法

yum install git -y

1.3.3 編譯安裝

編譯安裝能夠安裝較新版本的git

Git下載地址: https://github.com/git/git/releases

# 安裝依賴關係
yum install curl-devel expat-devel gettext-devel  openssl-devel zlib-devel
# 編譯安裝
tar -zxf git-2.0.0.tar.gz
cd git-2.0.0
make configure
./configure --prefix=/usr
make  
make install  

1.4 初次運行 Git 前的配置

1.4.1 配置git

命令集

git config --global user.name "clsn"  #配置git使用用戶
git config --global user.email "admin@znix.top"  #配置git使用郵箱
git config --global color.ui true  #語法高亮
git config --list # 查看全局配置

配置過程

[root@gitlab ~]# git config --global user.name "clsn"  #配置git使用用戶
[root@gitlab ~]# git config --global user.email "admin@znix.top"  #配置git使用郵箱
[root@gitlab ~]# git config --global color.ui true  #語法高亮
[root@gitlab ~]# git config --list # 查看全局配置
user.name=clsn
user.email=admin@znix.top
color.ui=true

生成的配置文件

[root@gitlab ~]# cat .gitconfig 
[user]
    name = clsn
    email = admin@znix.top
[color]
    ui = true

1.4.2 獲取幫助

使用Git時須要獲取幫助,有三種方法能夠找到Git命令的使用手冊:

git help <verb>
git <verb> --help
man git-<verb>

例如,要想得到配置命令的手冊,執行

git help config

1.5 獲取 Git 倉庫(初始化倉庫)

# 建立目錄
mkdir git_data
# 進入目錄
cd git_data/
# 初始化
git init
# 查看工做區狀態
git status

操做過程

[root@gitlab ~]# mkdir git_data
[root@gitlab ~]# cd git_data/
[root@gitlab git_data]# git init
初始化空的 Git 版本庫於 /root/git_data/.git/
[root@gitlab git_data]# git status
# 位於分支 master
#
# 初始提交
#
無文件要提交(建立/拷貝文件並使用 "git add" 創建跟蹤)

1.6 Git命令常規操做

經常使用命令說明

命令

命令說明

add    

添加文件內容至索引

bisect 

經過二分查找定位引入 bug 的變動

branch 

列出、建立或刪除分支

checkout

檢出一個分支或路徑到工做區

clone  

克隆一個版本庫到一個新目錄

commit 

記錄變動到版本庫

diff   

顯示提交之間、提交和工做區之間等的差別

fetch  

從另一個版本庫下載對象和引用

grep   

輸出和模式匹配的行

init   

建立一個空的

Git    

版本庫或從新初始化一個已存在的版本庫

log    

顯示提交日誌

merge  

合併兩個或更多開發歷史

mv     

移動或重命名一個文件、目錄或符號連接

pull   

獲取併合並另外的版本庫或一個本地分支

push   

更新遠程引用和相關的對象

rebase 

本地提交轉移至更新後的上游分支中

reset  

重置當前HEAD到指定狀態

rm     

從工做區和索引中刪除文件

show   

顯示各類類型的對象

status 

顯示工做區狀態

tag

建立、列出、刪除或校驗一個GPG簽名的 tag 對象

經常使用操做示意圖

文件的狀態變化週期

1.6.1 建立文件

[root@gitlab git_data]# touch README
[root@gitlab git_data]# git status
# 位於分支 master
#
# 初始提交
#
# 未跟蹤的文件:
#   (使用 "git add <file>..." 以包含要提交的內容)
#
#    README
提交爲空,可是存在還沒有跟蹤的文件(使用 "git add" 創建跟蹤)

 

添加文件跟蹤

[root@gitlab git_data]# git add ./*
[root@gitlab git_data]# git status
# 位於分支 master
#
# 初始提交
#
# 要提交的變動:
#   (使用 "git rm --cached <file>..." 撤出暫存區)
#
#    新文件:    README
#

文件會添加到.git的隱藏目錄

[root@gitlab git_data]# tree  .git/
.git/
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── objects
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
└── refs
    ├── heads
    └── tags

由工做區提交到本地倉庫

[root@gitlab git_data]# git commit  -m 'first commit'  
[master(根提交) bb963eb] first commit
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README

查看git的狀態

[root@gitlab git_data]# git status
# 位於分支 master
無文件要提交,乾淨的工做區

提交後的git目錄狀態

[root@gitlab git_data]# tree  .git/
.git/
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       └── heads
│           └── master
├── objects
│   ├── 54
│   │   └── 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
│   ├── bb
│   │   └── 963eb32ad93a72d9ce93e4bb55105087f1227d
│   ├── e6
│   │   └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│   ├── info
│   └── pack
└── refs
    ├── heads
    │   └── master
    └── tags

1.6.2 添加新文件

git add  * 添加到暫存區域
git commit  提交git倉庫 -m 後面接上註釋信息,內容關於本次提交的說明,方便本身或他人查看

修改或刪除原有文件

常規方法

git add  *
git commit

簡便方法

git commit -a  -m "註釋信息"

-a 表示直接提交

Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are
not affected.

1.6.3 刪除git內的文件

命令說明:

• 沒有添加到暫存區的數據直接rm刪除便可。

• 已經添加到暫存區數據:

git rm --cached database 

#→將文件從git暫存區域的追蹤列表移除(並不會刪除當前工做目錄內的數據文件)

git rm -f database

#→將文件數據從git暫存區和工做目錄一塊兒刪除

命令實踐:

# 建立新文件
[root@gitlab git_data]# touch 123
[root@gitlab git_data]# git status
# 位於分支 master
# 未跟蹤的文件:
#   (使用 "git add <file>..." 以包含要提交的內容)
#
#    123
提交爲空,可是存在還沒有跟蹤的文件(使用 "git add" 創建跟蹤)

# 將文件添加到暫存區域

[root@gitlab git_data]# git add 123
[root@gitlab git_data]# git status
# 位於分支 master
# 要提交的變動:
#   (使用 "git reset HEAD <file>..." 撤出暫存區)
#
#    新文件:    123

#  刪除文件

[root@gitlab git_data]# rm 123 -f
[root@gitlab git_data]# ls
[root@gitlab git_data]# git status
# 位於分支 master
# 要提交的變動:
#   (使用 "git reset HEAD <file>..." 撤出暫存區)
#
#    新文件:    123
#
# 還沒有暫存以備提交的變動:
#   (使用 "git add/rm <file>..." 更新要提交的內容)
#   (使用 "git checkout -- <file>..." 丟棄工做區的改動)
#
#    刪除:      123
# 
[root@gitlab git_data]# git reset HEAD  ./* 
[root@gitlab git_data]# git status
# 位於分支 master
無文件要提交,乾淨的工做區

1.6.4 重命名暫存區數據

• 沒有添加到暫存區的數據直接mv/rename更名便可。

• 已經添加到暫存區數據:

git mv README NOTICE

1.6.5 查看歷史記錄

• git log   #→查看提交歷史記錄

• git log -2   #→查看最近幾條記錄

• git log -p -1  #→-p顯示每次提交的內容差別,例如僅查看最近一次差別

• git log --stat -2 #→--stat簡要顯示數據增改行數,這樣可以看到提交中修改過的內容,對文件添加或移動的行數,並在最後列出全部增減行的概要信息

• git log --pretty=oneline #→--pretty根據不一樣的格式展現提交的歷史信息

• git log --pretty=fuller -2 #→以更詳細的模式輸出提交的歷史記錄

• git log --pretty=fomat:"%h %cn"  #→查看當前全部提交記錄的簡短SHA-1哈希字串與提交着的姓名。

使用format參數來指定具體的輸出格式

格式

說明

%s

提交說明。

%cd

提交日期。

%an

做者的名字。

%cn

提交者的姓名。

%ce

提交者的電子郵件。

%H

提交對象的完整SHA-1哈希字串。

%h

提交對象的簡短SHA-1哈希字串。

%T

樹對象的完整SHA-1哈希字串。

%t

樹對象的簡短SHA-1哈希字串。

%P

父對象的完整SHA-1哈希字串。

%p

父對象的簡短SHA-1哈希字串。

%ad

做者的修訂時間。

命令實踐

[root@gitlab git_data]# git log
commit a409fc46f792228a8119705e9cc97c2a013534ab
Author: clsn <admin@znix.top>
Date:   Wed Nov 29 11:44:14 2017 +0800

    test

commit bb963eb32ad93a72d9ce93e4bb55105087f1227d
Author: clsn <admin@znix.top>
Date:   Wed Nov 29 10:57:02 2017 +0800

    first commit

1.6.6 還原歷史數據

Git服務程序中有一個叫作HEAD的版本指針,當用戶申請還原數據時,其實就是將HEAD指針指向到某個特定的提交版本,可是由於Git是分佈式版本控制系統,爲了不歷史記錄衝突,故使用了SHA-1計算出十六進制的哈希字串來區分每一個提交版本,另外默認的HEAD版本指針會指向到最近的一次提交版本記錄,而上一個提交版本會叫HEAD^,上上一個版本則會叫作HEAD^^,固然通常會用HEAD~5來表示往上數第五個提交版本。

git reset --hard   hash

git reset --hard HEAD^  #→還原歷史提交版本上一次

git reset --hard 3de15d4 #→找到歷史還原點的SHA-1值後,就能夠還原(值不寫全,系統

會自動匹配)

測試命令

[root@gitlab git_data]# git log
commit a409fc46f792228a8119705e9cc97c2a013534ab
Author: clsn <13835544305@163.com>
Date:   Wed Nov 29 11:44:14 2017 +0800

    test

commit bb963eb32ad93a72d9ce93e4bb55105087f1227d
Author: clsn <13835544305@163.com>
Date:   Wed Nov 29 10:57:02 2017 +0800

    first commit

         還原數據

[root@gitlab git_data]# git reset --hard  bb963
HEAD 如今位於 bb963eb first commit
# 查看數據
[root@gitlab git_data]# ls
README

1.6.7 還原將來數據

什麼是將來數據?就是你還原到歷史數據了,可是你後悔了,想撤銷更改,可是git log已經找不到這個版本了。

git reflog #→查看將來歷史更新點

測試命令

[root@gitlab git_data]# git reflog
bb963eb HEAD@{0}: reset: moving to bb963
a409fc4 HEAD@{1}: reset: moving to a409fc4
bb963eb HEAD@{2}: reset: moving to bb963
a409fc4 HEAD@{3}: commit: test
bb963eb HEAD@{4}: commit (initial): first commit
[root@gitlab git_data]#  

1.6.8 標籤使用

前面回滾使用的是一串字符串,又長又難記。

git tag v1.0   #→當前提交內容打一個標籤(方便快速回滾),每次提交均可以打個tag。

git tag          #→查看當前全部的標籤

git show v1.0   #→查看當前1.0版本的詳細信息

git tag v1.2 -m "version 1.2 release is test"  #→建立帶有說明的標籤,-a指定標籤名字,-m指定說明文字

git tag -d v1.0   #→咱們爲同一個提交版本設置了兩次標籤,刪除以前的v1.0

測試命令

[root@gitlab git_data]# git reset --hard 0bdf2e7
HEAD is now at 0bdf2e7 modified README file
[root@gitlab git_data]# git reset --hard V1.0
HEAD is now at a66370a add test dir

[root@gitlab git_data]# git tag  v20171129
[root@gitlab git_data]# git tag 
v20171129

1.6.9 對比數據

            git diff能夠對比當前文件與倉庫已保存文件的區別,知道了對README做了什麼修改

後,再把它提交到倉庫就放⼼多了。

git diff README

1.7 分支結構

在實際的項目開發中,儘可能保證master分支穩定,僅用於發佈新版本,平時不要隨便直接修改裏面的數據文件。

那在哪幹活呢?幹活都在dev分支上。每一個人從dev分支建立本身我的分支,開發完合併到dev分支,最後dev分支合併到master分支。因此團隊的合做分支看起來會像下圖那樣。

1.7.1 分支切換

    [root@gitlab git_data]# git branch linux
    [root@gitlab git_data]# git branch 
      linux
    * master
    [root@gitlab git_data]# git checkout linux 
    切換到分支 'linux'
    [root@gitlab git_data]# git branch 
    * linux
      master

在linux分支進行修改

    [root@gitlab git_data]# cat README 
    [root@gitlab git_data]# echo "2017年11月30日" >> README 
    [root@gitlab git_data]# git add .
    [root@gitlab git_data]# git commit -m "2017年11月30日09點10分"
    [linux 5a6c037] 2017年11月30日09點10分
     1 file changed, 1 insertion(+)
    [root@gitlab git_data]# git status 
    # 位於分支 linux
    無文件要提交,乾淨的工做區

回到master分支

    [root@gitlab git_data]# git checkout master 
    切換到分支 'master'
    [root@gitlab git_data]# cat README 
    [root@gitlab git_data]# git log  -1
    commit 7015bc7b316cc95e2dfe6c53e06e3900b2edf427
    Author: clsn <admin@znix.top>
    Date:   Wed Nov 29 19:30:57 2017 +0800

        123

合併代碼

    [root@gitlab git_data]# git merge linux 
    更新 7015bc7..5a6c037
    Fast-forward
     README | 1 +
     1 file changed, 1 insertion(+)
    [root@gitlab git_data]# git status 
    # 位於分支 master
    無文件要提交,乾淨的工做區
    [root@gitlab git_data]# cat README 
    2017年11月30日

1.7.2 合併失敗解決

模擬衝突,在文件的同一行作不一樣修改

在master 分支進行修改

[root@gitlab git_data]# cat README 
2017年11月30日
[root@gitlab git_data]# echo  "clsn in master">> README 
[root@gitlab git_data]# git commit -a -m "clsn 2017年11月30日 09點20分 "
[master 7ab71d4] clsn 2017年11月30日 09點20分
 1 file changed, 1 insertion(+)

切換到linux分支

[root@gitlab git_data]# git checkout linux 
切換到分支 'linux'
[root@gitlab git_data]# cat README 
2017年11月30日
[root@gitlab git_data]# echo "clsn in linux" >> README 
[root@gitlab git_data]# git commit -a -m "2017年11月30日 03"
[linux 20f1a13] 2017年11月30日 03
 1 file changed, 1 insertion(+)

回到master分區,進行合併,出現衝突

[root@gitlab git_data]# git checkout master 
切換到分支 'master'
[root@gitlab git_data]# git merge linux
自動合併 README
衝突(內容):合併衝突於 README
自動合併失敗,修正衝忽然後提交修正的結果。

解決衝突

[root@gitlab git_data]# vim README 
2017年11月30日
clsn in master
clsn in linux

手工解決衝突

[root@gitlab git_data]# git commit -a -m "2017年11月30日 03"
[master b6a097f] 2017年11月30日 03

1.7.3 刪除分支

由於以前已經合併了linux分支,因此如今看到它在列表中。 在這個列表中分支名字前沒有 * 號的分支一般可使用 git branch -d 刪除掉;你已經將它們的工做整合到了另外一個分支,因此並不會失去任何東西。

查看全部包含未合併工做的分支,能夠運行 git branch --no-merged

git branch --no-merged
  testing

這裏顯示了其餘分支。 由於它包含了還未合併的工做,嘗試使用 git branch -d 命令刪除它時會失敗:

git branch -d testing
error: The branch 'testing' is not fully merged.
If you are sure you want to delete it, run 'git branch -D testing'. 

若是真的想要刪除分支並丟掉那些工做,如同幫助信息裏所指出的,可使用 -D 選項強制刪除它。

1.8 windwos上Git的使用

windows 上git軟件網站 https://git-for-windows.github.io

    軟件下載地址:https://github.com/git-for-windows/git/releases/download/v2.15.1.windows.2/Git-2.15.1.2-64-bit.exe

         軟件安裝默認便可。

1.8.1 軟件使用

建立新的倉庫

         定義倉庫的路徑

         添加用戶信息(在 git bash中)

default@Hzs-Desktop MINGW64 /i/git_data (master)
$ git config  --global user.email "admin@znix.top"

default@Hzs-Desktop MINGW64 /i/git_data (master)
$ git config  --global user.name "clsn"

         在git Gui 中添加用戶信息,添加一次就可

         在頁面中將數據配置好便可使用

         查看歷史數據

1.9 gitlab的使用

前面咱們已經知道Git人人都是中心,那他們怎麼交互數據呢?

• 使用GitHub或者碼雲等公共代碼倉庫

• 使用GitLab私有倉庫

1.9.1 安裝配置gitlab

官方安裝文檔   https://about.gitlab.com/installation/

國內軟件鏡像站 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/

安裝

[root@gitlab ~]# yum localinstall gitlab-ce-9.1.4-ce.0.el7.x86_64.rpm

初始化

[root@gitlab ~]# gitlab-ctl reconfigure

狀態

[root@gitlab ~]#  gitlab-ctl status
run: gitaly: (pid 4491) 48s; run: log: (pid 4087) 279s
run: gitlab-monitor: (pid 4539) 44s; run: log: (pid 4251) 207s
run: gitlab-workhorse: (pid 4501) 47s; run: log: (pid 4099) 273s
run: logrotate: (pid 4125) 265s; run: log: (pid 4124) 265s
run: nginx: (pid 4112) 271s; run: log: (pid 4111) 271s
run: node-exporter: (pid 4175) 243s; run: log: (pid 4174) 243s
run: postgres-exporter: (pid 4528) 45s; run: log: (pid 4223) 219s
run: postgresql: (pid 3933) 343s; run: log: (pid 3932) 343s
run: prometheus: (pid 4514) 46s; run: log: (pid 4156) 259s
run: redis: (pid 3876) 355s; run: log: (pid 3875) 355s
run: redis-exporter: (pid 4186) 237s; run: log: (pid 4185) 237s
run: sidekiq: (pid 4078) 281s; run: log: (pid 4077) 281s
run: unicorn: (pid 4047) 287s; run: log: (pid 4046) 287s

檢查端口

[root@gitlab ~]# netstat -lntup|grep 80
tcp        0      0 127.0.0.1:8080      0.0.0.0:*    LISTEN     4073/unicorn master 
tcp        0      0 0.0.0.0:80      0.0.0.0:*         LISTEN      4112/nginx: master  
tcp        0      0 0.0.0.0:8060       0.0.0.0:*      LISTEN      4112/nginx: master  

1.9.2 使用瀏覽器訪問,進行web界面操做

第一次訪問,建立密碼

         進行登錄,用戶名爲root,密碼爲12345678

建立一個新的項目

         定義項目的名稱

         建立完成後會提示沒有添加ssh密鑰

         在服務器上建立ssh密鑰 使用ssh-ketgen 命令

[root@gitlab ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:n/V2kCiwwm2UfBsnQLm17eXUCBiBByyPbefmz5oQvfU root@gitlab
The key's randomart image is:
+---[RSA 2048]----+
|       o++o+     |
|      ..+o+ .    |
|       ==++o.. o |
|     ..o==o=..+..|
|      o.So+.++o  |
|       o oo*.o.. |
|        .o+   E .|
|         ..o . . |
|          ooo    |
+----[SHA256]-----+
[root@gitlab .ssh]# cat id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDSVdBypha/ALMmvIiZGXxYGz7FJ5TC+hYWo7QGBJ+J6JVinp9yH851fwxln5TWGBrtEousoVHXTTJfFRy8LV+Ho7OfaksYt+5TPxEjf5XX53Z3ZX70PYH3DQFmgzl0QpWw1PYIjrD7kBeLhUg+R/ZePS+HzPvbRCb6gOlkdx46vX4Olr7YbAO5lzAarhaZcE2Q702kPXGeuZbR7KcwVhtoiueyHwyj94bccMfKq7qSskXGbpWuCwcaKQ6uqGap1rP5Viqqv0xeO7Vq0dIZ/YnPL2vPDUvNa36nHosiZGkn4thpPh63KjXaFIfKOuPemLzvDZY0A+88P8gwmAYiPoxp root@gitlab

         將密鑰添加到web界面的用戶中

gitlab自帶的命令集

Command line instructions
Git global setup
git config --global user.name "Administrator"
git config --global user.email "admin@example.com" Create a new repository
git clone git@gitlab.example.com:root/clsn.git
cd clsn
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
Existing folder
cd existing_folder
git init
git remote add origin git@gitlab.example.com:root/clsn.git
git add .
git commit -m "Initial commit"
git push -u origin master
Existing Git repository
cd existing_repo
git remote rename origin old-origin
git remote add origin git@gitlab.example.com:root/clsn.git
git push -u origin --all
git push -u origin --tags

建立行的git倉庫

[root@gitlab ~]# git clone git@gitlab:root/Test1.git
正克隆到 'Test1'...
The authenticity of host 'gitlab (10.0.0.63)' can't be established.
ECDSA key fingerprint is SHA256:yOrzs0W+R//s8VDEN9nko6r6wW+8gwJl3Ut7ac0i5SY.
ECDSA key fingerprint is MD5:21:33:dd:4d:01:00:eb:71:a4:4e:2d:2b:bf:37:48:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab' (ECDSA) to the list of known hosts.
warning: 您彷佛克隆了一個空版本庫。

         建立文件並推到遠端git倉庫

[root@gitlab Test1]# echo "clsn" >> clsn
[root@gitlab Test1]# git push -u origin master
分支 master 設置爲跟蹤來自 origin 的遠程分支 master。
Everything up-to-date

         推送完成後可以在web界面中查看

# md 語法的使用方法

http://www.zyops.com/markdown-syntax

至此gitlab的使用結束了

1.10 GitHub託管服務

Github顧名思義是一個Git版本庫的託管服務,是目前全球最大的軟件倉庫,擁有上百萬的開發者用戶,也是軟件開發和尋找資源的最佳途徑,Github不只能夠託管各類Git版本倉庫,還擁有了更美觀的Web界面,您的代碼文件能夠被任何人克隆,使得開發者爲開源項貢獻代碼變得更加容易,固然也能夠付費購買私有庫,這樣高性價比的私有庫真的是幫助到了不少團隊和企業。

1.10.1 註冊GitHub

瀏覽器訪問github官網 : https://github.com/ ,點擊Sign up 進行註冊

         填寫我的信息,進行註冊

選擇倉庫類型,默認免費,點擊底下Continue註冊

         描述一下你本身,固然,這一步能夠跳過

         用戶建立完成,能夠建立新的項目

注意:建立新的項目以前要現驗證郵箱

1.10.2 添加密鑰

在github上添加一個新的ssh密鑰

 

獲取主機(linux)上的密鑰

[root@gitlab ~]# ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:n/V2kCiwwm2UfBsnQLm17eXUCBiBByyPbefmz5oQvfU root@gitlab
The key's randomart image is:
+---[RSA 2048]----+
|       o++o+     |
|      ..+o+ .    |
|       ==++o.. o |
|     ..o==o=..+..|
|      o.So+.++o  |
|       o oo*.o.. |
|        .o+   E .|
|         ..o . . |
|          ooo    |
+----[SHA256]-----+
[root@gitlab ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCmv4aEEEpbUyzv1r6SN0JqOfeyQ7sZZbXxWFv4xflIJeK/rl8cF7UYCzjLEvwJlrkIjKSs5uW1x0zWEcZFiv5tGCiO7DeMR6pKUAn7NzNjKiCcElCXiqHVew84iTbxX4MWKlbFoJYO9/wQ1NlrQfqcSgZwJTLKBMVoMXvTWPPGXf6AwdSp68guFwwGDIV8BiHZiy61bKiWYSVKSDP47Y7VUV/bdwGaxG7tAfalWVpe6xXXRtsj58sENyIWbRI7/9XWqs+eV+CgI74YjOanMvHnHFlfg0tb+MewRb4tFGVmroFBRsvfI3Sl2fez2zHG0qh3f34/0KF1kitlWkgcBJqN root@gitlab

windwos上得到密鑰的方法(須要安裝git for windows)

default@Hzs-Desktop MINGW64 /i/Desktop
$ ssh-keygen.exe
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/default.DESKTOP-U9D5JP4/.ssh/id_rs                                                                                                                                  a):
Created directory '/c/Users/default.DESKTOP-U9D5JP4/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/default.DESKTOP-U9D5JP4/.ssh/id_r                                                                                                                                  sa.
Your public key has been saved in /c/Users/default.DESKTOP-U9D5JP4/.ssh/id_rsa.p                                                                                                                                  ub.
The key fingerprint is:
SHA256:aqnHq/xNn159jBX4o2L2ZJdtiwu4ietvKRT2fL9igZo default@Hzs-Desktop
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|              .  |
|             . . |
|       o      . .|
|      . S .    o.|
|       + +.o ..++|
|     .= +.o=++oo=|
|   . ooE.+==*.oo.|
|    +++=*== .=o. |
+----[SHA256]-----+

default@Hzs-Desktop MINGW64 /i/Desktop
$

default@Hzs-Desktop MINGW64 /i/Desktop
$ cat /c/Users/default.DESKTOP-U9D5JP4/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC15+1oQBzvgzQP3p0Lb9FsTKFfIIws9WxGBVl2B9d2                                                                                                                                  qT2eKFgXoEDNCF/OrhhXvbMDhORxXHf9RG0Aqj+/vJddbaQpCawHhP6VUG1X885xhY4OohDOkFQiWD1s                                                                                                                                  DCMkX7OHNW5ake6P8AdNwI6eSpKYKYCxRMGkRiBa1KDRtG8CvsG8VN0iTSW0UZ3s4Ps+S31pBYlNjOMv                                                                                                                                  Lp0HRAMVhYimLLi0Wz2mBffPOeNjPX1FfJdr+hO7TIRNdyAEGIhSbckkAnVEIASAhI0Re/19v1RnSkk2                                                                                                                                  VtBvc5rVeGxFMNuEIl9WDMSTcedhEGXyRlW2N9TtXlvF1eNflzUg2BtCaCFZ default@Hzs-Desktop

         密鑰建立完成後進行添加

         密鑰添加成功

 

1.10.3 建立倉庫

準備工做已經完畢,右上角點擊建立一個新的倉庫

         建立倉庫,輸入我的信息

         根據上面的提示,建立一個代碼倉庫

         在我的主機上進行推送測試

[root@gitlab ~]# mkdir -p clsn 
[root@gitlab ~]# cd clsn/
[root@gitlab clsn]# echo "# test" >> README.md
[root@gitlab clsn]# git init
初始化空的 Git 版本庫於 /root/clsn/.git/
[root@gitlab clsn]# git add README.md
[root@gitlab clsn]# git commit -m "first commit"
[master(根提交) 089ae47] first commit
 1 file changed, 1 insertion(+)
 create mode 100644 README.md
[root@gitlab clsn]# git remote add origin git@github.com:clsn-git/test.git
[root@gitlab clsn]# git push -u origin master
The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts.
Counting objects: 3, done.
Writing objects: 100% (3/3), 212 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:clsn-git/test.git
 * [new branch]      master -> master
分支 master 設置爲跟蹤來自 origin 的遠程分支 master。

         推送完成,刷新界面就能夠發現,推送上去的README.md文件

         建立新文件,進行拉取測試

         建立好後點擊下面的commit便可

         github添加成功,進行拉取測試

 

1.10.4 拉取文件測試

查看目錄內容

[root@gitlab clsn]# ls
README.md

進行拉取

[root@gitlab clsn]# git pull
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
Unpacking objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
來自 github.com:clsn-git/test
   089ae47..a16be65  master     -> origin/master
更新 089ae47..a16be65
Fast-forward
 clsn.txt | 3 +++
 1 file changed, 3 insertions(+)
 create mode 100644 clsn.txt 

         檢查文件

[root@gitlab clsn]# ls
clsn.txt  README.md
[root@gitlab clsn]# cat clsn.txt 
# 這是慘綠少年的文檔
# clsn blog  : http://blog.znix.top
# 慘綠少年的博客爲 : http://blog.znix.top

至此github的使用就介紹完了

1.11 JetBrains PyCharm 使用github

1.11.1 PyCharm 上github設置

         選擇github進行鏈接

         用戶密碼準確後會生產token

         而後點擊ok便可

1.11.2 推送代碼

現確保有以前安裝的windwos端git,測試路徑

         共享代碼

         輸入信息,進行共享

         代碼發佈成功 https://github.com/clsn-git/test1

至此pycharm使用github就完成了

1.12 pycharm使用gitlab

使用pycharm是的vcs,如今git

         輸入gitlab地址

而後輸入用戶名及密碼

         添加一些註釋信息

         在gitlab的界面中就能查看到長傳的代碼

相關文章
相關標籤/搜索