最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

如何優(yōu)雅地使用 Git?

2022-07-16 20:45 作者:DevWeekly  | 我要投稿

DevWeekly收集整理每周優(yōu)質(zhì)開發(fā)者內(nèi)容,包括開源項目、工具資源、技術(shù)文章等方面,每周五首發(fā)于Github:DevWeekly,歡迎大家Star并收藏!

提起Git就繞不開一個概念:版本控制系統(tǒng)。


因此,在學習Git之前有必要先了解一下版本系統(tǒng)的概念,這樣才會有一個更加全局清晰的認識。

1 版本控制系統(tǒng)

版本控制系統(tǒng)是用來跟蹤、制作和管理軟件代碼變化的工具。它能夠幫助開發(fā)者存儲不同階段對文件所做的每一個改動,這樣我們、或者與我們協(xié)作開發(fā)的同事就可以在檢索到這些改動。


目前主要包含3種類型的版本控制系統(tǒng):


  • 本地版本控制系統(tǒng)

  • 集中式版本控制系統(tǒng)

  • 分布式版本控制系統(tǒng)


下面,就分別介紹一下這3種版本控制系統(tǒng)。

1.1 本地版本控制系統(tǒng)


本地版本控制系統(tǒng)是位于你本地計算機上的一個本地數(shù)據(jù)庫,其中每個文件的變化都以補丁的形式存儲。


每一個補丁集只包含自上一版本以來對該文件所做的修改。


為了看到文件在任何給定時刻的樣子,有必要將文件的所有相關(guān)補丁按順序羅列在一起,直到逐個查看找到對應(yīng)的版本為止。


本地版本控制系統(tǒng)有一個很大的問題,所有東西都儲存在本地。如果本地數(shù)據(jù)庫出了什么問題,所有的補丁都會丟失。如果一個版本發(fā)生了什么事情,那么這個版本之后的所有修改都會丟失。


另外,與其他開發(fā)者或團隊合作是非常困難的。

1.2 集中式版本控制系統(tǒng)


集中的版本控制系統(tǒng)有一個包含所有文件版本的服務(wù)器,多個用戶可以同時訪問服務(wù)器上的文件,把它們拉到他們的本地計算機上,或者從他們的本地計算機上把它們推到服務(wù)器上。


相對本地版本控制系統(tǒng),這與其他開發(fā)者或團隊的合作變得容易。


這種結(jié)構(gòu)的最大問題是,所有東西都存儲在集中式服務(wù)器上。如果該服務(wù)器出了問題,沒有人可以保存他們的版本變化,拉動文件或進行協(xié)作。


與本地版本控制類似,如果數(shù)據(jù)庫被破壞,而備份沒有被保留,你就會失去整個項目的歷史,除了人們碰巧在他們的本地機器上有的單一快照。


比較知名的集中式版本控制系統(tǒng)有Microsoft Team Foundation Server (TFS)和SVN。

1.3 分布式版本控制系統(tǒng)


有了分布式版本控制系統(tǒng),用戶不僅是從服務(wù)器上拉取最新的文件快照,而是一種完全鏡像存儲庫,包括全部歷史。


因此,在一個項目上合作的每個人都擁有整個項目的本地拷貝,換句話說,擁有自己的本地數(shù)據(jù)庫和自己的完整歷史。


在這種模式下,如果服務(wù)器變得不可用或出了問題,任何一個用戶資源庫都可以將項目的版本拷貝發(fā)送給其他用戶,或者在服務(wù)器可用時再推回到服務(wù)器上。只要一個用戶包含一個正確的副本就足夠了。


而Git就是一個免費的開源分布式版本控制系統(tǒng),你可以用它來跟蹤文件的變化。


它可以實現(xiàn)對版本庫的新增、修改、刪除等操作。如果做了修改,那么由誰做的?在什么時間和日期做的?做這個修改的原因是什么?


Git都會記下這些行為,所以,總結(jié)而言,Git具有如下功能:


  • 可以跟蹤倉庫變化

  • 可以提交、撤銷、修改工程

  • 可以創(chuàng)建一個項目的多個副本,每個副本都可以單獨處理

  • 不同副本中的變化可以被比較,也可以被合并

2 為什么用Git?

在做一個有許多組件的大項目時,往往會有多個開發(fā)者參與,每個開發(fā)者都可以通過Git來對項目代碼進行管理。


例如,新增了功能之后可以用來提交代碼,如果操作失誤可以撤銷動作,也可以看到項目經(jīng)歷了哪些變化。


換句話說,通過Git,我們可以更加輕松便捷的管理代碼倉庫,實現(xiàn)協(xié)同開發(fā)。


了解了Git的價值和作用,下面就來安裝Git并開始用起來吧!

2.1 安裝Git

如果想要在我們的電腦上安裝Git,可以訪問Git的官方網(wǎng)站上下載適合你的操作系統(tǒng)的最新版本Git,它支持Windows、macOS、Linux/Unix。



下載后,按照不同操作系統(tǒng)的軟件安裝方式安裝該軟件,這與安裝其他軟件一樣,以Windows為例,下載后雙擊安裝即可,每個選項都可以選擇默認,然后點擊下一步。


安裝完成后,打開cmd(命令提示符)或終端,輸入下面命令來檢查git是否已經(jīng)安裝完畢:


git --version



如果返回了上圖中的信息,說明已經(jīng)安裝成功。

3 使用Git

通過前面的步驟已經(jīng)完成了Git的安裝,接下來就是學習如何使用Git。


但是,在正式使用之前,還有一件事需要做,我們需要對Git進行一下配置。


我們需要設(shè)置用戶名和電子郵件地址,Git 會用它來識別誰做的修改。

3.1 Git配置

如前面所述,我們需要在Git中配置一下用戶名和電子郵箱,可以通過如下命令完成配置:


git config --global user.name "YOUR_USERNAME" git config --global user.email "YOUR_EMAIL_ADDRESS"


這里一定要確保在相應(yīng)的字段輸入正確的用戶名和電子郵箱地址。

3.2 Git初始化

Git已經(jīng)安裝了,但是,當你創(chuàng)建一個名為“Git tutorial”目錄時,你會發(fā)現(xiàn)它和正常的目錄沒什么區(qū)別,我們執(zhí)行g(shù)it命令也不起作用。



這是因為還沒有進行Git初始化。


要是倉庫真正起作用,我們需要進入到相應(yīng)的目錄,執(zhí)行下面初始化命令:


git init



現(xiàn)在 Git 可以正式工作了。

4 Git命令

前面反復(fù)提到,我們使用過程中經(jīng)常用于代碼的提交、修改、撤掉等操作,這時候就需要用到一些Git命令。


下面,就來介紹一些Git中常用的命令。

4.1 git status

這將告訴你使用該命令時項目的狀態(tài),你做了哪些修改、哪些尚未提交等。


例如,如果我在前面已經(jīng)創(chuàng)建的Git tutorial文件夾中添加了兩個新文件,Git and Github blog cover.png和Superhero Git.png,然后執(zhí)行命令,就可以看到下面輸出信息:


git status



上圖中的提示信息表示,我們新增了兩個文件,但是還沒有提交(commit)。

4.2 git add

如前面提示的那樣,我們新增了兩個文件,但是Git并沒有追蹤到,這時候就需要我們來高速Git新增了內(nèi)容,然后它才可以追東文件夾的變化。


有兩種方法可以做到這一點,一是把所有新增文件全都添加上去,另一個就是添加指定文件:


添加所有文件


git add .


添加指定文件


git add "file_name"


接下來再使用git status命令來看看在我把 "Git and Github blog cover.png "添加到 Git 之后發(fā)生了什么:



這里你可以看到,現(xiàn)在 Git 識別出我添加了一個新文件。但是,仍然沒有提交。


順便,來講一下Git的不同狀態(tài)。


Git將文章狀態(tài)分為如下幾類:


  • Unstaged

  • Staged

  • Committed

  • Modified


當文件沒有被添加到 Git 時,它處于unstaged狀態(tài)。


當文件用git add "file_name "添加到Git中時,它處于staged狀態(tài)。在這種狀態(tài)下,所有必要的修改都已經(jīng)完成,可以提交了。


當我們用git commit -m "commit message "命令保存項目的狀態(tài),點擊項目的快照,這個狀態(tài)就被稱為Committed狀態(tài)。通過創(chuàng)建一個提交,你的工作被保存在本地,如果將來你的項目出現(xiàn)一些問題,你可以很容易的回滾到之前的版本。


當我們對提交的文件進行修改時,它就進入了Modified狀態(tài)。

4.3 git commit

在解釋這個命令之前,首先在 "Git tutorial "文件夾中添加一個 "sample.txt "文件,并將該文件夾中的所有文件使用git add .命令添加Git。


添加完所有文件后,我們將用命令創(chuàng)建我們的第一個提交:


git commit -m "commit message"



現(xiàn)在當你看到git狀態(tài)時,它會說 "nothing to commit, working tree is clean",這意味著所有的文件和所做的修改都被保存了。


一個提交就像賬本上的一個條目,包含以下信息:


  • 用戶名和電子郵箱

  • 提交的日期和時間

  • 提交信息

  • 此次提交的唯一哈希碼


我們可以通過如下命令查看這些提交信息:


git log


這將給你返回項目中所有提交的信息。



這樣,我們就完成了一次代碼提交。

4.4 git branch

Git 分支是一個非常強大的功能,也是一個需要了解的重要功能。


Git有一些使用非常頻繁的場景,用它為項目創(chuàng)建多個副本,并允許你分別對它們進行操作,Git就是通過分支實現(xiàn)了這一點。



檢查項目中的分支


git branch



創(chuàng)建一個新的分支


git branch "branch_name"


這將創(chuàng)建一個新的 Git 分支,我們的整個項目將被復(fù)制到該分支。


現(xiàn)在,當我們檢查項目中的分支時。我們會看到一個新的分支 "my_branch"。



然而,你可以看到星號(*)仍在main分支上,這意味著你仍然在項目的主分支(主副本)上工作,而不是在新的分支上。


要切換到新的分支,需要用到checkout命令:


git checkout "branch_name"



可以看到,它已經(jīng)切換到了新分支my_branch。


在這個分支中,你可以做任何修改,它不會影響項目的主分支內(nèi)容。


Git的命令有很多,這里只是簡單的介紹了4個比較常用的命令,用來高速大家Git是如何工作的。


如果對Git其他命令感興趣,推薦看一下一篇文章Git Cheat Sheet,這篇文章里詳細的介紹了50個會用到的Git命令。

5. 輔助工具

沒有完美無暇的工具,git也是,當然,有些功能僅僅依賴git是無法完成的。


一些強大的輔助工具能夠讓開發(fā)過程中事半功倍,效率得到極大的提高,下面就來介紹2款git輔助/增強工具。

5.1 tig

Tig是一個基于ncurses的git文本模式接口。它的功能主要是作為一個Git存儲庫瀏覽器,但也可以幫助在塊級別上分段提交更改,并充當各種Git命令輸出的分頁器。

5.2 oh-my-zsh

“Your terminal never feltthisgood before.”


提到命令行工具,首推的自然是這款大殺器,bash的替代工具。bash算得上一款中規(guī)中矩的shell工具,沒有什么缺陷,但是也談不上優(yōu)秀,在很多方面考慮的還不夠周到,例如,自動補全、語法、高亮顯示、提示符等。


提到oh-my-zsh,那就厲害了,102kStar、250+插件、125+主題、1450+貢獻者......從這一系列的數(shù)字中就可以體現(xiàn)出這款shell工具的生態(tài)有多么完善,也足以體現(xiàn)它有多么強大。


zsh是一款bash替代工具,為什么卻在這里提及呢?


因為,它的確在git的使用過程中提升了很大的效率。


當我們在Linux下開發(fā)時,默認的命令提示符是不指示分支信息和修改狀態(tài)的,當然,通過修改Linux配置文件寫一個函數(shù)也可以實現(xiàn)這項功能。


但是,我還是更推薦使用oh-my-zsh,像下面這樣,




如何優(yōu)雅地使用 Git?的評論 (共 條)

分享到微博請遵守國家法律
阆中市| 静乐县| 于都县| 揭阳市| 泗阳县| 保定市| 商洛市| 巨鹿县| 厦门市| 石棉县| 南木林县| 浏阳市| 西乡县| 彩票| 廊坊市| 闻喜县| 五家渠市| 江北区| 临澧县| 安溪县| 怀宁县| 枞阳县| 锡林浩特市| 乡宁县| 长乐市| 辰溪县| 宁武县| 秦皇岛市| 大兴区| 岐山县| 芜湖市| 延寿县| 崇左市| 花垣县| 湖口县| 浑源县| 嘉义市| 天水市| 潜山县| 凉城县| 涡阳县|