玩轉 Git 與 GitHub

  GitHub地址:https://github.com/leebingbin/html

 

1、Git 是什麼

    Git是一款免費、開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。Git是一個開源的分佈式版本控制系統,用以有效、高速的處理從很小到很是大的項目版本管理。Git 是 Linus Torvalds 爲了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。git

    Git是目前世界上最早進的分佈式版本控制系統。github

2、Git 能幹什麼

    乍一看,傳統的SVN好像也能知足!那 Git 和 SVN 又有何區別呢?windows

3、怎麼下載、安裝和配置

    一、官網及下載地址: https://git-scm.com/downloads

   

    二、安裝與配置

    2.1 Windows 版本安裝與配置

    Tips:bash

在「Configuring the line ending conversions」選項中,
第一個選項:若是是跨平臺項目,在windows系統安裝,選擇;
第二個選項:若是是跨平臺項目,在Unix系統安裝,選擇;
第三個選項:非跨平臺項目,選擇。

    安裝完成後,還須要最後一步設置,在命令行輸入以下:服務器

    Git是分佈式版本控制系統,因此須要填寫用戶名和郵箱做爲一個標識。markdown

    操做系統的用戶路徑下的.gitconfig文件裏面能夠看到,剛纔設置的用戶名和郵箱。ssh

 

    2.2 Linux / Unix 版本安裝與配置

下載適用於Linux和Unix
使用Linux發行版的包管理,在Linux上安裝Git是最簡單的。
若是你喜歡從源代碼構建,你能夠在kernel.org上找到tarball 。

Debian / Ubuntu
  
# apt-get install git
對於Ubuntu,這個PPA提供了最新的穩定的上游Git版本

# add-apt-repository ppa:git-core/ppa 
# apt update; apt install git

Fedora
# yum install git(直到Fedora 21)
# dnf install git(Fedora 22及更高版本)

Gentoo
# emerge --ask --verbose dev-vcs/git

Arch Linux
# pacman -S git

openSUSE
# zypper install git

Mageia
# urpmi git

Nix/NixOS
# nix-env -i git

FreeBSD
# pkg install git

Solaris 9/10/11(OpenCSW)
# pkgutil -i git

Solaris 11 Express
# pkg install developer/versioning/git

OpenBSD系統
# pkg_add git

Alpine
$ apk add git
紅帽企業Linux,Oracle Linux,CentOS,Scientific Linux等。
RHEL和衍生產品一般會運送舊版本的git。能夠下載一個tarball並從源代碼構建,
或者使用第三方存儲庫(如IUS社區項目)來獲取更新版本的git。

Slitaz
$ tazpkg get-install git

    Tips: dnf命令分佈式

    DNF是新一代的rpm軟件包管理器。他首先出如今 Fedora 18 這個發行版中。而最近,它取代了yum,正式成爲 Fedora 22 的包管理器。測試

    DNF包管理器克服了YUM包管理器的一些瓶頸,提高了包括用戶體驗,內存佔用,依賴分析,運行速度等多方面的內容。DNF使用 RPM, libsolv 和 hawkey 庫進行包管理操做。儘管它沒有預裝在 CentOS 和 RHEL 7 中,但你能夠在使用 YUM 的同時使用 DNF 。 DNF 的最新穩定發行版版本號是 1.0,發行日期是2015年5月11日。 這一版本的  DNF 包管理器(包括在他以前的全部版本) 都大部分採用 Python 編寫,發行許可爲GPL v2.

 

    三、Git 經常使用操做

    咱們把文件往Git版本庫裏添加的時候,是分兩步執行的:
    第一步是用「git add」把文件歸入Git管理,實際是把本地文件修改添加到暫存區;
    第二步是用「git commit」提交更改,實際上就是把暫存區的全部內容提交到當前分支 。

    由於咱們建立Git版本庫時,Git自動爲咱們建立了惟一一個master分支,因此commit就是往master分支上提交更改。能夠簡單理解爲,須要提交的文件修改統統放到暫存區,而後,一次性提交暫存區的全部修改。一旦提交完後,若是你又沒有對工做區作任何修改,那麼工做區就是「乾淨」的。即:nothing to commit (working directory clean)。

 * 用「git diff HEAD -- filename」命令能夠查看工做區和暫存區裏面最新版本的區別

 * 新建過撤銷未add: git checkout  -- 文件名

 * 撤銷已add未commit:先git  reset HEAD  文件名 再 git checkout -- 文件名

 * 撤銷已add已commit:       git reset –hard HEAD^


    Tips:Git 經常使用命令

1	新建一個倉庫,而且該倉庫應該是git類型
	1.1	git init新建git類型的倉庫

2	新建文件並放入git倉庫
	2.1	touch a.txt   touch a.txt或者vi
	2.2	git add 將新建的a.txt歸入git管理
	2.3	git status,查看文件在git倉庫中的狀態
	2.4	git commit -m "提交修改的信息說明",完成了首次提交
	2.5	新增文件內容,再次嘗試提交。

3	git的日誌和跟蹤管理
	3.1	git log,查看每次操做的日誌狀況。
		git log --pretty=oneline能夠一行顯示,查看關鍵信息
	3.2	git diff,查看內容不一樣。

4	git版本的回退
	4.1	退一步,git reset --hard HEAD^,指針回退一步;
	4.2	退多步V1,git reset --hard HEAD^^^^^^^^^^,多個箭號
	4.3	退多步V2,git reset --hard HEAD~數字步數
	4.4	穿梭穿越,git reflog得到頭7位版本號,而後
			git reset --hard 7位版本號

5	git三區(見上圖)

6	git分支
	6.1	git branch 查看分支
	6.2	git branch 分支名字  做用是新建分支
	6.3	git checkout 分支名  做用是切換分支
	6.4	git merge 目的分支   做用是將目的分之的內容合併進當前分支
	6.5	git branch -d 分支名	做用是刪除分支
	6.6	git checkout -b 分支名	做用是新建+切換一步搞定

7	第一種衝突
	分支合併後的衝突,如何解決見VCR。
	
	第二種衝突
	git本地命令和github的交互衝突,
	push提交後的內容衝突,請先pull到本地人工干預收工合併後再push

	第三種衝突TortoiseGit和TortoiseSVN是一樣的操做解決
	TortoiseGit--黃色三角感嘆號---edit conflict---merge---resolve--commit--->OK

	第四種衝突,Egit處理
	有衝突了先pull,具體見Vcr


8	TortoiseGit 
    能夠圖形化操做的Git 
		

9	EGit

[branch "master"]
    remote = origin
    merge = refs/heads/master

[remote "origin"]
    url = git@github.com:zzyybs/換成你本身的工程.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    push = refs/heads/master:refs/heads/master

 

4、Github簡介

    GitHub是一個Git項目託管網站,主要提供基於git的版本託管服務。 GitHub是一個基於Git的代碼託管平臺, Git 並不像 SVN 那樣有個中心服務器。目前咱們使用到的 Git 命令都是在本地執行,若是你想經過 Git 分享你的代碼或者與其餘開發人員合做。 你就須要將數據放到一臺其餘開發人員可以鏈接的服務器上。 

    GitHub 官方網址:https://github.com

    一、註冊+檢查.ssh祕鑰

    因爲你的本地Git倉庫和GitHub倉庫之間的傳輸是經過SSH加密的,因此咱們須要配置驗證信息(No such file or directory表示第一次)

    未配置以下:

    已配置以下:

    二、建立SSH Key

ssh-keygen -t rsa -C "libingbin2015@aliyun.com"


    後面的郵箱即爲 github 註冊郵箱,以後會要求確認路徑和輸入密碼,一路回車就行。成功的話會在~/下生成.ssh文件夾,進去,打開id_rsa.pub,複製裏面的key。

 

 

    三、驗證 SSH Keys 是否添加成功

ssh -T git@github.com

5、GitHub 與 Git 協同辦公 

    一、基本概念


    1.1 必須瞭解的概念


    (1)倉庫 - Repository
    倉庫即你的項目,你想在GitHub上開源一個項目,那就必需要新建一個Repository。若是你開源的項目有多個,那麼你就有多個Repositories。
    (2)收藏 - Star
    收藏項目,方便下次查看。若是你的項目被收藏的次數越多,那麼你的項目也就越受廣大開發者的歡迎咯。
    (3)複製克隆項目 - Fork
    若是你開源了一個項目,別人想在你這個項目的基礎之上作些改進,而後應用到本身的項目中,這時他就能夠Fork你的項目,而後他的GitHub主頁上就多了一個項目,只不過這個項目是基於你的項目爲基礎(至關於別人拿到了一個副本)。Fork以後,他就能夠爲所欲爲地去改進,可是絲絕不會影響原有項目的代碼與結構。
    (4)發起請求 - Pull Request
    若是別人在你的項目基礎之上作了一些改進,而且以爲改得很不錯,應該要把這些改進讓更多的人受益。因而,他就想把本身的改進合併進原有項目之中,這時他就能夠發起一個Pull Request。而原有項目建立人也就是你,能夠收到這個請求,這個時候你可能會仔細review他的代碼,而且測試後以爲OK,就能夠接受他的Pull Request,以後他作的改進就能夠融入到原有項目之中了。
    (5)關注 - Watch
    相似於微博中的關注,若是你Watch了某個項目,那麼之後只要這個項目有任何更新,你都會第一時間收到關於這個項目的通知提醒。
    (6)事務卡片 - Issue
    你開源了一個項目,別人發現你的項目中有bug,或者哪些地方作的不夠好,他就能夠給你提一個Issue(即問題)。你若是看到了這些Issue,就能夠逐個去Fix修復,修復OK以後就能夠一個一個地Close掉。
    (7)GitHub主頁
    若是你註冊了一個GitHub帳號,那麼久會有一個屬於你的GitHub主頁,該頁面左側主要顯示用戶動態以及關注用戶/倉庫的動態,右側則顯示全部的Git庫。
    (8)倉庫主頁
    倉庫主頁主要顯示項目的信息,如:項目代碼、版本、收藏/關注/Fork狀況 等等。
    (9)我的主頁
    我的信息:頭像、我的簡介、關注個人人,我關注的人,我關注的Git庫,個人開源項目,我貢獻的開源項目信息 等等。

    1.2 必須完成的準備
    要使用GitHub,首先必須得註冊一個GitHub帳號啦!註冊過程很簡單,就跟你平時註冊小網站會員同樣,詳細信息能夠瀏覽:點此瞭解註冊詳情(https://github.com/join
    須要注意的地方就是,選擇Free免費帳號完成設置!那麼收費的跟免費的有什麼區別呢?私有的倉庫只有本身或者指定的朋友纔有權限操做。


 

    註冊完成以後,記住要驗證郵箱!若是未驗證郵箱,那麼你是無法作後續操做的。

 

    二、GitHub基本操做

 

  2.1 建立倉庫


  在GitHub中點擊New repository活着Start a Project便可:

 

    Step1.填寫必要信息:

  Step2.瀏覽倉庫主頁 (所需的功能,點擊對應的按鍵操做便可)

    三、與 Git 協同辦公

    3.1 本地 到 github 遠程庫

    情景描述:如今的情景是,我在本地建立了一個OA項目後,我又想在GitHub建立一個OA項目,而且讓這兩個倉庫進行遠程同步

     先在本地新建好一個git項目,到Github上新建一個同名的空項目
     本地和github上的倉庫進行關聯

     git remote add origin https://github.com/leebingbin/oa.git

     把本地庫的內容推送到遠程git push命令,其實是把當前分支master推送到遠程

git push -u origin master

    因爲遠程庫是空的,咱們第一次推送master分支時,加上了-u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在之後的推送或者拉取時就能夠簡化命令。

    3.2 github遠程庫 到 本地

    情景描述:如今的情景是,咱們從零開發,那麼最好的方式是先建立遠程庫,而後從遠程庫克隆

    登錄GitHub,建立一個新的倉庫,名字叫OA2 ;遠程庫OK,下一步是用命令git clone克隆一個本地庫
 

Git clone git@github.com:leebingbin/oa2.git

 

    3.3 Git交互模型-上

    情景描述:如今的情景是,本地或者遠程均有修改,如何同步共享,提交修改
    本地修改,同步給遠程; 遠程修改,同步到本地,便可。

 
    3.4 Git交互模型-下

    通常工做流程以下:

1 克隆 Git 資源做爲工做目錄。

2 在克隆的資源上添加或修改文件。

3 若是其餘人修改了,你能夠更新資源。

4 在提交前查看修改。

5 提交修改。

6 在修改完成後,若是發現錯誤,能夠撤回提交併再次修改並提交。

        

3.5 Fork

    情景描述:如今的情景是,用叉子把別人的東西(copy no cut)叉到你碗裏。
    其實,就是把別人的項目clone一份,可是owner變成本身,這樣你就能夠在遵照Open source license的前提下任意修改這個項目了。 至關於你在原項目的主分支上又創建了一個分支,你能夠在該分支上任意修改,若是想將你的修改合併到原項目中時,能夠pull request,這樣原項目的做者就能夠將你修改的東西合併到原項目的主分支上去,這樣你就爲開源項目貢獻了代碼,開源項目就會在你們共同的努力下不斷壯大和完善。
 

3.6 解決Git push時重複輸入用戶名密碼

    C:\Users\admin目錄下新建名字爲_netrc的文件並編輯該文件寫以下內容:
 

machine github.com
login 你的用戶名 
password 你的密碼

 

3.7 Git 經常使用命令小總結

   mkdir:         XX (建立一個空目錄 XX指目錄名)

   pwd:          顯示當前目錄的路徑。

   git init          把當前的目錄變成能夠管理的git倉庫,生成隱藏.git文件。

   touch           xx文件或者新建文件

   git add XX       把xx文件添加到暫存區去。

   git commit –m 「XX」  提交文件 –m 後面的是註釋。

   git status        查看倉庫狀態

   git diff  XX      查看XX文件修改了那些內容

   git log          查看歷史記錄

   git reset  --hard HEAD^

   cat XX         查看XX文件內容

   git reflog       查看歷史記錄的版本號id

   git checkout -- XX  把XX文件在工做區的修改所有撤銷。

   git rm XX          刪除XX文件

   git remote add origin https://github.com/zzyybs/testgit 關聯一個遠程庫

   git push –u(第一次要用-u 之後不須要) origin master 把當前master分支推送到遠程庫

   git clone https://github.com/arjrzhouyang/testgit  從遠程庫中克隆

   git checkout –b dev  建立dev分支 並切換到dev分支上

   git branch  查看當前全部的分支

   git checkout master 切換回master分支

   git merge dev    在當前的分支上合併dev分支

   git branch –d dev 刪除dev分支

   git branch name  建立分支

   git remote 查看遠程庫的信息

   git remote –v 查看遠程庫的詳細信息

   git push origin master  Git會把master分支推送到遠程庫對應的遠程分支上 

 

6、GitHub Pages搭建網站

    一、 我的站點


  GitHub要求我的站點的倉庫名稱必須是 用戶名.github.io, 例如 leebingbin.github.io

    創建方法很簡單,也是新建一個repository,而後填寫你的我的站點名,例如 edisonchou.github.io。以後經過Git,你能夠將你在本地開發的html網頁同步到github,以後你就能夠經過域名訪問你的我的站點啦!

 

    二、 項目站點


     搭建後的訪問域名爲:https://用戶名.github.io/倉庫名

  
   (1)進入項目主頁,點擊Settings

  (2)在Settings頁面,點擊Launch automatic page generator來自動生成主題頁面

  (3)新建站點基礎信息設置

  (4)選擇主題

  (5)生成網頁

 

本文爲博主原創文章,轉載請註明出處!

https://my.oschina.net/u/3375733/blog/

相關文章
相關標籤/搜索