詳細介紹git 與github 基本使用(新人必備)


git基礎入門

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

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

git的安裝

下載地址

注意:

  1. 不要安裝在中文目錄

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

安裝很簡單,一直下一步即可。在任意的目錄下右鍵,能看到菜單, 就表示安裝成功了。

使用git的兩種方式

  1. git gui,即圖形化界面的方式

  2. git bash,命令行的方式(推薦)

 

git三個區

要對某個項目使用git進行管理,需要使用git init命令初始化git倉庫git init會在當前目錄生成一個隱藏文件夾 .git 不要去修改這個文件夾下的任意東西。

git倉庫會分成三個區

工作區:我們書寫代碼的地方,工作的目錄就叫工作區。

暫存區:暫時存儲的區域,在git中,代碼無法直接從工作區提交到倉庫區,而是需要先從工作區添加到暫存區,然后才能從暫存區提交到倉庫區。暫存區的目的是避免誤操作。

本地倉庫區:將保存在暫存區域的內容永久轉儲到 Git 倉庫中,生成版本號。生成版本號之后,就可以任何的回退到某一個具體的版本。

 

git基本命令

git init

  • 作用:初始化git倉庫,想要使用git對某個項目進行管理,需要git init進行初始化

# 初始化倉庫, 在當前目錄下生成一個隱藏文件夾.git
git init

git add

  • 作用:將文件由 工作區 添加到 暫存區,在git中,文件無法直接從工作區直接添加到倉庫區,必須先從工作區添加到暫存區,再從暫存區添加到倉庫區。

  • 命令:git add 文件名/目錄名

# 將index.html添加到暫存區
git add index.html

# 將css目錄下所有的文件添加到暫存區
git add css

# 將當前目錄下所有的js文件添加到暫存區
git add *.js

# 添加當前目錄下所有的文件
git add .
git add -A
git add --all

git commit

作用:將文件由 暫存區 添加到 倉庫區,生成版本號


# 將文件從暫存區提交到倉庫
git commit -m "提交說明"

# 如果不寫提交說明,會進入vi編輯器,沒有寫提交說明,是提交不成功的。
git commit   # 需要使用vi輸入內容

# 如果是一個已經暫存過的文件,可以快速提交,如果是未追蹤的文件,那么命令將不生效。
git commit -a -m '提交說明'

# 修改最近的一次提交說明, 如果提交說明不小心輸錯了,可以使用這個命令
git commit --amend -m "提交說明"

git config配置

如果是第一次提交,需要配置提交者信息,推薦和github的賬號郵箱一致


# git config user.name 你的目標用戶名
# git config user.email 你的目標郵箱名

# 使用--global參數,配置全局的用戶名和郵箱,只需要配置一次即可。推薦配置github的用戶名和密碼
git config  --global user.name Jepson
git config  --global user.email jepsonpp@qq.com

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

git status

  • 作用:查看文件的狀態

  • 命令:git status

    • 紅色表示工作區中的文件需要提交

    • 綠色表示暫存區中的文件需要提交

  • 命令:git stauts -s 簡化日志輸出格式

git log

  • 作用:查看提交日志

  • git log 查看提交的日志

  • git log --oneline 簡潔的日志信息

git對比

git diff

git diff可以查看每次提交的內容的不同


# 查看工作區與暫存區的不同
git diff

# 查看暫存區與倉庫區的不同
git diff --cached

# 查看工作區與倉庫區的不同,HEAD表示最新的那次提交
git diff HEAD

# 查看兩個版本之間的不同
git diff c265262 de4845b

git重置

git reset

  • 作用:版本回退,將代碼恢復到已經提交的某一個版本中。

  • git reset --hard 版本號 將代碼回退到某個指定的版本(版本號只要有前幾位即可)

  • git reset --hard head~1將版本回退到上一次提交

    • ~1:上一次提交

    • ~2:上上次提交

    • ~0:當前提交


關於參數 --hard的解釋
git reset 的參數可以是以下三個值:
git reset --soft 版本號 : 只重置倉庫區
git reset --mixed 版本號 : 重置倉庫區和暫存區【默認】
git reset --hard 版本號 : 重置倉庫區和暫存區和工作區。
git reset 版本號         : 效果與--mixed一致
  • 當使用了git reset命令后,版本會回退,使用git log只能看到當前版本之前的信息。使用git reflog可以查看所有的版本信息

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

git分支操作

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

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

為什么要有分支?

  • 如果你要開發一個新的功能,需要2周時間,第一周你只能寫50%代碼,如果此時立即提交,代碼沒寫完,不完整的代碼會影響到別人無法工作。如果等代碼寫完再提交,代碼很容易丟失,風險很大。

  • 有了分支,你就可以創建一個屬於自己的分支,別人看不到,也不影響別人,你在自己的分支上工作,提交到自己的分支上,等到功能開發完畢,一次性的合並到原來的分支。這樣既安全,又不影響他人工作。

  • 在工作過程中,經常會碰到多任務並行開發 的情況,使用分支就能很好的避免任務之間的影響。

  • 其他版本工具比如svn,cvs中也有分支這個概念,但是這些工具中的分支操作非常的慢,形同擺設。

git分支命令

在git中,分支實質上僅僅是一個指針,每次代碼提交后,這個分支指針就會向后移動,保證一直指向最后一次提交的的版本。git中使用HEAD指向當前分支

創建分支

  • git branch 分支名稱創建分支,分支中的代碼,在創建時與當前分支的內容完全相同。

  • git在第一次提交時,就有了一個叫master的主分支。

  • git branch dev,創建了一個叫做dev的分支

查看分支

  • git branch可以查看所有的分支,

  • 在當前分支的前面會有一個*

  • 在git中,有一個特殊指針HEAD,永遠會指向當前分支

切換分支

  • git checkout 分支名稱切換分支 HEAD指針指向了另一個分支

  • 在當前分支的任何操作,都不會影響到其他的分支,除非進行了分支合並。

  • 提交代碼時,會生產版本號,當前分支會指向最新的版本號。

創建並切換分支

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

  • 切換分支會做兩件事情

    • 創建一個新分支

    • 把head指針指向當前的分支

刪除分支

  • git branch -d 分支名稱 可以刪除分支

  • 注意:不能在當前分支刪除當前分支,需要切換到其他分支才能刪除。

  • 注意:master分支是可以刪除的,但是不推薦那么做。

合並分支

  • git merge 分支名稱 將其他分支的內容合並到當前分支。

  • master分支中執行git merge devdev分支中的代碼合並到master分支

  • 分支合並

git合並沖突

  • 對於同一個文件,如果有多個分支需要合並時,容易出現沖突。

  • 合並分支時,如果出現沖突,只能手動處理,再次提交,一般的作法,把自己的代碼放到沖突代碼的后面即可。

 

git遠程倉庫

github與git

git與github沒有直接的關系。

  • git是一個版本控制工具。

  • github是一個代碼托管平台,開源社區,是git的一個遠程代碼倉庫。


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

github官網

開源中國-git

git clone

  • 作用:克隆遠程倉庫的代碼到本地

  • git clone [遠程倉庫地址]

  • git clone git://github.com/jepsongithub/test.git會在本地新建一個test文件夾,在test中包含了一個.git目錄,用於保存所有的版本記錄,同時test文件中還有最新的代碼,你可以直接進行后續的開發和使用。

  • git克隆默認會使用遠程倉庫的項目名字,也可以自己指定。需要是使用以下命令:git clone [遠程倉庫地址] [本地項目名]

git push

  • 作用:將本地倉庫中代碼提交到遠程倉庫

  • git push 倉庫地址 master 在代碼提交到遠程倉庫,注意master分支必須寫,不能省略

  • 例子:git push git@github.com:jepsongithub/test.git master 如果第一次使用,需要填寫github的用戶名和密碼

git pull

  • 作用:將遠程的代碼下載到本地

  • 通常在push前,需要先pull一次。


# 獲取遠程倉庫的更新,並且與本地的分支進行合並
git pull

git remote

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


# 給遠程倉庫設置一個別名
git remote add 倉庫別名 倉庫地址
git remote add jepson git@github.com:jepsongithub/test.git

# 刪除jepson這個別名
git remote remove jepson

# git clone的倉庫默認有一個origin的別名

SSH免密碼登陸

git支持多種數據傳輸協議:

  • https協議:https://github.com/jepsongithub/test.git 需要輸入用戶名和密碼

  • ssh協議:git@github.com:jepsongithub/test.git 可以配置免密碼登錄

每次push或者pull代碼,如果使用https協議,那么都需要輸入用戶名和密碼進行身份的確認,非常麻煩。

  • github為了賬戶的安全,需要對每一次push請求都要驗證用戶的身份,只有合法的用戶才可以push

  • 使用ssh協議,配置ssh免密碼,可以做到免密碼往github推送代碼

SSH免密碼登錄配置

注意:這些命令需要在bash中敲

  • 1 創建SSH Key:ssh-keygen -t rsa

  • 2 在文件路徑 C:\用戶\當前用戶名\ 找到 .ssh 文件夾

  • 3 文件夾中有兩個文件:

    • 私鑰:id_rsa

    • 公鑰:id_rsa.pub

  • 4 在 github -> settings -> SSH and GPG keys頁面中,新創建SSH key

  • 5 粘貼 公鑰 id_rsa.pub 內容到對應文本框中

  • 5 在github中新建倉庫或者使用現在倉庫,拿到git@github.com:用戶名/倉庫名.git

  • 6 此后,再次SSH方式與github“通信”,不用輸入密碼確認身份了

 

github-pages的使用

  1. github 允許創建一個非常特殊的一個倉庫用戶名.github.io 比如 why.github.io`

  2. clone下來新建index.html頁面內容提交

  3. 訪問用戶名.github.iowhy.github.io

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM