版本控制系統(Version Control System):是一種記錄一個或若干文件內容變化,以便未來查閱特定版本修訂狀況的系統。css
在本地記錄文件內容變化狀況。html
缺點:不能進行多人協做git
有一箇中央服務器,專門用於管理代碼,全部人經過中央服務器,進行代碼同步。【表明:SVN 版本控制】github
優勢:解決了多人協做問題安全
缺點:太過於依賴中央服務器,與網絡。bash
分佈式版本控制系統就是一個專門用於管理代碼的遠程倉庫,每一個人本地都有一個遠程倉庫的完整鏡像。服務器
優勢:解決多人協做開發問題,不是特別依賴遠程倉庫,不是特別依賴網絡。【也不是不依賴】網絡
注意 git 的安裝:(1)不能安裝在中文目錄(2)最好不使用桌面管理軟件【360,百度殺毒等等】ssh
工做區:咱們寫代碼的地方編輯器
暫存區:暫時存儲的區域,git 中的代碼不能直接從工做區存儲到倉庫中,須要現將其添加到暫存區,再從暫存區添加到倉庫【目的是爲了不錯誤操做】
倉庫區:將暫存區的代碼轉存到 git 倉庫中,生成版本號。
【2.1】git status:查看文件狀態【紅色表示再工做區,綠色表示再暫存區 】
【2.2】git status -s: 簡化日誌輸出格式
【3.1】git add 文件名/目錄名:將文件從工做區添加到暫存區
【3.2】git add . :將當前目錄下全部文件一次性提交到暫存區 【git add -A 或 git add -all】
# 將index.html添加到暫存區 git add index.html # 將css目錄下全部的文件添加到暫存區 git add css # 將當前目錄下全部的js文件添加到暫存區 git add *.js # 添加當前目錄下全部的文件 git add . git add -A git add --all
【4.1】git commit -m "提交說明":將文件從暫存區添加到倉庫區,生成版本號。
【4.2]git commit -a -m "提交說明"(快速提交,以前有提交過文件)
【4.3】git commit --amend -m "提交說明":若是提交說明輸入錯了,修改使用命令。
# 將文件從暫存區提交到倉庫 git commit -m "提交說明" # 若是不寫提交說明,會進入vi編輯器,沒有寫提交說明,是提交不成功的。 git commit # 須要使用vi輸入內容 # 若是是一個已經暫存過的文件,能夠快速提交,若是是未追蹤的文件,那麼命令將不生效。 git commit -a -m '提交說明' # 修改最近的一次提交說明, 若是提交說明不當心輸錯了,可使用這個命令 git commit --amend -m "提交說明"
【5】git config(配置)
【5.1】第一次提交配置:
git config user.name 你的目標用戶名
git config user.email 你的目標郵箱名
【5.2】 使用--global 參數,配置全局的用戶名和郵箱,只須要配置一次便可。推薦配置 github 的用戶名和密碼
git config --global user.name *****
git config --global user.email ****
【5.3】git config --list:查看配置信息
【6.1】git log:查看提交的日誌
【6.2】git log --oneline:查看簡潔的日誌
【1】git diff:查看工做區與暫存區提交內容的不一樣
【2】git diff --cached:查看暫存區與倉庫區內容的不一樣
【3】git diff HEAD:查看工做區與倉庫區內容的不一樣(HEAD 表示最新一次的提交)
【4】git diff 版本 1 版本 2:查看兩個版本之間的不一樣
【1】git reset:版本回退,將代碼恢復到提交過得某一個版本中
【2】git reset --hard 版本號:將代碼回退到某一個指定的版本(置三個區)
【3】git reset --soft 版本號:只重置倉庫區
【4】git reset --mixed 版本號:重置倉庫區與暫存區(默認)
【5】git reflog:查看全部版本信息(使用git log
只能看到當前版本以前的信息)
【6】git reset --hard head~1:將版本回退到上一次提交狀態
【忽視文件建立須要在編譯器中建立,否則會報錯】
在倉庫中,有一部分文件是不想被 git 管理的,好比數據的配置密碼,寫代碼的一些思路等等,git 能夠經過配置忽略一些文件,這樣文件就不用提交了。
【1】方法:注意:該文件是能夠將本身忽視的
在倉庫根目錄下建立一個.gitignore 文件,文件名固定。將不須要被 git 管理的文件路徑添加到.gitignore 中。
【忽視.gitignore 文件 (.gitignore)】
# 忽視idea.txt文件 idea.txt # 忽視.gitignore文件 .gitignore # 忽視css下的index.js文件 css/index.js # 忽視css下的全部的js文件 css/*.js # 忽視css下的全部文件 css/*.* # 忽視css文件夾 css
在 git 中,分支實質上就是一個指針,每次代碼提交後,這個分支指針就會向後移動,保證一直指向最後一次提交的版本。git 中使用 HEAD 指向當前分支。
【1】每次 commit 提交,都會在倉庫區生成一個新的版本
【2】在第一次生成版本後,會自動建立一個 master 分支,指向當前版本
【3】全部的分支,本質上就是指針
【4】默認有一個 HEAD 指針永遠指向當前分支
【1】git branch 分支名稱:建立分支。
【2】git branch:查看全部分支。
【3】git checkout 分支名稱:切換分支(HEAD 指針指向另外一個分支)
當前分支任何操做不會影響其餘分支。除非進行分支合併
提交代碼時,會產生版本號,當前分支會指向最新的版本號。
【4】git checkout -b 分支名稱:建立並切換分支(建立一個新分支,將 HEAD 指針指向當前分支)
【5】git branch -d 分支名稱:刪除分支(注意:不能在當前分支刪除當前分支,須要切換到其餘分支,才能夠刪除)。
【6】git merge 分支名稱:將其餘分支內容合併到當前分支。
【1】對於同一個文件,若是有多個分支要合併,容易出現衝突。
【2】合併分支時,出現衝突須要手動處理,在進行提交。(通常將本身代碼放在衝突代碼以後便可)。
git 與 github 沒有直接的關係。
git 是一個版本控制工具。
github 是一個代碼託管平臺,開源社區,是 git 的一個遠程代碼倉庫。
注意: 建立 git 項目時,不能有中文。
git clone [遠程倉庫地址] [本地項目名]
git push 倉庫地址 master
在代碼提交到遠程倉庫,注意 master 分支必須寫,不能省略做用:將遠程的代碼下載到本地
一般在 push 前,須要先 pull 一次。
# 獲取遠程倉庫的更新,而且與本地的分支進行合併 git pull
每次 push 操做都須要帶上遠程倉庫的地址,很是的麻煩,咱們能夠給倉庫地址設置一個別名
# 給遠程倉庫設置一個別名 git remote add 倉庫別名 倉庫地址 git remote add jepson git@github.com:jepsongithub/test.git #刪除jepson這個別名 git remote remove jepson #git clone的倉庫默認有一個origin的別名
git 支持多種數據傳輸協議:
https://github.com/jepsongithub/test.git
須要輸入用戶名和密碼git@github.com:jepsongithub/test.git
能夠配置免密碼登陸每次 push 或者 pull 代碼,若是使用 https 協議,那麼都須要輸入用戶名和密碼進行身份的確認,很是麻煩。
注意:這些命令須要在 bash 中敲
ssh-keygen -t rsa
C:\用戶\當前用戶名\
找到 .ssh
文件夾id_rsa
id_rsa.pub
github -> settings -> SSH and GPG keys
頁面中,新建立 SSH keyid_rsa.pub
內容到對應文本框中git@github.com:用戶名/倉庫名.git