您是否在工作或?qū)W習(xí)中遇到過這種情況:為了防止文檔丟失或更改錯誤,我們常常需要復(fù)制出多個版本的文檔,例如:
“報告-v1” “報告-v2” “報告-v3” “報告-確定版” “報告-最終版” “報告-究極進(jìn)化版” … 每個版本都有各自的內(nèi)容,但最終我們只會使用一個版本。然而,在此之前的工作卻需要這些不同版本的文檔,因此每次都需要復(fù)制粘貼副本,導(dǎo)致文件數(shù)量不斷增加。文件數(shù)量的增加不是問題,問題是:隨著版本數(shù)量的不斷增多,您還能記得這些版本各自修改了什么嗎?這種情況不僅限于文檔,我們編寫的項目代碼也面臨同樣的問題!
一、版本控制器 為了更方便地管理這些不同版本的文件,版本控制器應(yīng)運而生。所謂的版本控制器,是一個可以記錄文件歷史和發(fā)展過程的系統(tǒng)。簡單來說,它是一個可以記錄工程的每一次改動和版本迭代的管理系統(tǒng),同時也便于多人協(xié)同工作。目前最主流的版本控制器就是 git。Git 可以管理電腦上所有格式的文件,例如 doc、excel、dwg、dgn、rvt 等。對于開發(fā)人員來說,Git 最重要的功能是幫助管理軟件開發(fā)項目中的源代碼文件!
二、Git 簡史 與生活中的許多偉大事物一樣,Git 誕生于一個充滿爭議和創(chuàng)新的時代。
Linux 內(nèi)核開源項目擁有眾多參與者。大多數(shù) Linux 內(nèi)核維護(hù)工作都花費在提交補(bǔ)丁和保存歸檔的繁瑣事務(wù)上(1991-2002年間)。到 2002 年,整個項目組開始使用一個專有的分布式版本控制系統(tǒng) BitKeeper 來管理和維護(hù)代碼。
到了 2005 年,開發(fā) BitKeeper 的商業(yè)公司與 Linux 內(nèi)核開源社區(qū)的合作關(guān)系結(jié)束,他們收回了 Linux 內(nèi)核社區(qū)免費使用 BitKeeper 的權(quán)力。這迫使 Linux 開源社區(qū)(特別是 Linux 的創(chuàng)始人 Linus Torvalds)基于使用 BitKeeper 的經(jīng)驗教訓(xùn),開發(fā)出自己的版本系統(tǒng)。他們?yōu)樾碌南到y(tǒng)制定了若干目標(biāo):
? 速度 ? 簡單的設(shè)計 ? 對非線性開發(fā)模式的強(qiáng)力支持(允許成千上萬個并行開發(fā)的分支) ? 完全分布式 ? 有能力高效管理類似 Linux 內(nèi)核一樣的超大規(guī)模項目(速度和數(shù)據(jù)量)
自 2005 年誕生以來,Git 日臻成熟完善,在高度易用的同時,仍保留著初期設(shè)定的目標(biāo)。它的速度極快,非常適合管理大型項目,并擁有令人難以置信的非線性分支管理系統(tǒng)。
三、安裝 Git
1 yum install git
四、在 gitee/Github 創(chuàng)建項目 注冊賬號,這個過程比較簡單,可以參考官網(wǎng)的提示,需要進(jìn)行郵箱驗證。
創(chuàng)建項目:
登錄成功后,進(jìn)入個人主頁,點擊右上角的“新建倉庫”按鈕新建倉庫。
然后跳轉(zhuǎn)到新頁面中,輸入倉庫名稱(注意,名稱不能重復(fù),系統(tǒng)會自動校驗。校驗過程可能會花費幾秒鐘)。校驗完畢后,根據(jù)提示填寫信息,初始化倉庫后,確認(rèn)創(chuàng)建。
在創(chuàng)建好的項目頁面中復(fù)制項目的鏈接,以便接下來進(jìn)行下載。
下載項目到本地:
創(chuàng)建好一個放置代碼的目錄。
1 git clone [url]
這里的 url 就是剛剛建立好的項目的鏈接。
五、三板斧 1、git add 命令將代碼放到剛才下載好的目錄中
git add [文件名]#添加指定文件git add . #所有未添加的文件
2、git commit 命令提交改動到本地
git commit -m "XXX" #添加描述
最后的 “.” 表示當(dāng)前目錄。提交的時候應(yīng)該注明提交日志,描述改動的詳細(xì)內(nèi)容。
3、git push 命令同步到遠(yuǎn)端服務(wù)器上
git push
需要填入用戶名密碼。同步成功后,刷新 github 頁面就能看到代碼改動了。
配置免密碼提交:https://www.php.cn/link/dbb6b4e727f400075c39bd45209c5b1c
六、其他 1、git pull 命令拉取托管平臺的代碼數(shù)據(jù)到本地文件夾。命令格式:
git pull
2、git log 命令命令格式:
git log# 查看所有提交過的版本的詳細(xì)信息 git log --pretty=oneline# 只顯示版本號和提交時的備注信息
3、git reflog 命令命令格式:
git reflog# 可以查看所有分支的所有操作記錄(包括已經(jīng)被刪除的commit記錄和reset的操作)
4、git stash 命令該命令主要用于解決文件沖突。命令格式:
git stash# 保存當(dāng)前工作進(jìn)度,會把暫存區(qū)和工作區(qū)的改動保存起來
七、.ignore 文件 1、為什么使用 .gitignore ? 在一些項目中,我們不想讓本地倉庫的所有文件都上傳到遠(yuǎn)程倉庫中,而是有選擇的上傳,比如:一些依賴文件(node_modules下的依賴)、bin 目錄下的文件、測試文件等。一方面將一些依賴、測試文件都上傳到遠(yuǎn)程傳輸量很大,另一方面,一些文件對于你這邊是可用的,在另一個人那里可能就不可用了,比如:本地配置文件。
為了解決上述問題,git 引入了 .gitignore 文件,使用該文件來選擇性的上傳文件。
2、如何創(chuàng)建.gitignore 進(jìn)入項目的目錄下,點擊右鍵單擊【git bash】
在命令行下輸入【touch .gitignore】創(chuàng)建文件
$ touch .gitignore
創(chuàng)建成功
3、.gitignore 的用法簡介 Git 忽略規(guī)則:
#?????#注釋,內(nèi)容被 Git 忽略.sample # 忽略所有 .sample 結(jié)尾的文件!lib.sample # 但 lib.sample 除外/TODO # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODObuild/ # 忽略 build/ 目錄下的所有文件doc/.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt[]?????# 匹配字符列,如 [Ll]ibrary 意為Library或library均滿足條件
如果沒有特殊要求,也可以使用官方版本的 .gitignore 配置,通常初始化倉庫會自動生成,若無請自行搜尋。
八、Git 小總結(jié)