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 語法的使用方法
至此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的界面中就能查看到長傳的代碼