2021-05-12 14:32:11
Git詳解及 GitHub與GitLab使用
1.1 關於版本控制
1.1.1 本地版本控制
本地版本控制系統 許多人習慣用複製整個專案目錄的方式來儲存不同的版本,或許還會改名加上備份時間以示區別。這麼做唯一的 好處就是簡單,但是特別容易犯錯。有時候會混淆所在的工作目錄,一不小心會寫錯檔案或者覆蓋意想外的檔案。
1.1.2 集中化的版本控制系統
如何讓在不同系統上的開發者協同工作?於是,集中化的版本控制系統(Centralized Version Control Systems,簡稱 CVCS)應運而生。這類系統,諸如 CVS、Subversion 以及Perforce 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過用戶端連到這台伺服器,取出最新的檔案或者提交更新。多年以來,這已成為版本控制系統的標準做法。
1.1.3 分散式版本控制系統
在這類系統中,像Git、Mercurial、Bazaar 以及 Darcs 等,用戶端並不只提取最新版本的檔案快照,而是把程式碼倉庫完整地映象下來。這麼一來,任何一處協同工作用的伺服器發生故障,事後都可以用任何一個映象出來的本地倉庫恢復。因為每一次的克隆操作,實際上都是一次對程式碼倉庫的完整備份。
1.2 Git簡介
官網:https://git-scm.com
git是一個分散式版本控制軟體,最初由林納斯·托瓦茲(Linus Torvalds)創作,於2005年以GPL發布。最初目的是為更好地管理Linux核心開發而設計。
Git 官方中文手冊 https://git-scm.com/book/zh/v2
1.2.1 Git歷史
自2002年開始,林納斯·托瓦茲決定使用BitKeeper作為Linux核心主要的版本控制系統用以維護程式碼。因為BitKeeper為專有軟體,這個決定在社群中長期遭受質疑。在Linux社群中,特別是理查德·斯托曼與自由軟體基金會的成員,主張應該使用開放原始碼的軟體來作為Linux核心的版本控制系統。林納斯·托瓦茲曾考慮過採用現成軟體作為版本控制系統(例如Monotone),但這些軟體都存在一些問題,特別是效能不佳。現成的方案,如CVS的架構,受到林納斯·托瓦茲的批評。
2005年,安德魯·垂鳩寫了一個簡單程式,可以連線BitKeeper的儲存庫,BitKeeper著作權擁有者拉里·麥沃伊認為安德魯·垂鳩對BitKeeper內部使用的協定進行逆向工程,決定收回無償使用BitKeeper的授權。Linux核心開發團隊與BitMover公司進行蹉商,但無法解決他們之間的歧見。林納斯·托瓦茲決定自行開發版本控制系統替代BitKeeper,以十天的時間,編寫出第一個git版本
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系統均為該系統
# 本文使用的windows系統為 Microsoft Windows [版本 10.0.15063]
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/
安裝
[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
PyCharm 下載: http://www.jetbrains.com/pycharm/download/#section=windows
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的介面中就能檢視到長傳的程式碼
至此pycharm使用gitlab就結束了
GitHub 教學系列文章:
通過GitHub建立個人技術部落格圖文詳解 http://www.linuxidc.com/Linux/2015-02/114121.htm
GitHub 使用教學圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.htm
使用Git命令從GitHub上下載原始碼 http://www.linuxidc.com/Linux/2017-11/148192.htm
使用 GitHub / GitLab 的 Webhooks 進行網站自動化部署 http://www.linuxidc.com/Linux/2016-06/131993.htm
多個GitHub帳號的SSH key切換 http://www.linuxidc.com/Linux/2016-05/131080.htm
如何在同一台電腦上使用兩個GitHub賬戶 http://www.linuxidc.com/Linux/2016-05/131079.htm
利用GitHub搭建個人Maven倉庫 http://www.linuxidc.com/Linux/2016-04/130197.htm
一分鐘認識GitHub http://www.linuxidc.com/Linux/2015-11/125089.htm
分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm
GitHub使用操作指南 http://www.linuxidc.com/Linux/2016-10/135782.htm
GitHub使用方法入門基礎 http://www.linuxidc.com/Linux/2017-05/144084.htm
相關文章