Git服務器搭建(gogs服務)

一、GIT

1.1Gogs

Go語言開發的Git服務器。https://gogs.io/

1.2 軟件依賴

1.2.1 Git

yum install git -y

1.2.2 Mysql

$ yum install mariadb
設置mysql數據庫環境,mysql_secure_installation

1.2.3 安裝

下載gogs安裝程序gogs0.11.4_amd64.tar.gz,上傳到Centos解壓,生產gogs目錄,裏面就是gogs所有文件。初始化數據庫
$ mysql -uroot -p < scripts/mysql.sql # 其實就是創建了一個gogs的庫
爲gogs庫創建mysql用戶gogs,並授權
mysql> grant all on gogs.* to ‘gogs’@’%’ identified by ‘gogs’;
mysql> flush privileges;

1.3 配置

概述

數據庫安全

二、Git

安裝: https://git-scm.com/downloads
下載對應操作系統的Git客戶端版本

概念

Git概念
Repository倉庫、版本庫:git初始化後,會在當前目錄生成一個.git目錄,這就是版本庫
Workspace工作空間、工作區
.git所在的目錄就是工作區,一般是項目的根目錄
index索引:介於工作區和版本庫之間,暫存修改的
remote 遠程版本庫:網絡上的另一個版本庫,可以和本地庫交互

使用

初始化一個版本庫

$ git init
在當前目錄中增加了一個.git目錄,不要自行修改這個目錄裏面的文件。當前目錄一般是項目的根目錄。

添加文件

$ echo ‘

testMy Website’ > index.htm
$ git add index.htm
單個文件添加:
  這一步是把文件的當前變化增加到索引中,也就是以後這個文件需要版本庫來跟蹤管理,注意這不是提交。此時,文件還可以繼續修改,還可以添加新的被跟蹤文件,一定要add才能把這些改變加入到索引中。
多個文件添加:
$ git add .
  .點號,代表當前目錄,這條命令將遞歸添加當前目錄及其子目錄所有文件
只要是目錄,就會遞歸添加該目錄下的文件和子目錄。

查看狀態

$ git status
$ git status -s

git的文件分類

  • 追蹤的Tracked,已經加入版本庫的文
  • 未追蹤的Untracked,未加入到版本庫的未被管理的文件
  • 忽略的Ignored,git不再關注的文件,例如一些臨時文件 .gitignore文件中,目錄以/結尾,行起始的!是取反
    .gitignore內容如下:
    .ipynb
    pycache/
    .

    忽略文件不需要自己寫,Python的已經有了https://github.com/github/gitignore/blob/master/Python.gitignore
    其它語言的在這裏找 https://github.com/github/gitignore

提交代碼

$ git commit --help
$ git commit -m “First Commit”
[master (root-commit) 8a73953] First Commit
Committer: python <python@nodex.(none)>
commit 提交更改到版本庫
-m 填寫本次日誌消息,必須寫。工作中,程序員應該對每一次提交寫明做了什麼改動

文件的生命週期

文件的生命週期  文件add後,就成爲可跟蹤文件的未修改狀態unmodified,修改後,文件就變成modified狀態。再次add後,將變化提交到索引,狀態變爲staged,這才能提交。提交成功,文件狀態從staged變回unmodified。

git的提交

git的提交分爲兩個步驟:
暫存變更:add作用是把新文件或者文件新的改動添加到一個暫存區stage,也就是加入到index中。
提交變更:commit提交的是暫存區中的改動,而不是物理文件目前的改動,提交到當前分支,默認是master分支。
也可以使用下面命令,將兩步合成一步
$ git commit index.htm
如果改動了一批文件,一個個寫名字很麻煩,使用下面的命令:
$ git commit -a
-a,–all 會把所有跟蹤的文件的改動自動暫存,然後commit。上面命令未提交message,會出現一個類似vi命令的
操作界面,需要編寫message之後,纔行。
也可以使用下面的命令,把message信息一併填寫了。
$ git commit -a -m “message”

增補

二次提交後,忘記加入一個文件about.htm
–amend 修改,通過創建一個新的commit來replace當前分支的頂部。
也可以在命令中繼續使用-m選項直接提交message。
git log 查看一下版本庫裏面提交的歷史記錄。

diff比較

查看各種差異:
git diff 查看被跟蹤文件未暫存的修改,比較暫存區和工作區
git diff --cached 查看被跟蹤文件暫存的修改,比較暫存區和上一次commit的差異
git diff HEAD ,查看被跟蹤文件,比較工作區和上一次commit的差異。HEAD指代最後一次commit
diff

HEAD

HEAD可以看做是一個遊標,指向當前分支最後一次提交。
HEAD的值存儲在.git/HEAD中。
HEAD,指代最後一次commit
HEAD^,指代上一次提交
HEAD^^,指代上上一次提交
上n次提交,表示爲HEAD~n

檢出和重置

  checkout 用於切換分支,或恢復工作區文件。注意,checkout會重寫工作區,這個命令還是較爲危險的。

檢出

重置

重置內容源碼均在github倉庫

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章