Git和Github詳細入門教程(別再跟我說你不會Git和Github)

前言:成功不是未來纔有的,而是從決定去作的那一刻起,持續累積而成。你好,我是夢陽辰,快和我一塊兒搞定Git和Github吧。php

01.Git概述

1.Git是目前世界上最早進的css

分佈式
版本控制系統

解決的問題:
記錄了每次修改的:版本,內容,操做用戶,修改時間,文檔名等。html

2.Git和Github的區別
Git是一個分佈式版本控制系統,簡單的說就是一個軟件,用於記錄一個或若干文件內容變化,以便來查閱特定版本修訂狀況的軟件。git

Github是一個爲用戶提供Git服務的網站,簡單說就是一個能夠放代碼的地方(也能夠放其餘內容)。Github除了提供管理Git的web界面外,還提供了訂閱、關注、討論組】在線編輯器等豐富的功能。github

Git 並不像 SVN 那樣有個中心服務器。web

目前咱們使用到的 Git 命令都是在本地執行,若是你想經過 Git 分享你的代碼或者與其餘開發人員合做。 你就須要將數據放到一臺其餘開發人員可以鏈接的服務器上。本例使用了 Github 做爲遠程倉庫算法

02.Git的本地倉庫操做

1.工做流程
Git本地操做的三個區域:
在這裏插入圖片描述
工做流程:
在這裏插入圖片描述編程

暫存區:至關於購物車存放要購買的物品最後一塊兒付款。windows

2.本地倉庫操做
什麼是倉庫?
倉庫又叫作版本庫,英文名 repository,咱們能夠簡單的理解成是一個目錄,用於存放代碼,這個目錄裏面全部的文件均可以被Git管理起來,每一個文件的修改,刪除等操做Git均可以跟蹤到。

在安裝好後首次使用須要先進行全局配置:

1.點擊」Git Bash Here "以打開Git命令行窗口:

$ git config --global user.name "用戶名"
$ git config --global user.email "郵箱地址"
複製代碼

設置好用戶信息,當進行項目修改的時候就會記錄用戶名

2.建立本地倉庫
當咱們須要讓Git 去管理某個新項目/已存在的項目的時候,就須要建立倉庫。

建議使用空目錄學習Git,由於操做失誤產生沒必要要的錯誤。目錄名儘可能使用英文名。

3.建立目錄

$ mkdir  目錄名
複製代碼

也能夠直接在本地以新建的方式建立。
4.在命令行中進入項目目錄 pre_git

$ cd 目錄名
複製代碼

5.Git倉庫的初始化
即讓Git知道須要他來管理這個目錄

$ git init
複製代碼

執行後,打開這個項目目錄下,點擊隱藏目錄你會發現多了一個.git文件夾。不能刪除,也不能隨意更改。

到這裏就能夠在裏面進行開發。
6.Git經常使用指令操做
查看當前工做狀態:

$ git status
複製代碼

做用:當咱們忘記項目作到哪裏的時候,好比上個廁所回來,開個會回來等。可使用這個命令來判斷下一步要幹嗎。

7.能夠在項目目錄中,進行開發

8.將工做區文件添加到緩存區:

說明:git add 指令,能夠添加一個文件,也能夠同時添加多個文件。
語法一:$ git add 文件名
語法二:$ git add 文件名1 文件名2 文件名3 ......
語法三:$ git add .    【添加當前目錄到緩存區中】
複製代碼

9.提交至版本庫

$ git commit -m "註釋內容"
複製代碼

若是建立了新的文件,從add開始,重複上述操做便可。

若是修改了已提交的文件內容,再從add開始從新提交就行了。

這裏的提交等操做只是提交到Git本地倉庫。

Git的版本回退操做

版本回退分爲兩個步驟:
1.首先查看版本,肯定須要回到的時刻點
指令:

$ git log
$ git log --pretty=oneline
複製代碼

第二種指令:簡化了信息。
2.回退操做:
指令:

$ git reset --hard 提交編號
複製代碼

執行操做後,項目目錄中的文件會回到指定的時刻。

回到過去以後,這時我又想回到以前的最新的狀態怎麼辦?
首先:查詢以前的編號
指令:

$ git reflog
複製代碼

而後再執行

$ git reset --hard 提交編號
複製代碼

小結:
要想回到過去,先獲取commit id ,而後經過git reset --hard回到過去。

回到將來:須要使用 git reflog 進行歷史操做查詢,獲取最新的commit id。(編號)

能夠發如今寫回退指令的時候commit id 能夠不用寫全,git會自動識別。至少須要寫前4位。

03.遠程倉庫

線上倉庫的操做,以Github爲例。(目前爲Git倉庫提供遠程倉庫的網站有不少)

1.Github線上倉庫的建立

在這裏插入圖片描述
2.使用線上倉庫
添加遠程倉庫(這裏添加github)

注意:在git bash中輸入 cd /D 注意盤名字必定要是大寫。如不輸入這個語句 不給git bash定位的話,默認的本地文件位置是在c盤中。而後再cd到以遠程倉庫相同名字的文件夾中。

第一種方式:基於https協議:
倉庫就是目錄:
1.建立空目錄,名稱爲shop(任取)
2.複製https對應得地址。
而後在當前目錄新建shop目錄

$ mkdir shop
$ cd ./shop
複製代碼

3.使用clone指令克隆線上倉庫到本地。

$ git clone 線上倉庫地址
複製代碼

執行後,線上的倉庫就被clone下來了,若是clone下來的是一個空目錄,克隆下來的目錄只有隱藏的.git目錄。

4.在上述操做完成後,就能夠在本地倉庫作對應的操做

好比:(提交至暫存區,提交到本地倉庫,提交到線上倉庫(遠程倉庫),拉取線上倉庫
前面幾個操做跟上面的本地倉庫操做相同。

而後提交到線上倉庫:

若是是首次提交,首先應獲取權限:(不然會出現403的錯誤)
由於不是任何人均可以往線上倉庫提交內容。
獲取權限:
修改".git/config 文件內容:
在url這一項中:
在github.com前面加上:用戶名:密碼@
如:

url=https://用戶名:密碼@github.com/用戶名/倉庫名.git
複製代碼

其它不變。

指令:
提交到線上倉庫的指令

$ git push
複製代碼

提交成功以後,你會發現,線上倉庫中多你提交的內容。

注意:若是你提交成功下班後:同事也向該遠程倉庫提交了新的內容。次日上班時,你須要拉去線上的倉庫的最新版本

使用命令:

$ git pull 
複製代碼

所以在天天工做的第一件事就是git pull 拉取線上的最新版本,下班要作的就是 git push,將本地代碼提交到線上倉庫。

第二種方式:基於ssh協議(推薦使用)
該方式與前面https方式相比,只是影響github對於用戶的身份鑑定方式,對於git的具體操做沒有任何改變。

步驟:
1.生成客戶端公私鑰文件。
2.將公鑰上傳到Github。

實際操做:
1.建立公私鑰文件

你的本地 Git 倉庫和 GitHub 倉庫之間的傳輸是經過SSH加密的,因此咱們須要配置驗證信息:使用如下命令生成 SSH Key:

在這裏直接打開Git Bash:(也能夠在桌面單擊右鍵打開)

在這裏插入圖片描述

而後輸入命令:

ssh-keygen -t rsa -C "註冊郵箱"
複製代碼

若是你沒法生成密鑰(須先自行安裝OpenSSH)而後在執行以上命令。
網上的一些教程使用命令:

$ ssh-keygen -t rsa-C "your_email@youremail.com"
複製代碼

注意:其實your_email@youremail.com表示的就是註冊郵箱,即二者是相同的。

以後會要求確認路徑和輸入密碼,咱們這使用默認的一路回車就行。

2.找到id_rsa.pub文件。
成功的話會在 ~/ 下生成 .ssh 文件夾,進去,打開 id_rsa.pub,複製裏面的 key。
回到 github 上,進入 Account => Settings(帳戶配置)。
爲了驗證是否成功,輸入如下命令:

$ ssh -T git@github.com
複製代碼

結果:Hi xxxx! You’ve successfully authenticated, but GitHub does not provide shell access.

3.而後再本地新建目錄(用來保存線上的項目),而後進入目錄。

$ mkdir 目錄名稱
$ cd ./目錄名稱/
複製代碼

而後克隆目錄到新建的目錄中:

$ git clone ssh地址
複製代碼

線上的倉庫ssh和https地址能夠在clone和download中查看
4.後續操做跟https方式同樣。

相比於https,這種方式一旦配置好後,之後的項目就不須要一個個去配置用戶名和密碼了,能夠說一勞永益。因此推薦使用這種方式

05.Git的分支操做

什麼是分支 ?
即項目的分支(不一樣的功能):
全部的分支組成一個項目。
在這裏插入圖片描述
在版本回退的內容中,每次提交都會有記錄,Git把他們串成時間線,造成相似於時間軸的東西,這個時間軸就是一個分支,咱們稱之爲master分支。

在開發的時候每每是團隊協做,多人進行開發,所以光有一個分支是沒法知足多人同時開發的需求的,而且在分支上工做並不會影響其餘分支的正常使用,會更加安全,Git鼓勵開發者使用分支去完成一些開發任務。

分支的相關指令:

查看分支:git branch
建立分支:git branch 分支名
切換分支:git checkout 分支名
刪除分支:git branch -d 分支名
合併分支:git merge 被合併的分支
複製代碼

注意:可使用"git checkout -b 分支名" 指令來切換分支,-b選項表示建立並切換,至關因而兩個操做指令。

含"*"表示當前分支。

能夠看出咱們都是對分支進行操做。

刪除分支以前,須要退出該分支,既不能在使用中刪除。

06.衝突的產生與解決

案例:模擬衝突
1.我下班以後,同事對線上項目內容進行了修改,此時本地倉庫的內容與線上倉庫內容不一致,次日我忘記作git pull操做,而是直接對本地文件進行修改。
當進行提交時,會報錯。
2.解決衝突
先進行指令"git pull"操做。

3.打開衝突文件,解決衝突。
和提交內容的用戶商量保存哪些內容。刪除哪些內容。

而後從新提交後,在進行push操做便可。

這裏能夠看到上班前進行 git pull 的重要性。

07.Git實用功能

1.圖形管理工具

Github for Desktop
對於常用Github的開發人員來講是很是便捷的工具。

Source tree
老牌的Git GUI管理工具,適合初學者。

TortoiseGit
對於熟悉SVN的開發人員來講,很是友善。其前輩TortoiseSVN。

自帶的Git GUI管理工具。

08.忽略文件

項目中存在萬年不變的目錄,例如css,js,images等,或者還有些目錄即使有改動,咱們也不想讓其提交到遠程的文檔,此時咱們可使用"忽略文件」機制來實現需求。

忽略文件須要新建一個名爲 .gitignore的文件,該文件用於聲明忽略文件或不忽略文件的規則,規則對當前目錄及其子目錄生效。

注意:該文件由於沒有文件名,沒辦法在windows目錄下直接建立,能夠經過命令行Git Bash來建立。

常見的規則以下:
1.過濾整個文件夾      /mtk/
2.過濾全部.zip文件    *.zip
3.過濾某個具體文件    /mtk/do.c
4.不過濾具體某個文件  lindex.php
複製代碼

新建.gitignore的文件
指令:

$ touch .gitignore
複製代碼

配置文件.gitignore:
如:
1.忽略/js目錄
/js/

09.Github的基本概念

做用:藉助github託管項目代碼。
1.倉庫(Repository)
倉庫即你的項目,你想在Github上開源一個項目,那就必需要新建一個Repository,若是開源的項目多了,你就擁有多個Repositories。

2.收藏(star)
意爲收藏項目的人數。方便下次查看。

3.複製克隆項目(Fork)
瀏覽他人項目時,點擊fork,會在本身的帳號裏新建一個相同的倉庫,該倉庫是獨立存在的,可是會顯示 forked from 誰的倉庫。
在這裏插入圖片描述
4.發起請求(Pull Request)
這是基於Fork的,李四在本身克隆的項目裏進行改進完成後,想要將本身改進的項目合併到原來的項目中,因而他就發送了一個Pull Request,給原項目的建立人。假如你是這個項目的建立人,你就能夠收到這個請求,這時候你會仔細review他的代碼,若是以爲不錯,就能夠接受他的請求,這時候他作的改進,在你的項目裏就有了。
在這裏插入圖片描述
步驟:
1.fork項目
2.修改fork的項目
3.新建pull request
4.等待項目新建者合併項目
5.關注(Watch)
若是你關注了某個項目,那麼之後只要這個項目有任何的更新,都會接收到通知。

6.事務卡片(Issue)
就是你開源了一個項目,別人再查看你的項目時發現了Bug,或則有些地方作的很差,他就能夠給你提個Issue,即問題,而後你看到了這些問題就能夠去完善,完善好了就能夠將其一個個的Close掉。
即發現代碼Bug,可是目前沒有成型的代碼,須要討論時使用。
如:別人給Itcastphpgit2提交一個issue
在這裏插入圖片描述

主頁概念:
1.Github主頁
顯示用戶動態以及關注用戶或關注倉庫的動態。
在這裏插入圖片描述

2.倉庫主頁
項目信息
在這裏插入圖片描述

3.我的主頁
我的信息

官方網址:Github.com

新建Github帳戶:
**加粗樣式**
在這裏插入圖片描述
注意:github服務器在國外,因此訪問較慢或者沒法訪問。

根據操做驗證郵箱,建立遠程倉庫。

遠程倉庫的操做:

1.新建文件
在這裏插入圖片描述
2.編輯文件
在這裏插入圖片描述

點擊文件名,而後點擊「小筆"圖案。

3.上傳文件
點擊上傳文件,而後加描述。(Upload files)

4.搜索倉庫文件
點擊搜索(Find file)

5.下載項目
點擊Clone or download

10.github Pages搭建網站

我的站點
訪問:
https://用戶名.github.io

搭建步驟
1.建立我的站點–>新建倉庫(注:倉庫名必須是【用戶名.github.io】

2.在倉庫下新建index.html的文件便可。

注意:github pages 僅支持靜態網頁
2.倉庫裏只能是.html文件。

但願能和你一塊兒成長​,一同進步,成爲更好的本身,我是夢陽辰,一位在校小白!但願能成爲你身邊的朋友。關注公衆號【輕鬆玩編程】回覆關鍵字「電子書」,「計算機資源」,「Java從入門到進階」,」JavaScript教程「,「算法」,「Python學習資源」,「人工智能」等便可獲取學習資源。公衆號能夠最早獲取相關內容哦!在這裏插入圖片描述

相關文章
相關標籤/搜索