日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

GIT安装部署

發布時間:2025/3/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GIT安装部署 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

git

git簡介

Git不僅是一款開源的分布式版本控制系統,而且有其獨特的功能特性,例如大多數的分布式版本控制系統只會記錄每次文件的變化,說白了就是只會關心文件的內容變化差異,而Git則是關注于文件數據整體的變化,直接會將文件提交時的數據保存成快照,而非僅記錄差異內容,并且使用SHA-1加密算法保證數據的完整性。

Git為了提高效率,對于沒有被修改的文件,則不會重復存儲,而是創建一個鏈接指向之前存儲過的文件。

在正式使用前,我們還需要弄清楚Git的三種重要模式,分別是已提交、已修改、已暫存

已提交(committed):表示數據文件已經順利提交到Git數據庫中。

已修改(modified):表示數據文件已經被修改,但未被保存到Git數據庫中。

已暫存(staged):表示數據文件已經被修改,并會在下次提交時提交到Git數據庫中。

?

?

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo


Git是分布式的版本控制系統,我們只要有了一個原始Git版本倉庫,就可以讓其他主機克隆走這個原始版本倉庫,從而使得一個Git版本倉庫可以被同時分布到不同的主機之上,并且每臺主機的版本庫都是一樣的,沒有主次之分,極大的保證了數據安全性,并使得用戶能夠自主選擇向那個Git服務器推送文件了,其實部署一個git服務器是非常簡單的。


安裝git

yum install git -y

?

配置git用戶

git config --global user.name "yangyang"

?

配置用戶郵箱

git config --global user.email "yangyang@mail.com"

?

帶顏色

git config --global color.ui true

?

?

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 對象

?

?

提交數據

mkdir yangyang

?

創建一個工作目錄

cd yangyang

?

初始化git工作目錄

git init

?

初始化空的 Git 版本庫于

/root/yangyang/.git/

?

創建文件

touch readme

創建文件

git add readme.txt

添加文件到暫存區

查看狀態 git status # 位于分支 master # # 初始提交 # # 要提交的變更: # (使用 "git rm --cached <file>..." 撤出暫存區) # # 新文件: readme.txt # # 未跟蹤的文件:

?

?

提交到倉庫

git commit -m "the fisst commit"

[master(根提交) 4367d80] the fisst commit 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 readme.txt

?


git移除數據

創建文件

touch database

?

添加到文件到暫存區

git add database

?

查看狀態

git status
# 位于分支 master # 要提交的變更: # (使用
"git reset HEAD <file>..." 撤出暫存區) # # 新文件: database #

?

?

移除暫存區文件(并不會刪除文件)

git rm --cached database rm 'database'

?


###強制刪除文件和git緩存區

git rm -f database(database 文件也沒了)

?

?

git移動數據

重命名

git mv readme.txt test.txt git status# 位于分支 master # 要提交的變更: # (使用 "git reset HEAD <file>..." 撤出暫存區) # # 重命名: readme.txt -> test.txt

?

?

在提交到倉庫

git commit -m "changed name"[master 8a8b23d] changed name 1 file changed, 0 insertions(+), 0 deletions(-) rename readme.txt => test.txt (100%)

?

?


git歷史記錄

git logcommit 8a8b23d984b69fb30db6a1cec40f27ba6b873652 Author: yangyang <yangyang@mail.com> Date: Fri May 11 10:12:14 2018 +0800changed namecommit 4367d804810b6309b925720498e7cbaa641dba93 Author: yangyang <yangyang@mail.com> Date: Fri May 11 10:06:56 2018 +0800the fisst commit

查看最近幾條記錄

git log -2

顯示每次提交的內容差異

git log -p -1

?

#–pretty根據不同的格式展示提交的歷史信息

git log –pretty=oneline

?

#以更詳細的模式輸出提交的歷史記錄

git log –pretty=fuller -2

?

還可以使用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 作者的修訂時間。

?

?

git log –pretty=fomat:”%h %cn”

#查看當前所有提交記錄的簡短SHA-1哈希字串與提交著的姓名

fomat:2caa209 yangyang
fomat:88f3791 yangyang
fomat:76c486f yangyang

?


git數還原
添加一段文字

echo "yangyang">readme.txt

?

提交到暫存區

git add readme.txt

?

提交到倉庫

git commit -m "yangyang"

?

在此追加一段話到readme

echo "hellow ....">>readme.txt

?

添加到暫存區

git add readme.txt

?

提交

git commit -m "hello"

?

覺得寫得不怎么樣,想還原某一次提交的快照

git log --pretty=oneline
a7542d38edb628dd48c4118993784fec92d4fbbf hello 84d3786398cfa203ffc1c7015033457c72e5c72f yangyang

?


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

?

還原上一次提交版本

git reset --hard HEAD^

?

HEAD 現在位于 84d3786 yangyang


查看你的文件

cat readme.txt yangyang

?

?

#這時候又想還原的最新的版本。。。。

git log --pretty=oneline84d3786398cfa203ffc1c7015033457c72e5c72f yangyang 8a8b23d984b69fb30db6a1cec40f27ba6b873652 changed name 4367d804810b6309b925720498e7cbaa641dba93 the fisst commit

?

發現沒有hello沒有了。。。。
使用reflog 查看歷史更新點

git reflog84d3786 HEAD@{0}: reset: moving to HEAD^ a7542d3 HEAD@{1}: commit: hello 84d3786 HEAD@{2}: commit: yangyang 8a8b23d HEAD@{3}: reset: moving to HEAD^ 6041523 HEAD@{4}: commit: introduction software 8a8b23d HEAD@{5}: commit: changed name 4367d80 HEAD@{6}: commit (initial): the fisst commit

?

還原

git reset --hard a7542d3

?

HEAD 現在位于 a7542d3 hello

cat readme.txt yangyang hellow ...

?

.

?


Git管理分支結構

分支即是平行空間,假設你在為某個手機系統研發拍照功能,代碼已經完成了80%,但如果將這不完整的代碼直接提交到git倉庫中,又有可能影響到其他人的工作,此時我們便可以在該軟件的項目之上創建一個名叫”拍照功能”的分支,這種分支只會屬于你自己,而其他人看不到,等代碼編寫完成后再與原來的項目主分支合并下即可,這樣即能保證代碼不丟失,又不影響其他人的工作。

?

創建git分支

git branch linux

?

切換分支

git checkou linux

?

查看當前分支情況,當前分支前面有*號

git branch * linux master

?

添加以行字符串

echo “Create new branch is linux” >> readme.txt

?

提交到暫存區

git add readme.txt

?

提交到git倉庫

git commit -m "new branch"

?

我們提交后文件 切換回到master分支

git checkout master

?

切換到分支 'master'


查看文件

cat readme.txt yangyang hellow ....

?

?

git合并分支

查看現在在那個分支

git branch linux * master

?


#合并分支

git merge linux 更新 a7542d3..0918787 Fast-forward readme.txt | 1 + 1 file changed, 1 insertion(+)

?

查看文件

cat readme.txt
yangyang hellow .... create
new branch is linux

?

?

刪除分支

git branch -d linux

?

已刪除分支 linux(曾為 0918787)。

查看分支

git branch * master

?

git管理標簽

當版本倉庫內的數據有個大的改善或者功能更新,我們經常會打一個類似于軟件版本號的標簽,這樣通過標簽就可以將版本庫中的某個歷史版本給記錄下來,方便我們隨時將特定歷史時期的數據取出來用,另外打標簽其實只是像某個歷史版本做了一個指針,所以一般都是瞬間完成的。


#當前提交內容打個標簽(方便快速回滾)
git tag v1.0

查看當前所有標簽
git tag

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


創建帶標簽及說明
git tag v1.2 -m "version 1.2 release is test"


刪除之前標簽
git tag -d v1.0


查看
git tag
v1.2

?

gitlab安裝部署

yum install curl openssh-server postfix -y


systemctl enable sshd postfix

systemctl start sshd postfix

*如果有防火墻
firewall-cmd –permanent –add-service=http

systemctl reload firewalld

?


添加gitlab包服務器安裝包

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

yum install gitlab-ce
(挺慢的,如果不行https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/)

配置并啟動
gitlab-ctl reconfigure

gitlab-ctl status

gitlab-ctl stop

gitlab-ctl start


瀏覽到主機名和登錄
root
密碼自動生成

?

GitLab配置ssh
#如果是默認的22,就必須修改,否則不生效,我這里改為了52113
sed -i 's/#Port 22/Port 52113/g' /etc/ssh/sshd_config


systemctl restart sshd #重啟sshd服務

#修改gitlab里面的ssh_prot端口為自己服務器的sshd端口,聲明gitlab.yml中的配置會被這個給覆蓋


grep “ssh_port” /etc/gitlab/gitlab.rb #修改gitlab里面的ssh_prot端口為自己服務器的sshd端口,聲明gitlab.yml中的配置會被這個給覆蓋

gitlab_rails[‘gitlab_shell_ssh_port’] = 52113

?

gitlab重新加載配置文件即可

gitlab-ctl reconfigure

?

GitHub托管服務

?Github顧名思義是一個Git版本庫的托管服務,是目前全球最大的軟件倉庫,擁有上百萬的開發者用戶,也是軟件開發和尋找資源的最佳途徑,Github不僅可以托管各種Git版本倉庫,還擁有了更美觀的Web界面,您的代碼文件可以被任何人克隆,使得開發者為開源項貢獻代碼變得更加容易,當然也可以付費購買私有庫,這樣高性價比的私有庫真的是幫助到了很多團隊和企業。
大多數用戶都是為了尋找資源而愛上Github的,首先進入網站,點擊注冊(Sign up):

?

?

?

?

?

?

?

我們在向Github推送文件時,可以選擇SSH協議模式,在本機生成密鑰

生成密鑰

ssh-keygen

?

?

?

查看公鑰
cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDO2dis085TOtTqAFU7aUDh2siAav/6HgXuC3+yIFxAFvlKNn88GLqoqlFlnVCobgvri56nqYo1fpclVk0Z+ZoShLF0HCFfZRZVlbwXC6y6uy8BqzMzKXptUTPBw2SbL843kNVyk01kx2kop3YukSG4fWsr2CRUeNUiqe/3q4S1Hzyzd+u6W67W9ax4W0Ud2r3v1mkc0L3lIl2aVLk1G/qhvcD+K7ivo2zEozDVzAsawim+taYa6s8wM8N99ij0+WrvRLN55CscYTnX4u52Vg1U7bdGtz05KmVUW2Prb/fnsnGhJ5CJz40VNqHxpVmrsiRf7TcMdNKAX4TARqYEhkjD root@localhost.localdomain

?

?

?

?

?

?

手動克隆

?git clone https://github.com/sky00747/demo.git

上傳測試

cd demo/

git add test.txt
git commit -m "add test file"
git remote
origin

?

上傳

git push -u origin master

?

git push -u origin master Username for 'https://github.com': sky00747 Password for 'https://sky00747@github.com': Counting objects: 4, done. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 282 bytes | 0 bytes/s, done. Total 3 (delta 0), reused 0 (delta 0) To https://github.com/sky00747/demo.gitb873aeb..466e6a9 master -> master 分支 master 設置為跟蹤來自 origin 的遠程分支 master。

?

?

轉載于:https://www.cnblogs.com/sky00747/p/9024786.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的GIT安装部署的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。