Git和Github的概念:
Git是分散式版本管理系統,簡單說就是一個軟體,用於記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的軟體。
Github是一個為使用者提供Git服務的網站,簡單說就是一個可以放程式碼或檔案的地方,Github除了提供管理Git的web介面外,還提供訂閱,關注,討論組,線上編輯器等豐富功能。
Git的下載和Github賬號的註冊:
1.Github的賬號註冊地址:https://github.com/join?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F&source=header-home
2.Git的官方下載地址:https://git-scm.com/downloads 如果下載慢的可在:https://npm.taobao.org/mirrors/git-for-windows/下載(直接預設安裝即可),桌面右鍵檢視是否有 Git Bash Here和 Git GUI Here,則證明安裝成功
Git的工作流程:
Git本地倉庫操作:
1.首次使用需進行全域性配置:
配置使用者名稱:git config --global user.name "使用者名稱"
;
配置使用者郵箱:git config --global user.email "郵箱"
;(這裡使用Github的使用者名稱和郵箱)
2.建立目錄命令:兩種建立方式:①mkdir 檔名 ②windows下右鍵建立資料夾
3. ① cd flask_blog(進入專案目錄)
② git init 初始化
進入目錄flask_blog,勾選隱藏的專案,即可顯示
③git status,查詢當前工作區所有檔案的狀態;
nothing to commit (create/copy files and use "git add" to track)當前沒有進行任何提交,可以建立或者複製檔案,並使用"git add"命令進行跟蹤
④那麼我們當前應該新建檔案在所建立的flask_blog目錄下,然後 git add指令可將檔案新增到快取區
提交的方式有三類:
語法1:git add 檔名
語法2:git add 檔案1 檔名2 檔名3....
語法3:git add. 【新增當前目錄到快取區】
這裡就使用git add readme.txt的方式新增到快取區
⑤提交過後,使用git status 檢視當前檔案狀態
這裡提示我們可以利用git rm --cached <file>指令清除檔案,但我們不需要這樣做
⑥接下來可以利用: git commit -m "註釋內容" 指令將快取區的檔案提交至版本庫
⑦下面我們可以進行版本回退的操作
我再新建一個檔案提交到版本庫,檔名為index1.py
重複上述操作 ⑴git add index1.py ⑵git commit -m "新建檔案index1.py"
檢視版本命令:⑴ git log ⑵git log --pretty=oneline
兩種方式不同的顯示日誌的方式,一般使用第二種,清晰明瞭。
黃色部分為版本號,後面為註釋內容
現在我們要回到第一個版本的狀態,使用命令: git reset --hard 版本號
執行完畢後,本地倉庫變為
⑧如果我們需要回到有index1.py這個檔案時的狀態,可以進行下列操作:
使用指令去檢視歷史操作:git reflog
然後進行回到此狀態的操作:
總結:a.要想回到過去,必須先得到 commit id (版本號),然後通過git reset --hard 進行回退;
b.要想回到未來,需使用 git reflog 進行歷史操作檢視,得到最新的 commit id;
c.在寫回退指令的時候 commit id 可以不用寫全,git 自動識別,但是也不能寫太少,至少需要寫前四位字元
Github遠端倉庫的建立:
1.登入Github賬號
2.點選Start a project
3.①Responsitory name為倉庫名,必填
②Public網際網路上任何一個人都可以看到此庫,Private此庫只可以授權的才能提交,一般選擇Public,然後確認建立即可
Github遠端倉庫的使用:
一.HTTPS協議
1.遠端倉庫的克隆操作
①cd .. 返回到上一層目錄
②mkdir ./splider 建立目錄
③使用 git clone 克隆線上倉庫到本地
語法:git clone 線上倉庫地址
cd splider 進入splider目錄,進行克隆指令 ,這裡會出現一個警告warning: You appear to have cloned an empty repository,
意思為你克隆了一個空倉庫,不用去管。
克隆完成
然後進入克隆好的 splider_clone,裡面存在一個".git"資料夾,如下:
2.將工作區的內容提交到github遠端倉庫
在倉庫上對應的操作 (提交到暫存區、提交到本地倉庫、提交到線上倉庫、拉取線上倉庫)
① 在splider_clone下建立 readme.txt檔案
② 進入到splider_clone目錄下
③ 使用命令 git add readme.txt 提交到快取區,使用 git commit -m "新建檔案readme.txt" 將暫存區的檔案提交到本地倉庫中:
④ 使用命令 git push 將本地倉庫的檔案提交到線上倉庫,會彈出一個 Personal Access Token 視窗
去Github獲取自己的Personal Access Token
點選進入settings
點選進入Developer settings
點選進入 Personal access tokens
點選進入 Generate new token
輸入Github賬號密碼
這裡填 Note,repo勾選即可:
確認獲取
這裡就是獲取到token
填入即可, 點選 Sign in :
成功提交到線上倉庫成功:
檢查線上倉庫是否有readme.txt 檔案:
3.拉取線上倉庫檔案操作 語法:git push
我們先線上上倉庫建立檔案
填上檔名和註釋
建立
git pull 拉取線上倉庫檔案到本地
提醒:在每天工作的第一件事就是先 git pull 拉取線上最新的版本;每天下班前要做的是 git push,將原生程式碼提交到線上倉庫
二、ssh協議
*該方式與前面https方式相比,只是影響github對於使用者的身份鑑權方式,對於git的具體操作(如提交本地,新增註釋,提交遠端等操作)沒有任何影響
①先安裝OpenSSH,下載地址:https://openssh.en.softonic.com
② 生成公私鑰對指令: ssh-keygen -t rsa -C "註冊郵箱"
Enter file in which to save the key (/c/Users/cwg-member/.ssh/id_rsa) 這句話詢問我們把公私鑰對放在那裡,直接預設位置就行,敲回車
叫我們公私鑰對保護密碼,如果不需要密碼直接回車就行
連續回車,得到這個,
去公私鑰對的儲存位置,用記事本開啟 id_rsa.pub 檔案,複製裡面的內容
③在Github上設定公鑰內容
點選 SSH and GPG keys,進入New SSH key 進行設定
把剛剛複製的公鑰內容複製到key裡面,標題自取,Add SSH key即可
再次確認密碼即可
Git 的分支操作:
在版本回退的中,每次提交都會有記錄,Git把它們串成時間線,行程類似於時間軸的東西,這個時間軸就是一個分支,我們稱之 master 分支。
在開發的時候往往是團隊協作,多人進行開發,因此光有一個分支是無法滿足多人同時開發的需求的,並且在分支上工作並不影響其他分支的正常使用,會更加安全。Git 鼓勵開發者使用分 支去完成一些開發任務。
①分支相關指令:
檢視分支:git branch
建立分支: git git branch 分支名
切換分支: git checkout 分支名
刪除分支:git branch -d 分支名
合併分支: git merge 被合併的分支名
建立分支並切換到建立的分支: git checkout -b 分支名 (-b 表示建立並切換 相當於兩個操作指令)
②分支指令操作如下:
檢視分支:
建立分支並檢視分支:
綠色字型表示當前所在分支
切換分支:
標紅部分表示切換成功,分支名改變
合併分支:
我們現在需要在devr分支下修改 readme.txt的檔案內容並提交到本地,如下
然後我們進入到 master 分支,標紅表示分支切換回來了
再去檢視readme.txt檔案發現並沒有我們修改過的檔案,說明這是在兩個不同的分支進行的操作:
合併操作,將 devr 分支合併到master分支中
再去檢視 master 分支下的 readme.txt的內容,說明合併成功
刪除分支:
因為devr分支裡面的檔案已經合併到master分支中去了,我們可以刪除devr分支,在用 git branch檢視分支,發現 devr分支已經被刪除
注意:在刪除分支的時候,一定要先退出要刪除的分支
③合併所有分支之後,需要將 master 分支提交線上遠端倉庫,提交命令 git push 。
Git 衝突的產生與解決:
情景概述: 同事線上上倉庫修改了某個檔案,這個檔案是交給小明完成的,結果第二天小明來上班並不知道檔案已被修改,繼續在本地完善程式碼,到下班時,小明和平時一樣進行 git add 檔名 ,git commit -m "註釋",git push操作時,發現向線上倉庫提交時報錯了。圖中提示先 git pull操作,git pull操作後,此時git已經將線上與本地倉庫的衝突合併到了對應的檔案中。開啟衝突文 件,解決衝突。解決方法:需要和同事進行商量,看程式碼如何保留,將改好的檔案再次提交即可。
圖形化管理工具:
①Github for Desktop
②Source tree
③TortoiseGit
⑤Git GUI
忽略檔案操作:
一、應用場景:如果不想提交某些檔案到線上倉庫中去,可以使用此操作。
二、常見規則寫法:
① /mtk/ 過濾整個資料夾
② *.zip 過濾所有.zip檔案
③ /mtk/do.js 過濾某個具體檔案
④ !index.php 不過濾具體某個檔案
三、案例:
①先在本地倉庫中新建一個js目錄以及目錄中 js 檔案
②依次提交本地與線上
③ 新增 .gitignore 檔案,用指令 touch .gitgnore 建立
④ 編寫檔案中的規則(根據自己的需要編寫即可)
/js/ 就是忽略掉js目錄
⑤ 然後再在js新建一個js檔案
⑥然後再進行提交
⑦去線上倉庫看,發現並沒有 m.js 檔案,說明此js目錄被忽略
部落格地址:https://www.cnblogs.com/gian-t87/p/14513056.html
作者:TUT
版權宣告:原創作品,謝絕轉載!否則將追究法律責任。