GIT簡(jiǎn)介
1.GTI簡(jiǎn)介
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(沒(méi)有之一)
-
Git官網(wǎng):http://www.git-scm.com
- 把E:\Git\bin加入到環(huán)境變量里面就可以在命令行下使用了
- Git Bash打開(kāi)之后可以模擬Linux命令(中文支持有點(diǎn)勉強(qiáng))
-
集中式和分布式
集中式:
先說(shuō)集中式版本控制系統(tǒng),版本庫(kù)是集中存放在中央服務(wù)器的,而干活的時(shí)候,用的都是自己的電腦,所以要先從中央服務(wù)器取得最新的版本,然后開(kāi)始干活,干完活了,再把自己的活推送給中央服務(wù)器。中央服務(wù)器就好比是一個(gè)圖書(shū)館,你要改一本書(shū),必須先從圖書(shū)館借出來(lái),然后回到家自己改,改完了,再放回圖書(shū)館。
-
集中式版本控制系統(tǒng)最大的毛病就是必須聯(lián)網(wǎng)才能工作,如果在局域網(wǎng)內(nèi)還好,帶寬夠大,速度夠快,可如果在互聯(lián)網(wǎng)上,遇到網(wǎng)速慢的話,可能提交一個(gè)10M的文件就需要5分鐘,這還不得把人給憋死啊。
分布式:
那分布式版本控制系統(tǒng)與集中式版本控制系統(tǒng)有何不同呢?首先,分布式版本控制系統(tǒng)根本沒(méi)有“中央服務(wù)器”,每個(gè)人的電腦上都是一個(gè)完整的版本庫(kù),這樣,你工作的時(shí)候,就不需要聯(lián)網(wǎng)了,因?yàn)榘姹編?kù)就在你自己的電腦上。既然每個(gè)人電腦上都有一個(gè)完整的版本庫(kù),那多個(gè)人如何協(xié)作呢?比方說(shuō)你在自己電腦上改了文件A,你的同事也在他的電腦上改了文件A,這時(shí),你們倆之間只需把各自的修改推送給對(duì)方,就可以互相看到對(duì)方的修改了。
和集中式版本控制系統(tǒng)相比,分布式版本控制系統(tǒng)的安全性要高很多,因?yàn)槊總€(gè)人電腦里都有完整的版本庫(kù),某一個(gè)人的電腦壞掉了不要緊,隨便從其他人那里復(fù)制一個(gè)就可以了。而集中式版本控制系統(tǒng)的中央服務(wù)器要是出了問(wèn)題,所有人都沒(méi)法干活了
在實(shí)際使用分布式版本控制系統(tǒng)的時(shí)候,其實(shí)很少在兩人之間的電腦上推送版本庫(kù)的修改,因?yàn)榭赡苣銈儌z不在一個(gè)局域網(wǎng)內(nèi),兩臺(tái)電腦互相訪問(wèn)不了,也可能今天你的同事病了,他的電腦壓根沒(méi)有開(kāi)機(jī)。因此,分布式版本控制系統(tǒng)通常也有一臺(tái)充當(dāng)“中央服務(wù)器”的電腦,但這個(gè)服務(wù)器的作用僅僅是用來(lái)方便“交換”大家的修改,沒(méi)有它大家也一樣干活,只是交換修改不方便而已。
弱化了服務(wù)器的功能,加強(qiáng)了個(gè)人的功能。
2、安裝GIT
- 去官網(wǎng)下載安裝
-
安裝完成后,在開(kāi)始菜單里找到“Git”->“Git Bash”,蹦出一個(gè)類似命令行窗口的東西,就說(shuō)明Git安裝成功!
- 然后進(jìn)行下面的配置,就能在每次提交的時(shí)候跳過(guò)輸入用戶名和郵箱了
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
3、創(chuàng)建版本庫(kù)
- 什么是版本庫(kù):
- 什么是版本庫(kù)呢?版本庫(kù)又名倉(cāng)庫(kù),英文名repository,你可以簡(jiǎn)單理解成一個(gè)目錄,這個(gè)目錄里面的所有文件都可以被Git管理起來(lái),每個(gè)文件的修改、刪除,Git都能跟蹤,以便任何時(shí)刻都可以追蹤歷史,或者在將來(lái)某個(gè)時(shí)刻可以“還原”。
- 創(chuàng)建一個(gè)版本庫(kù)非常簡(jiǎn)單、首先,選擇一個(gè)合適的地方,創(chuàng)建一個(gè)空的目錄:
- 首先確定不要有中文
-
$ git init輸入以上命令,把這個(gè)目錄變成Git可以管理的倉(cāng)庫(kù) Initialized empty Git repository in D:/.git/- 細(xì)心的讀者可以發(fā)現(xiàn)當(dāng)前目錄下多了一個(gè).git的目錄,這個(gè)目錄是Git來(lái)跟蹤管理版本庫(kù)的,沒(méi)事千萬(wàn)不要手動(dòng)修改這個(gè)目錄里面的文件,不然改亂了,就把Git倉(cāng)庫(kù)給破壞了。
- 把文件夾添加到版本庫(kù)
- 第一步 :用命令
git add告訴Git,把文件添加到倉(cāng)庫(kù)
- 第一步 :用命令
首先 touch readme.txt (創(chuàng)建readme文件)
git add readme.txt
- 第二步,用命令
git commit告訴Git,把文件提交到倉(cāng)庫(kù)
- 第二步,用命令
git commit -m "wrote a readme file"
4、基本操作
基本操作
- git status 命令可以讓我們時(shí)刻掌握倉(cāng)庫(kù)的當(dāng)前狀態(tài)
$ git status
On branch master //當(dāng)前的分支
nothing to commit, working directory clean
- git diff 顧名思義就是查看difference,顯示的格式正式Unix通用的diff格式,可顯示修改文件的內(nèi)容
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 80694b3..610db72 100644
--- a/readme.txt
+++ b/readme.txt
@@ -6,4 +6,4 @@ asdfsdafsdfsdf
adfasdfsd
adfdsaf
-asfasdfas
\ No newline at end of file
+asfasdfas123
- git log 命令顯示從最近到最遠(yuǎn)的提交日志
$ git log
commit 0f32004c37a6b8b49430f6d22a333470738de94b
Author: wuyinlei <1069584784@qq.com>
Date: Sat Apr 2 10:12:23 2016 +0800
第二次提交
commit 8bcb79e2f0c08c58c9cc37e7bfa11909fd0da1c7
Author: wuyinlei <1069584784@qq.com>
Date: Sat Apr 2 10:10:36 2016 +0800
第一次提交
- git log --pretty=oneline 顯示為一行
$ git log --pretty=oneline
0f32004c37a6b8b49430f6d22a333470738de94b 第二次提交
8bcb79e2f0c08c58c9cc37e7bfa11909fd0da1c7 第一次提交
- git reset --hard HEAD^ 加退到上一個(gè)版本,上上一個(gè)版本是HEAD^^,在多的話就寫(xiě)成HEAD-100
$ git reset --hard HEAD^
HEAD is now at 8bcb79e 第一次提交
**這個(gè)時(shí)候在次查看就可以看到已經(jīng)回退了**
$ git log --pretty=oneline
8bcb79e2f0c08c58c9cc37e7bfa11909fd0da1c7 第一次提交
- git reflog 查看命令歷史,以便于確定要回到未來(lái)的哪個(gè)版本
$ git reflog
0f32004 HEAD@{0}: commit: 第二次提交
8bcb79e HEAD@{1}: commit (initial): 第一次提交
- git reset --hard commit_id 在版本的歷史之間穿梭
- git checkout --readme.txt意思就是:讓這個(gè)文件回到最近一次git commit 或者git add 時(shí)的狀態(tài)
- git rm test.txt 從版本庫(kù)中刪除改文件,并且git commit
- git checkout --test.txt 把誤刪的文件恢復(fù)到最新版本
分支管理
- 創(chuàng)建dev分支,然后切換到dev分支(dev是名字,可以隨便取):
git branch dev
git checkout dev
或者
git checkout -b dev //-b參數(shù)表示創(chuàng)建并切換
//以下的就是查看創(chuàng)建的分支
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (master)
$ git checkout -b dev
Switched to a new branch 'dev'
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ git checkout dev
Already on 'dev'
- git branch命令查看當(dāng)前分支
$ git branch
* dev
master
//現(xiàn)在可以在dev分支上修改或者提交內(nèi)容了,當(dāng)切換回master分支后是無(wú)法查看dev分支修改的內(nèi)容的
git checkout master
$ git checkout dev
Switched to branch 'dev'
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ echo "dev modefi">>readme.txt
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ cat readme.txt
dev modefi
- 當(dāng)我們執(zhí)行以下的語(yǔ)句的時(shí)候,可以看到我們?cè)赿ev分支上提交,但是如果沒(méi)有提交到master上,在master上是沒(méi)有數(shù)據(jù)的,跟master沒(méi)有關(guān)系
$ git add readme.txt
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ git commit -m "branch dev"
[dev warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
16fd01f] branch dev
warning: LF will be replaced by CRLF in readme.txt.
The file will have its original line endings in your working directory.
1 file changed, 1 insertion(+)
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ cat readme.txt
dev modefi
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (dev)
$ git checkout master
Switched to branch 'master'
若蘭@DESKTOP-HNR0QUU MINGW64 /d/wuyinlei (master)
$ cat readme.txt
- 把dev分支的工作成果合并到master分支上:
git merge dev
$ git merge dev
Updating 8bcb79e..16fd01f
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
//這個(gè)時(shí)候在查看,就已經(jīng)合并了
$ cat readme.txt
dev modefi
- 刪除分支:
git branch -d dev
$ git branch -d dev
Deleted branch dev (was 16fd01f).
//在查看,就只有master一個(gè)主分支了
$ git branch
* master
5、GIT與GitHub
- 作為開(kāi)源代碼庫(kù)以及版本控制系統(tǒng),GitHub擁有150多萬(wàn)開(kāi)發(fā)者用戶,隨著越來(lái)越多的應(yīng)用程序轉(zhuǎn)移到了云上,GitHub已經(jīng)成為了管理軟件開(kāi)發(fā)以及發(fā)現(xiàn)已有代碼的首選方法。
搭建遠(yuǎn)程版本庫(kù)
- 第一步:https://github.com/ 進(jìn)入注冊(cè)自己的賬號(hào)
-
第二步:創(chuàng)建版本庫(kù)
-
第三步:查看建立好的版本庫(kù)
- 生成秘鑰
ssh-keygen -t rsa -C"email.com"

查看秘鑰:

把出來(lái)的秘鑰復(fù)制到github上:
把生成的秘鑰:添加到github上


- 在.ssh\目錄下創(chuàng)建一個(gè)config文件,內(nèi)容如下:
Host github.com
User git
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile~/.ssh/id_rsa
Port 443
測(cè)試通過(guò)
ssh -t git@github.com
或者
ssh -T git@github.com
以上的我沒(méi)有測(cè)試通過(guò),,,,
下面來(lái)看下我自己的push推送吧

我們復(fù)制好這里面的地址,然后用GitBash切換到你的項(xiàng)目根目錄下
輸入以下的命令
$ git clone https://github.com/wuyinlei/loadermanager.git
這個(gè)時(shí)候,就會(huì)在這個(gè)目錄下創(chuàng)建本地版本庫(kù)
這個(gè)時(shí)候我們自己進(jìn)入到這個(gè)目錄的根目錄下:

然后我們進(jìn)入這個(gè)目錄下,把里面的文件剪切出來(lái)放到項(xiàng)目根目錄下,這個(gè)時(shí)候刪除那個(gè)空的文件夾

這個(gè)時(shí)候在Git Bash上,還是切換到項(xiàng)目的根目錄下,輸入以下的命令:
$ git add . (.代表著同步全部)
$ git commit -m "一個(gè)簡(jiǎn)單的介紹loader加載器" (""這里面添加注釋)
$ git push origin master 提交到遠(yuǎn)程版本庫(kù)
這個(gè)時(shí)候要輸入用戶名和密碼,輸入自己的用戶名和密碼,接著enter按鍵。
這個(gè)時(shí)候我們?cè)诖嗡⑿戮W(wǎng)頁(yè),可以看到我們的代碼已經(jīng)同步到了github上面:

至此,這個(gè)時(shí)候我們已經(jīng)完成了本地和遠(yuǎn)程庫(kù)的同步。
參考文檔:廖雪峰的Git教程:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000




