git干獲,從安裝到上傳項目(詳細)


最近沒有很忙,就給大家總結一下有關git的一些相關知識吧!讀完下面的內容你就基本掌握了git

在這之前先為大家普及一些相關知識(ps文章有點長,重點 在后面git的操作演示部分):

1. 版本控制工具

1.1. 什么是版本控制系統?

版本控制系統(Version Control System):是一種記錄一個或若干文件內容變化,以便將來查閱特定版本修訂情況的系統。版本控制系統不僅可以應用於軟件源代碼的文本文件,而且可以對任何類型的文件進行版本控制。

常見的版本控制系統有:svn、cvs、git

1.2. 為什么要有版本控制系統?

  1. 在開發過程中,經常需要對一個文件進行修改甚至刪除,但是我們又希望能夠保存這個文件的歷史記錄,如果通過備份,那么管理起來會非常的復雜。
  2. 在多人開發時,如果需要多人合作開發一個頁面,那么修改以及合並也會非常的棘手。容易出現沖突。

1.3. 版本控制系統分類

本地版本控制系統

本地版本控制系統就是在一台機器上,記錄版本的不同變化,保證內容不會丟失

缺點:如果多人開發,每個人都在不同的系統和電腦上開發,沒辦法協同工作。

集中式版本控制系統

svn/cvs都是集中式的版本控制系統

  1. 需要一個中央服務器來管理代碼的的版本和備份
  2. 所有的用戶電腦都是從中央服務器獲取代碼或者是將本地的代碼提交到中央服務器
  3. 依賴與網絡環境,如果連不上中央服務器,就無法提交和獲取代碼。
  4. 如果中央服務器宕機,所有人都無法工作。

分布式版本控制系統

git是分布式的版本控制系統。

  1. 需要一台服務器作為代碼倉庫
  2. 每個用戶電腦都是一個服務器(代碼倉庫),並且和代碼倉庫是鏡像的,用戶修改和獲取代碼都是提交到自己的服務器當中。
  3. 不需要網絡就可以進行工作。
  4. 當連接網絡時,用戶可以選擇將自己的服務器與代碼倉庫進行同步


通過上面的介紹我相信你已經對版本控制系統有了一定的了解,接下來我們就詳細的介紹一下今天的主角git

2. git

2.1. git介紹

Git是一款免費、開源的分布式 版本控制系統 ,用於敏捷高效地處理任何或小或大的項目。

Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。

2.2. git安裝

1. 不要安裝在中文目錄

2. 不要使用桌面管理軟件

安裝很簡單,一直下一步即可。在任意的目錄下右鍵,能夠出現下圖,表示安裝成功了。

git是用法方式主要有兩種,

  • git gui,即圖形化界面的方式
  • git bash,命令行的方式(一般我們在項目中都是用這種方式)

bash是linux系統的命令,因此學習git前,我們先學習一下bash(bash並不是必需,其實我們直接像平時那樣在外面建文件夾查看文件 就可以了,當然一些簡單的cd命令你需要記一下,用bash只是比較專業[逼格高])

  1. 在任意文件夾中,都可以使用右鍵,通過git bash here打開命令行窗口,此時的路徑就是當前目錄。
  2. 窗口上右鍵,通過options-->Text-->select可以調整字體的大小。
# cd 改變目錄  (change directory)
cd images   #進入images文件夾
cd ..      #進入上一層目錄
cd ~       #進入用戶根目錄

# tab  自動補全,當我們輸命令或者目錄很長時,可以使用tab鍵進行自動補全。
# 按兩次tab,會把所有符合要求的內容都列出來。

# pwd 打印當前目錄的路徑 (print work directory)
pwd


# ls 展示當前目錄列表(list)
ls         # 展示當前目錄
ls -a      # 展示全部內容,包括隱藏文件
ls -l      # 以列表的形式展示內容
ls -al     # 以列表的形式展示所有的內容,包括隱藏文件。
ls --help  # 查看ls所有的參數。
ls -l images   # 展示images目錄下的文件,如果沒有寫目錄,默認展示當前目錄。


# clear reset清屏
clear  # 清除屏幕內容,滾動條,保留了歷史
reset  # 重置,歷史記錄沒了。


# mkdir  創建一個文件夾 (make directory)
mkdir css          # 創建一個css的文件夾
mkdir css img js   # 創建了三個文件夾

# rmdir  刪除一個空的文件夾(沒啥用)
rmdir img   # 刪除文件夾

# touch  創建文件
touch index.html   #創建了一個index.html文件
touch css/index.css # 在css目錄下創建idnex.css文件

# rm 刪除一個文件獲取文件夾
rm index.html # 刪除index.html文件
rm js         # 刪除空的js文件夾
rm -r css     # 遞歸刪除一個文件夾

# mv 移動文件(move)
mv index.html js            # 將html文件移動到js文件夾中
mv index.html index2.html   # 將index.html重命名為index2.html

# cp 復制文件(cp)
cp index.html index2.html   # 復制index.html文件,命名為index2.html
cp -r css css02             # 如果復制的是文件夾,需要使用-r參數。

# cat 查看文件全部內容
cat index.html
# less 查看文件部分內容
less index.html
# q退出查看

2.3. 基本方法

  1. 初始化git倉庫git init
  2. 查看當前git倉庫的狀態git status
  3. 將文件添加到git的暫存區git add 文件名
  4. 將文件由暫存區提交到倉庫區git commit -m '提交說明'
  5. 查看提交日子git log
# 初始化git倉庫,會在當前目錄生成一個隱藏文件夾 .git  不要去修改這個文件夾下的任意東西。
    git init     ( 演示 :首先你先在常用的目錄下創建一個文件夾,在文件夾里面加點文件,比如index.html,README.md           接下來用上面介紹的命令去初始化這個庫,怎么做?在當前的目錄下右鍵然后點git Bash here,接着在黑窗下輸git init           到這里初始化倉庫已經成功,在你的文件下會出現一個.git文件夾(補充)#設置提交時的用戶信息 
    $ git config [--global] user.name "寫你的用戶名"     $ git config [--global] user.email "寫你的郵箱"
這一步很重要,后面github也要使用的這個用戶名和密碼,不要將密碼忘記,執行完之后你會在你的c盤 -->用戶--> Administrator里找到 .gitconfig這個文件就說明成功了 下面我在2.4也單獨列出來講了
# 查看git的狀態 ,如果此時新建一個文件,那么這個文件是沒有被追蹤的,說白了git還沒有管理這個新建的文件git status        
    (此時我們初始化的庫還沒有去管理我們的這些文件,我們需要手動去將文件上傳到git庫去)# 讓git管理這個新建的文件git add index.html
輸入上面的命令不會有任何反應的話就是對的,但是你會發現如果我們的文件很多的話我們這樣一個個添加會很慢 所以我們可以使用 git add . 來實現批量上傳文件(add和 . 之間是有空格的),做完這個操作之后文件是在暫 存區的。我們可以查看一下此時的狀態

# 讓文件由暫存區提交到倉庫區。此時文件才真正的被git管理了。    要讓文件提交到倉庫區我們需要執行 git commit -m ‘這里面寫你提交東西的描述’
到了這一步就成功將文件提交到倉庫了 # 如果提交日志亂碼,右鍵-->options-->Text-->將編碼改成utf-8# 查看提交日志git log

2.4. 配置郵箱和用戶名

如果第一次使用git,會要求設置用戶名和郵箱

# git config  user.name 你的目標用戶名
# git config  user.email 你的目標郵箱名
# 這種配置方式只有在當前倉庫生效
git config user.name hcc
git config user.email ljl@163.com

# 可以使用--global參數,配置全局的用戶名和郵箱,這樣別的git倉庫就不需要重新配置了。
# 如果同時配置了局部的和全局的,那么局部的用戶名和郵箱將會生效。
git config  --global user.name hucc
git config  --global user.email 753540636@qq.com

# 查看配置信息
git config --list

2.5. git的工作原理

2.6. git命令詳解

2.6.1. git add(重點)

  • 作用:將文件由 工作區 添加到 暫存區,暫存文件
  • 命令:git add 文件名
    • 例如: git add index.html
  • git add --all 或者 git add -A 獲取git add .(簡寫) 添加所有文件
  • git add a.txt b.txt 同時添加兩個文件
  • git add *.js 添加當前目錄下的所有js文件

2.6.2. git checkout 文件名

  • 作用:暫存區的內容恢復到工作區。
  • git checkout 1.txt 將暫存區中1.txt文件恢復到工作區

2.6.3. git commit(重點)

  • 作用:將文件由 暫存區 添加到 倉庫區
  • git commit -m "提交說明"

2.6.4. git status

  • 作用:查看文件的狀態
  • 命令:git status
  • 命令:git stauts -s 簡化日志輸出格式

2.6.5. git log

  • 作用:查看提交日志
  • git log 只能查看當前head以及以前的日志
  • git log --oneline 簡潔的日志信息
  • git reflog 查看所有的提交變更日志

2.6.6. git reset

  • 作用:版本回退,將代碼恢復到已經提交的某一個版本中。
  • git reset --hard 版本號 將代碼回退到某個指定的版本(版本號只要有前幾位即可)
  • git reset --hard head~1將版本回退到上一次提交
    • ~1:上一次提交
    • ~2:上上次提交
    • ~0:當前提交

2.7. git忽視文件

在倉庫中,有些文件是不想被git管理的,比如數據的配置密碼、寫代碼的一些思路等。git可以通過配置從而達到忽視掉一些文件,這樣這些文件就可以不用提交了。

  • 在倉庫的根目錄創建一個.gitignore的文件,文件名是固定的。
  • 將不需要被git管理的文件路徑添加到.gitignore
# 忽視idea.txt文件
idea.txt

# 忽視.gitignore文件
.gitignore

# 忽視css下的index.js文件
css/index.js

# 忽視css下的所有的js文件
css/*.js

# 忽視css下的所有文件
css/*.*
# 忽視css文件夾
css

3. git分支操作

分支就是科幻電影里面的平行宇宙,當你正在電腦前努力學習Git的時候,另一個你正在另一個平行宇宙里努力學習SVN。

如果兩個平行宇宙互不干擾,那對現在的你也沒啥影響。不過,在某個時間點,兩個平行宇宙合並了,結果,你既學會了Git又學會了SVN!

3.1. 為什么要有分支?

  • 如果你要開發一個新的功能,需要2周時間,第一周你只能寫50%代碼,如果此時立即提交,代碼沒寫完,不完整的代碼會影響到別人無法工作。如果等代碼寫完再提交,代碼很容易丟失,風險很大。
  • 有了分支,你就可以創建一個屬於自己的分支,別人看不到,也不影響別人,你在自己的分支上工作,提交到自己的分支上,等到功能開發完畢,一次性的合並到原來的分支。這樣既安全,又不影響他人工作。
  • 在工作過程中,經常會碰到多任務並行開發 的情況,使用分支就能很好的避免任務之間的影響。
  • 其他版本工具比如svn,cvs中也有分支這個概念,但是這些工具中的分支操作非常的慢,形同擺設。

3.2. 分支操作的命令

3.2.1. 創建分支

  • git branch 分支名稱創建分支,分支中的代碼,在創建時與當前分支的內容完全相同。
  • git在第一次提交時,就有了一個叫master的主分支。

3.2.2. 查看分支

  • git branch可以查看所有的分支,
  • 在當前分支的前面會有一個*

3.2.3. 切換分支

  • git checkout 分支名稱切換分支
  • 在當前分支的任何操作,都不會影響到其他的分支,除非進行了分支合並。
  • 切換分支之前,必須保證代碼已經提交了

3.2.4. 創建並切換分支

  • git checkout -b 分支名稱 創建並切換分支

3.2.5. 刪除分支

  • git branch -d 分支名稱 可以刪除分支
  • 注意:不能在當前分支刪除當前分支,需要切換到其他分支才能刪除。
  • 注意:master分支是可以刪除的,但是不推薦那么做。

3.2.6. 合並分支

  • git merge 分支名稱 將其他分支的內容合並到當前分支。
  • master分支中執行git merge dev 將dev分支中的代碼合並到master分支

3.3. git分支的工作原理

3.4. git合並沖突

  • 對於同一個文件,如果有多個分支需要合並時,容易出現沖突。
  • 合並分支時,如果出現沖突,只能手動處理,再次提交,一般的作法,把自己的代碼放到沖突代碼的后面即可。

4. 遠程倉庫

所有的程序員都可以通過遠程倉庫來進行版本的共享,達到所有人的代碼一致的效果。

4.1. 遠程倉庫相關的命令

4.1.1. git push

  • 作用:將本地代碼提交到遠程倉庫
  • git push 倉庫地址 master 在代碼提交到遠程倉庫,注意master分支必須寫,不能省略
  • 例子:git push git@github.com:hucongcong/test.git master 如果第一次使用,需要填寫github的用戶名和密碼

4.1.2. git pull

  • 作用:將遠程的代碼下載到本地
  • git pull 代碼地址 將遠程的代碼中master分支下載到本地
  • 通常在push前,需要先pull一次。

4.1.3. git clone

  • 作用:克隆遠程倉庫的代碼到本地
  • git clone 倉庫地址 自定義本地倉庫名 將整個倉庫克隆到本地

4.1.4. git remote

每次push和pull操作都需要帶上遠程倉庫的地址,非常的麻煩,我們可以給倉庫地址設置一個別名

  • git remote add 倉庫別名 倉庫地址 使用倉庫別名替代倉庫地址。倉庫別名相當於一個js變量,倉庫地址就是對應的值。
    • git remote add hucc git@github.com:hucongcong/test.git 設置了一個hucc的倉庫別名,以后push和pull都可以不用倉庫地址,而用hucc
  • git remote remove hucc 刪除hucc這個倉庫別名。
  • git remote 查看所有的倉庫別名
  • 如果使用了git clone命令從遠程倉庫獲取下來的,那么這個本地倉庫會自動添加一個 origin的遠程地址,指向的就是克隆的遠程地址。

4.2. github

git與github沒有直接的關系。

  • git是一個版本控制工具。
  • github是一個代碼托管平台,是git的一個遠程代碼倉庫。
  • 將來工作時,公司會有自己的代碼倉庫。

github官網

開源中國-git

1. gitHub是一個面向開源及私有軟件項目的托管平台,因為只支持git 作為唯一的版本庫格式進行托管,故名gitHub。
2. github免費,代碼所有人都能看到,但是只有你自己能修改。付費的可以隱藏。

在github上創建一個項目,獲取到倉庫的地址。然后就可以將本地的代碼推送到遠程的服務器上。

4.3. SSH免密碼登陸

(對稱加密與非對稱加密)

每次push代碼,都需要輸入用戶名跟密碼,非常的麻煩。因此我們可以配置一個SSH免密碼登陸。

  • github為了賬戶的安全,需要對每一次push請求都要驗證用戶的身份,只有合法的用戶才可以push
  • 使用ssh可以實現免密碼操作(不需要使用密碼)

4.3.1. SSH免密碼登錄配置

  • 1 創建SSH Key:在git bash中輸入  ssh-keygen -t rsa 然后一路回車 出現 2048就完成了
  • 2 在文件路徑 C:\用戶\當前用戶名\ 找到 .ssh 文件夾
  • 3 文件夾中有兩個文件:
    • 私鑰:id_rsa
    • 公鑰:id_rsa.pub (將這個在記事本中打開,然后復制[這個就是key])
  • 4 在 github -> settings -> SSH and GPG keys頁面中,新創建SSH key
  • 5 粘貼 公鑰 id_rsa.pub 內容到對應文本框中
  • 5 在github中新建倉庫或者使用現在倉庫,拿到git@github.com:用戶名/倉庫名.git
  • 6 此后,再次SSH方式與github“通信”,不用輸入密碼確認身份了

4.4. 使用github pages搭建博客

GitHub Pages 本用於介紹托管在 GitHub 的項目, 不過,由於他的空間免費穩定,用來做搭建一個博客再好不過了。

缺點:只能放靜態頁面,也就說github pages只能解析html、css、js,無法解析后端語言。

[用戶名.github.io] 將來訪問路徑

博客搭建步驟:

  1. 在本地工作目錄使用git初始化 git init
  2. 創建自己的博客項目
  3. 將創建好的博客添加到暫存區 git add [文件路徑]
  4. 本地提交: git commit -m "第一個博客"
  5. 在github上創建一個項目,項目名用戶名.github.io 固定的
  6. 提交到github:git push github倉庫地址 master
  7. 查看github中對應的倉庫中,是不是提交到了
  8. 訪問:用戶名.github.io
最后給大家分享一個可以拿來練練手的小游戲 githug 一共有54關,闖過這55關基本也就掌握了git的用法

首先我們要安裝這個游戲,githug使用Ruby編寫的可以用命令安裝 gem install githug

如果遇到權限問題 加上 sudo:sudo gem install githug 安裝成功后就可以根據提示闖關啦










注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com