本文盡量以初學者的角度讓你快速掌握GIT參與多人協(xié)作,由簡單到復雜,如果你不是初學者,請?zhí)^前面的基礎部分。

本文參考:
廖雪峰老師的GIt教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
Git官方文檔
https://git-scm.com/book/zh/v1/
是什么
Git是一個開源的分布式版本控制系統(tǒng),可以有效、高速的處理從很小到非常大的項目版本管理。 Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件
--------------------------------------------------------------------------------------來源-百度百科
Git是目前世界上最先進的分布式版本控制系統(tǒng)(沒有之一),作為新時代優(yōu)秀青年,怎么能不接觸這么高端大氣上檔次的玩意,那你肯定又要問
什么是版本控制系統(tǒng)?
OK?舉個例子,如果你用過Microsoft Word寫過文章,文檔或者是什么長篇大論,那你肯定會有這種經(jīng)歷
想刪除一個段落,卻又怕無法找回,怎么辦呢,先把當前的版本另存為另一個文件,然后刪完接著來寫,接著再遇到這種問題,再另存為。
所以你的word變成了這個樣子:

過了一周,你想找回被刪除的文字,但是已經(jīng)記不清保存在哪個文件里面了,只能一個一個去尋找,隔著屏幕我都能知道你這會的心情。
OK,以這個文檔為基礎,再想下,公司的小王要和你一塊整理這個文檔,于是你把你現(xiàn)在已經(jīng)寫好的這部分發(fā)給他了,你倆一塊來寫,小王寫好后,把文件傳給你,這個時候,發(fā)動你聰明的小腦筋,你得知道他修改了哪里,他新增了什么,在哪個地方新增的,怎么和你后來自己寫的整合,是不是想想都頭疼?
沒關系,這也是Git出現(xiàn)的原因,記錄文件在每個版本的改動信息,不用個人手動管理。
那我們就開始吧
安裝
1.在Linux上安裝Git
因為我沒有接觸過Linux,這段內(nèi)容是從廖雪峰老師的網(wǎng)站直接復制來的,各位如果有問題還希望及時留言
首先,你可以試著輸入git,看看系統(tǒng)有沒有安裝Git:
$ git
The program 'git' is currently not installed. You can install it by typing:
sudo apt-get install git
像上面的命令,有很多Linux會友好地告訴你Git沒有安裝,還會告訴你如何安裝Git。
如果你碰巧用Debian或Ubuntu Linux,通過一條sudo apt-get install git就可以直接完成Git的安裝,非常簡單。
老一點的Debian或Ubuntu Linux,要把命令改為sudo apt-get install git-core,因為以前有個軟件也叫GIT(GNU Interactive Tools),結果Git就只能叫git-core了。由于Git名氣實在太大,后來就把GNU Interactive Tools改成gnuit,git-core正式改為git。
如果是其他Linux版本,可以直接通過源碼安裝。先從Git官網(wǎng)下載源碼,然后解壓,依次輸入:./config,make,sudo make install這幾個命令安裝就好了。
2.Mac OS 、Windows通用安裝Git
- 下載git 文件 地址:https://git-scm.com/downloads

-
下載完之后雙擊進行安裝。
-
選擇安裝目錄
選擇安裝目錄 -
選擇組件
選擇組件 -
開始菜單目錄名設置
開始菜單目錄名設置 -
使用命令行環(huán)境
使用命令行環(huán)境 -
以下三步默認,直接點擊下一步
安裝完成

- 檢測是否安裝完成
回到電腦桌面,鼠標右鍵點擊,如果看到如下圖兩個Git單詞則安裝成功

也可打開命令行工具,輸入以下指令
git --version
按下回車如果正確運行,就能得到你電腦上安裝的Git的版本號,則安裝成功,如下圖:

安裝完成進行全局配置:
打開命令行輸入
git config --global user.name "userName" //用戶名
git config --global user.email email //郵箱
因為Git是分布式版本控制,所以多人寫作時候,進行操作,你必須自報家門,這樣的話,在進行操作的時候,遠程倉庫才知道是誰,做了什么事。
OK,這樣的話,我們就正確的安裝和配置好了基本的GIT環(huán)境。接下來,我們就簡單的講解下Git的工作流程。
GIT工作流程
- 克隆 Git 資源作為工作目錄。
- 在克隆的資源上添加或修改文件。
- 如果其他人修改了,你可以更新資源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果發(fā)現(xiàn)錯誤,可以撤回提交并再次修改并提交。
如下圖

創(chuàng)建版本庫
什么是版本庫呢?版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。
所以,創(chuàng)建一個版本庫非常簡單,首先,選擇一個合適的地方,創(chuàng)建一個空目錄:
$ mkdir gitTest
$ cd gitTest
$ pwd
/git/gitTest
pwd命令用于顯示當前目錄。在我的Mac上,這個倉庫位于/git/gitTest。
如果你使用Windows系統(tǒng),為了避免遇到各種莫名其妙的問題,請確保目錄名(包括父目錄)不包含中文。
第二步,通過git init命令把這個目錄變成Git可以管理的倉庫:
$ git init
Initialized empty Git repository in /git/gitTest/.git/
這樣的話會在倉庫的目錄內(nèi)生成一個.git的文件,默認隱藏,在一些特殊的編輯器內(nèi)可以顯示,里面的信息是跟蹤管理版本庫的,如沒有必要,請不要修改。
OK,接下來,我們就來看看GIT的強大力量吧。
我們在剛才建好的文件夾下,創(chuàng)建一個 gitTest.txt 文件

在這個文件中輸入以下內(nèi)容
這是一個git測試文件
和把大象放到冰箱需要3步相比,把一個文件放到Git倉庫只需要兩步。
第一步,用命令 git add 告訴Git,把文件添加到倉庫:
$ git add gitTest.txt
執(zhí)行上面的命令,沒有任何顯示,這就對了。
第二步,用命令 git commit 告訴Git,把文件提交到倉庫:
$ git commit -m "修改的描述 "
[master (root-commit) ea48624] 修改的描述
1 file changed, 1 insertion(+)
create mode 100644 gitTest.txt
簡單解釋一下 git commit 命令,-m 后面輸入的是本次提交的說明,可以輸入任意內(nèi)容,當然最好是有意義的,這樣你就能從歷史記錄里方便地找到改動記錄。
git commit 命令成功執(zhí)行后會告訴你,一個文件被更改,也就是我們新添加的 gitTest.txt 文件,插入了一行內(nèi)容,也就是里面的(這是一個git測試文件)。commit命令可以一次提交很多文件,取決于你添加(add)多少文件到倉庫。當然你也可以使用 git add . 講全部已改動的文件一次性全部添加,然后再使用commit一次性全部提交,這個當然取決你自己了
ok,到現(xiàn)在我們已經(jīng)成功的添加并提交了一個 gitTest.txt 文件,現(xiàn)在我們繼續(xù)改動這個文件,再添加一行文字:
Hello,world
這是一個git測試文件
熟悉的hello,world,現(xiàn)在我們運行 git status 命令看看結果。
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: gitTest.txt
no changes added to commit (use "git add" and/or "git commit -a")
git status 命令可以讓我們時刻掌握倉庫當前的狀態(tài),上面的命令告訴我們,gitTest.txt被修改過了,但還沒有準備提交的修改。
雖然Git告訴我們readme.txt被修改了,但如果能看看具體修改了什么內(nèi)容,自然是很好的。比如你休假兩周從國外回來,第一天上班時,已經(jīng)記不清上次怎么修改的gitTest.txt,所以,需要用git diff這個命令看看:
$ git diff
diff --git a/gitTest.txt b/gitTest.txt
index cb0f561..cbbf0d5 100644
--- a/gitTest.txt
+++ b/gitTest.txt
@@ -1 +1,2 @@
+hello,world
這是一個git測試文件
\ No newline at end of file
上面的命令輸出的意思是,我們在第一行添加了一個"hello,world",知道了修改什么之后,就可以放心的提交了,提交修改文件和剛才我們做的提交新文件是一樣的步驟
第一步是 git add gitTest.txt
$ git add gitTest.txt
同樣沒有任何提示,接下來我們在提交之前,先進行一下 git status 的操作,看下當前的倉庫狀態(tài)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: gitTest.txt
git status 告訴我們,將要被提交的修改包括readme.txt,下一步,就可以放心地提交了:
$ git commit -m "提交修改"
[master 89fe590] 提交修改
1 file changed, 1 insertion(+)
提交后我們再執(zhí)行 git status 命令,查看當前倉庫的狀態(tài):
$ git status
On branch master
nothing to commit, working tree clean
Git告訴我們當前沒有需要提交的修改,而且,工作目錄是干凈(working tree clean)的
OK,學到簡單的添加、提交操作后,我們來直接上手項目,看看更多的git操作,
開始的時候說過,GIT是多人協(xié)作分布式管理系統(tǒng),既然是多人協(xié)作,自然會有一個遠程的倉庫,比如一個電腦24小時開機來充當服務器的角色,其他的每個人都可以從這個"服務器"倉庫克隆一分到自己的電腦上來進行操作,然后把各自的提交推送到這個"服務器"上,也可以從服務器倉庫中拉取別人的提交。
我們完全可以自己搭建一個這樣的GIT服務器,但是,為了學習GIT搭一個服務器,完全是小題大做,也沒有必要,于是,大家一定能夠想到一個耳熟能詳?shù)拿?/p>
GitHub
這個網(wǎng)站就是提供Git倉庫托管服務的,所以,只要注冊一個GitHub賬號,就可以免費獲得Git遠程倉庫
但是現(xiàn)在為了學習便利,我們來采用開源中國的碼云來進行舉例。
關于碼云的介紹,和碼云和github的區(qū)別請參考
https://www.zhihu.com/question/50212423
言歸正傳,注冊碼云賬號并登錄,會看到類似以下界面

接著,按以下步驟新建一個項目

輸入完成后,點擊完成創(chuàng)建,會自動生成項目并且跳轉到一個類似這樣的頁面

然后,如圖所示,可以查看項目的git地址

OK,這樣的話,我們就已經(jīng)在碼云上創(chuàng)建了一個遠程倉庫,在實際操作中我們要把遠程倉庫和本地的倉庫關聯(lián)起來,這樣的話,才能在本地倉庫中向遠程倉庫上傳或下載東西,怎么做呢?打開命令行,在本地倉庫的目錄中輸入:
$ git remote add origin git@gitee:zyq9613/gittest.git
解釋下,上面的代碼,git remote add是git關聯(lián)的命令,后面的git@gitee.com大家都知道了吧,對了,正是碼云,github對應的是git@github.com,在這里我們用的是開源中國的碼云舉例,再往后的zyq9613則是我在碼云的賬號,大家注意,這一步一定要換成自己的賬號,否則你本地關聯(lián)的就是我的遠程庫,關聯(lián)倒是不要緊,但是你以后是肯定推送不上去的,因為我的白名單中沒有你的SSH公鑰。OK,扯遠了,再往后面的gittest.git就是我們剛才創(chuàng)建的遠程倉庫。
OK,這樣我們就關聯(lián)上了遠程倉庫,怎么驗證是否成功關聯(lián)呢 ?打開命令行,輸入:
$ git remote -v
origin git@gitee.com:zyq9613/gittest.git (fetch)
origin git@gitee.com:zyq9613/gittest.git (push)
這個命令是查看關聯(lián)的遠程庫的信息的,到這里我們就成功的將本地倉庫和遠程倉庫關聯(lián)了,然后就可以快樂的協(xié)作開發(fā)了。
總結下:
全局配置
git config --global user.name "userName" //用戶名
git config --global user.email email //郵箱
創(chuàng)建項目
md dirName //創(chuàng)建文件夾
cd dirName //進入文件夾
git init //初始化git
git clone git地址 //從遠程倉庫復制項目到本地
提交代碼
git status 查看所有已修改但未提交的文件
git add . 將所有已變化的文件提交到暫存區(qū),等待提交,可通過git add path 單個提交文件 path是路徑
git commit -m "備注" 以add為索引將修改的代碼添加到 倉庫中
git pull --rebase origin master 將本地代碼與遠程倉庫代碼合并
git push -u origin master 上傳合并后的代碼(第一次上傳使用"-u"進行本地和遠程關聯(lián),以后不用)
完成
Windows可視化工具
https://www.sourcetreeapp.com/
git常用指令及錯誤處理方法
https://www.cnblogs.com/mantou811/p/6688517.html







