Git的使用

1、概述 - gitsvn區別

所需軟件私信我郵箱。css

VCSversion control system)版本控制系統。分爲兩種,分佈式版本控制系統(以git爲表明)和集中式版本控制系統(SVN爲表明)。
html

1.1  SVN工做流程

 

集中式代碼管理的核心是服務器,全部開發者在開始新一天的工做以前必須從服務器獲取代碼,而後開發,最後解決衝突,提交。全部的版本信息都放在服務器上。若是脫離了服務器,開發者基本上能夠說是沒法工做的。下面舉例說明:git

開始新一天的工做:github

1、從服務器下載項目組最新代碼。windows

2、進入本身的分支,進行工做,每隔一個小時向服務器本身的分支提交一次代碼(不少人都有這個習慣。由於有時候本身對代碼改來改去,最後又想還原到前一個小時的版本,或者看看前一個小時本身修改了哪些代碼,就須要這樣作了)。安全

3、下班時間快到了,把本身的分支合併到服務器主分支上,一天的工做完成,並反映給服務器。bash

這就是經典的svn工做流程,從流程上看,有很多缺點,但也有優勢。服務器

優勢:markdown

1、管理方便,邏輯明確,符合通常人思惟習慣。ssh

2、易於管理,集中式服務器更能保證安全性。

3、代碼一致性很是高。

4、適合開發人數很少的項目開發。

 

缺點:
1、服務器壓力大。

二、特別依賴服務器,脫離了服務器,沒法開展工做。


1.2  git工做流程

Git是一個開源的分佈式版本控制系統,能夠有效、高速地處理從很小到很是大的項目版本管理。

 

 

Git的功能特性:

從通常開發者的角度來看,git有如下功能:

1、從服務器上克隆完整的Git倉庫(包括代碼和版本信息)到單機上。

2、在本身的機器上根據不一樣的開發目的,建立分支,修改代碼。

3、在單機上本身建立的分支上提交代碼。

4、在單機上合併分支。

5、把服務器上最新版的代碼fetch下來,而後跟本身的主分支合併。

6、生成補丁(patch),把補丁發送給主開發者。

7、看主開發者的反饋,若是主開發者發現兩個通常開發者之間有衝突(他們之間能夠合做解決的衝突),就會要求他們先解決衝突,而後再由其中一我的提交。若是主開發者能夠本身解決,或者沒有衝突,就經過。

8、通常開發者之間解決衝突的方法,開發者之間可使用pull 命令解決衝突,解決完衝突以後再向主開發者提交補丁。

從主開發者的角度(假設主開發者不用開發代碼)看,git有如下功能:

1、查看郵件或者經過其它方式查看通常開發者的提交狀態。

2、打上補丁,解決衝突(能夠本身解決,也能夠要求開發者之間解決之後再從新提交,若是是開源項目,還要決定哪些補丁有用,哪些不用)。

3、向公共服務器提交結果,而後通知全部開發人員。

優勢:

l 適合分佈式開發,強調個體。

l 公共服務器壓力和數據量都不會太大。

l 速度快、靈活。

l 任意兩個開發者之間能夠很容易的解決衝突。

l 離線工做。

缺點:

l 資料少(起碼中文資料不多)。

l 學習週期相對而言比較長。

l 不符合常規思惟。

l 代碼保密性差,一旦開發者把整個庫克隆下來就能夠徹底公開全部代碼和版本信息。

 


2、git的使用

git不是github,git的遠端託管倉庫有githubgitlabgitee

 

2.1 git下載及安裝

下載地址:https://git-scm.com/download/

 

雙擊安裝,無腦下一步。

安裝完成。此時是安裝了三個東西,git GUIgit Bashgitk。在桌面上右鍵:

 


2.1.1 git GUI

用戶可視化界面。

 


2.1.2 git Bash

命令行工具。

 


2.1.3 gitk

分支可視化工具。可查看diff

 


2.1.4 Git bash命令講解

GIT bash裏面是純Linux命令。

pwd 查看當前所在目錄

cd 切換文件夾

mkdir aaa  建立文件夾

touch 1.js 建立文件

mv 1.js ./2.js  更名

rm -rf ./2.js 強制刪除

ls -all  列出當前目錄的文件

 


2.2 git全局配置

使用git以前必定要全局配置,告訴git你是誰。

git config --global user.name "huoqingchi"
git config --global user.email "123203557@qq.com"

此時,在C:\Users\Administrator(家目錄)文件夾下生成了一個.gitconfig隱藏文件,用來記錄你的用戶名和密碼。

 

若是你看不到這個文件,打開工具-文件夾選項-查看-顯示隱藏的文件、文件夾:

 


2.3 新建項目-git倉庫

新建文件git_project文件夾,執行

git init

此時文件夾中生成.git隱藏文件夾,這個文件夾千萬不能刪除,它是用來記錄版本信息的。

 


2.4 提交代碼

新建了index.html文件和index.css文件。

git add .
git commit -m "項目開荒"

git add . :添加當前文件夾下(包括裏面的子文件夾)全部的有變更的文件到「待提交區域」

git commit : 提交文件到git版本庫,真正的提交。

-m :註釋

此時查看gitk:

 


2.5 拉取代碼

若是手誤把你文件刪除了,可是保證沒把.git文件刪除,能夠把你最新提交的代碼拉取回來:

git checkout .

git checkout .:拉取全部的文件

git checkout 文件名字:拉取單個文件


2.6 版本回退

每次版本提交,會生成一個SHA id碼,用來區分每次的版本,能夠用這個碼來實現版本回退。

要回到哪次版本,在gitk中查看這次版本的SHA碼,複製下來。

 

git Bash中執行:

 

git reset --hard 08a96f3b0dc354aebc7ac471546681c433b050a40

此時gitk,發現後續版本都沒有了,我若是想去後續版本,找不到SHA

 

此時執行:

git reflog

此時會顯示出來版本提交的列表以及每次提交的ID,我們使用ID實現去後續版本。

 

執行:

git reset --hard 66a2cca

就能回到第五次版本。

 


3、Github

gitHub是一個面向開源及私有軟件項目的託管平臺,由於只支持git 做爲惟一的版本庫格式進行託管,故名gitHub。也有付費版的,供企業使用。

3.1 註冊

https://github.com/

註冊只須要郵箱,這裏不作演示。我直接登陸。

 


3.2 建庫

 


3.3 github聯通

如今git項目好了,github上庫也建好了,你託管git項目的時候github不知道你把你的項目託管到哪,因此我們須要一個SSH碼來讓github知道你是誰。

生成SSH碼:

ssh-keygen -t rsa -C "你註冊github的郵箱"

ssh-keygen:生成一個密匙;

-t rsa:密匙的類型是rsa;

-C:註釋

輸入命令後按三下回車。

 

而後生成的密匙保存在 c/Users/Administrator/.ssh/id_rsa.pub,複製密匙。

用編輯器打開(注意,不要使用windows自帶的記事本,由於windows自帶的記事本的換行符有bug)。

打開id_rsa.pub文件,複製裏面的全部內容

 

打開github中的setting:

 

此時測試一下你的電腦和遠端github庫有沒有聯通:

ssh -T git@github.com

能出現Hi 你的github的名字就說明聯通成功了。

 


3.4 託管git項目

3.4.1 託管項目以前先新建README.md文件

md文件是markdown文件的後綴,相似與html,README.md文件顯示在你項目的首頁,用來介紹整個項目。

touch README.md

添加圖片:

獲得圖片絕對地址能夠把須要的圖片上傳到github上面而後得到github分配給你的絕對地址:

 

以後在改變README.me文件:

![圖片alt](圖片地址 ''圖片title'')
![blockchain](https://ss0.bdstatic.com/0.jpg "區塊鏈")
圖片alt就是顯示在圖片下面的文字,至關於對圖片內容的解釋。
圖片title是圖片的標題,當鼠標移到圖片上時顯示的內容。title可加可不加

3.4.2 託管項目

git add .
git commit -m 「項目託管」
git remote add origin https://github.com/mufengsm/aiqianduan8.git//這個地址是你本身的倉庫地址
git push -u origin master


3.5 克隆庫

Github庫的地址:

 

git clone https://github.com/mufengsm/aiqianduan8.git

3.6 項目開發

項目的開發必定不能在主分支上,必定是在本身的分支上。主分支必定要是穩定的,是用來發布版本的。 

建立分支:

git branch huo1

 

切換分支:

git checkout huo1

 

刪除分支:

git branch -D huo2

 

在本身分支上修改後,上傳到遠端giuhub庫:

git add .
git commit -m 「huo的提交」
git push origin huo1

合併分支,把huo1合併到主分支

git merge huo //切換到另外一個分支進行跟huo合併

如何進入到這種狀態能夠取消此次合併,使用「git merge --abort」命令

 

若是合併時進入到這個頁面輸入冒號加wq   ":wq",  按回車鍵,意思就是就是忽略這個提示

 

解決合併時產生的衝突,好比我給兩個開發者在各自分支上開發的時候給同一個元素設置了不一樣的樣式就會報錯:

 

遇到衝突須要手動解決衝突,而後從新add/commit/push

 


4、可視化工具(Github Desktop

 


5、Visual Studio Code

 

編輯器可以自動感應.git文件夾。

能夠查看改變:

 

相關文章
相關標籤/搜索