git版本控制器上手超簡單

2021-07-29 10:38:33 字數 4641 閱讀 2318

本地**庫,其實就是我們的**目錄(本地倉庫),如果非要區別普通**目錄和git倉庫目錄,那就是基於git的**目錄裡面會多乙個.git的目錄,這個目錄一般是不可見的。如何將乙個普通**目錄變成git工作目錄,其實很簡單。我們可以使用cmdgit bash或任何乙個命令列工具,進入工作目錄,然後執行下面這行**就可以了:

git init
當本地倉庫初始化好後,其實我們已經可以使用git工作了,比如將**檔案新增到版本記錄,建立本地分支,合併本地分支**等等。

如果僅僅使用git在本地搗鼓,那麼我們上面提到的遠端**託管的優勢就完全沒有意義了,所以我們要把我們的本地倉庫和遠端倉庫繫結起來,這裡就要分情況了。

如果是現在本地已經開發的乙個全新專案需要推送到遠端倉庫,你需要先這麼做:

git remote add origin

如果是在別人已經開發過的倉庫中繼續開發,我們不需要預先建立並初始化本地倉庫,直接執行下面這條命令就可以了:

當我們已經擁有乙個本地git倉庫或對我們的專案進行了修改後,我們可能迫不及待的想看看我們專案中各個檔案的當前狀態,我們只需在git bash中執行:

git status
通常情況下,我們可能看到一堆紅色標記的列表,包括以下資訊:

changes to be committed:等待提交的更改

untracked files:未新增到版本記錄的檔案

如果是乙個全新倉庫,我們只能看到untracked files項。

當我們通過git status看到有紅色檔案列表,而且其中有我們想要儲存到遠端倉庫中的檔案時,我們可通過git add命令,將相應檔案新增到暫存區,我們也可以通過git add .命令,新增所有新增或有更新的檔案,但這裡要注意刪除的檔案不會被新增。

新增刪除的檔案需要使用git add -ugit add -u .命令。

接下來我們還需要執行乙個命令git commit,才能將新增的檔案(變化)提交到暫存區。這個命令的用法也有幾種,常見的是直接執行git commit -m 'log info',還有一種是執行git commit開啟指定編輯器,編輯好日誌後關閉編輯器即可,一般用於日誌內容比較多的情況。

在實際開發過程中,我們需要考慮**的穩定性,未經過測試的**不能發布到線上環境。這就意味著我們如果我們一直在乙個分支上開發**是很危險的,一步留神就可能把有bug的**提交到了遠端倉庫,造成不必要的麻煩,所以一般情況下使用版本控制器,我們都會使用它的分支功能。即開發分支、主幹分支,當開發分支上的**測試穩定後,再合併到主幹分支,將主幹分支提交到遠端倉庫,這樣出錯的概率就降低了很多。

使用git bash可以很方便的建立分支,我們只需執行git branch newbranch即可建立乙個名為newbranch的分支,然後我們只需執行git checkout newbranch命令,即可將我們的工作環境切換到newbranch分支上。

還有一種更為簡便的方法,可以直接使用checkout命令,完成建立並切換到分支:

git checkout -b newbranch

前面我們提到了,當開發分支上的**測試穩定後,我們就可以合併到主幹分支上,並提交到遠端倉庫。那麼如何合併兩個分支的**成了乙個問題。難道要對比兩個檔案的差異,一行一行的copy**?顯然git不會這麼笨,它是很智慧型的,我們只需簡單的執行一條命令即可完成**自動合併。我們設想開發分支(newbranch)將被合併到主幹分支(master)上,那麼首先我們要先將開發分支的**提交到暫存區,然後切換到主幹分支,最後執行合併操作,完整的操作流程大致如下:

git add .

git commit -m 'newbranch 上的變動內容'

git checkout master

git merge newbranch

但是,我們在合併**的時候,特別是多人開發的時候,偶爾出現衝突(兩個人同時改動了同乙個地方)也是在所難免的,這種情況,我麼恐怕就需要人肉解決下了。不過問題不大,git將檔案衝突的地方都會以特殊的形式標明的。

# 衝突示例

<<<<<<< head

aa # 當前分支上的內容

*****==

bb # 被合併分支上的內容

>>>>>>> nb

當開發分支上的**都被合併到主幹分支上,並且所有的衝突都解決好後,我們就可以將主幹分支的**推送到遠端倉庫,提供給別人使用了。這一步很簡單:

git push origin master
還記得我們執行git remote add後面的origin嗎?這裡和那裡是一樣的哦,而最後那個master就是分支名稱了。如果遠端已經有該分支,便會先檢查遠端倉庫在最近一次更新之後發生過更改,如果有會提示先進行更新**,然後再提交。如果未變動過,本地**則會直接提交至遠端**倉庫。

然而,一般情況下,我們在執行git push之前,都會先更新一次遠端倉庫中的內容:

git pull origin master
這裡我們需要注意一下,和git merge命令一樣,pull命令是有可能導致**衝突的。而pull命令從某種意義來講實際和fetch+merge命令一樣,這裡就不再對fetch做進一步說明了。

通常我們在開發過程中涉及的檔案比較多,修改的地方也比較多,當我們需要提交**的時候,往往想不起來我們修改了哪些內容,哪些問需被提交。這時候我們可能希望能檢視一下在前次提交**之後我們對本地倉庫所做的改動,那麼你可以這麼做:

git diff
檢視working tree和index file的差別,也可以:

檢視index file與commit的差別,還可以:

git diff head
檢視working tree和commit的差別。

diff命令的使用,大致就是這個樣子,她們之間的細節差異,可以通過網路查詢更詳細的說明,也可以在實際使用中自己去觀察,這裡就不做贅述了。

當我們的專案開發到一定階段後,也許偶爾就發現該版本的公升級存在問題,需要臨時將專案恢復到上乙個穩定版本。但是,人肉的將公升級**改回去,顯然是不現實的,更科學的解決方法是使用git的reset命令:

git reset

--hard commitid

將本地倉庫**回滾到commitid對應的版本,或者:

git reset

--hard head~number

將最近number次的提交進行回滾,number為乙個整數。那麼問題來了,當我們需要回滾到指定版本的時候,commitid從何而來?我們怎麼知道哪個commit是最近的穩定版本?

說到這裡,就該log命令出場了。我們可以使用log命令,檢視倉庫的提交歷史,以及每個提交的更改日誌,甚至更改的內容,其最基本的用法如下:

# 檢視最近兩次的提交歷史

git log

# 缺省會輸出所有的提交歷史,最近的在最上面

tag命令,是用來給我們的**庫打標籤的。聽起來可能有些不太理解,其實日常使用中,通常是用來新增版本標記。

git tag v1.0

.0

表明在這裡我們發布了1.0.0版本。這樣就可以很方便的讓我們回顧專案每個版本的樣子,歷史就是這樣用血寫成的。我們也可以通過tag命令檢視已有的標籤,只需要執行:

git tag
這樣就行了。

git已然非常強大,而且git的命令也已經非常簡潔明瞭。但是,開發者們往往希望使用工具的同時能保留自己的個性,希望能符合自己的操作習慣。比如筆者就嫌checkout命令太長了,雖然各種自動補全,但用起來還是覺得不順手,那麼有沒有什麼辦法可以再簡潔些呢?答案是肯定的。下面給大家列出筆者的縮寫配置,當然也是曾經參考了很多網上大牛們的教程的。

git config --global

alias.st status

git config --global

alias.br branch

git config --global

alias.co checkout

git config --global

alias.ci commit

配置好後再輸入git命令的時候就不用再輸入一大段了,例如我們要檢視狀態,只需:

git st
是不是很方便?這裡只列了一些最為簡單的配置,以拋磚引玉,更多更高大上的配置,就待讀者深入挖掘了。

版本控制器 Git

版本控制器 集中式 分布式 集中式 cvs svn等 缺點 必須聯網,必須推送到 伺服器 分布式 git等 不必聯網,速度快,安全性很高,每個人的電腦都有完整的版本庫 git的使用 一 安裝 linux安裝 git 檢視是否安裝 debian或ubuntu linux sudo apt get in...

git版本控制器

git是目前世界上最先進的分布式版本控制系統。將雲端專案 拉取到本地,在git bash下執行 git clone 專案位址 建立本地分支 git branch dev 建立乙個dev分支 git branch a 檢視分支資訊,上部分為本地 下部分為遠端 git push 把 提交到雲端git p...

Git版本控制器 簡介

git 讀音為 g t 是乙個開源的分布式版本控制系統,可以有效 高速地處理從很小到非常大的專案版本管理。git 是 linus torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體。分布式相比於集中式的最大區別在於開發者可以提交到本地,每個開發者通過轉殖 git...