一、在終端,檢查git是否安裝
git --version
2.沒有安裝的話去,官網,下載git
3.一直點下一步即可
4.安裝后在終端檢查git是否安裝好
5.設置用戶名和郵件地址(最好和GitHub的用戶名/郵箱保持一致)
git config --global user.name “自己的用戶名”
git config --global user.email “自己的郵箱”
#檢查是否配置成功
git config --global --list
二、創建倉庫:
1.登錄[GitHub](https://github.com/)
2.登錄后,頁面右上角點擊頭像

3.進入倉庫首頁,在右上角點擊new按鈕

4.進入新倉庫創建頁面(倉庫命名要求:不能使用中文 ,不能使用大寫字母 ,復雜名稱使用中橫線連接)

三 、 如何上傳代碼到GitHub
1.在本地創建項目文件夾test-demo
2.在test-demo文件夾下,創建demo.html/demo.css/demo.js

3.在根目錄下,創建.gitignore文件,用于設置忽略文件,不需要git管理的文件
> #直接書寫需要被忽略的文件名或者文件夾名稱
> 1.txt
4.打開終端,進行git倉庫初始化
> git init
>

5.在終端,添加git倉庫追蹤文件
> git add .
6.在終端,提交本地源代碼到本地倉庫
> git commit -m “第一次提交git測試代碼”
7.查看本地倉庫狀態
> git status
8.通過https協議,將 本地倉庫(在自己電腦上) 和 遠程倉庫(在github網站上) 進行連接
git remote add origin https://github.com/Ocean490724726/test-demo.git
#查看遠程分支
git remote -v
#刪除遠程分支
git remote rm origin
9.將本地倉庫代碼 push到 遠程倉庫(此時可能提示輸入用戶名和密碼:指的是github上的)
git push -u origin master
#以上完整寫法:git push --set-upstream origin master:master
#表示1.將代碼從本地下流master分支 推送到 遠程上流分支master
#表示2:下流master和上流master建立連接,以后直接使用git push即可,默認推送到上流master分支
第一次push之后,輸入遠程倉庫的用戶名和密碼提示(之后就不會提醒了)

代碼push遠程倉庫成功提示

8. 如何將遠程倉庫代碼拉到本地
1.克隆
git clone 遠程倉庫地址 【本地倉庫名稱】
git clone https://git.code.tencent.com/git-class-001/git-test.git
9.獨自使用git的基本操作
查看提交記錄
git status 查看當前分支狀態
git log 查看當前提交記錄
結束git log命令:英文狀態下按Q就可以了
10.想要修改項目中的文件時,如何進行操作?
1.查看當前分支狀態
2.根據兩種情況:
??如果都在工作區,未被追蹤,
??或者有些在工作區,有些在暫存區(add了)
?? git add .
3.此時都在暫存區
??git commit -m “”
4.如果都在本地倉庫
??git push -u origin master
11.刪除不需要的文件時,如何操作
1.查看當前分支狀態
??git status
2.手動刪除或者命令行刪除文件
??#手動刪除:
??命名行刪除文件,可以直接進入git commit -m “”
??git rm 文件名
3.查看當前分支狀態
??git status
4.追蹤修改(命令行刪除文件可以跳過該步驟)
??git add .
5.查看當前分支狀態
??git status
6.提交修改
??git commit -m “”
7.查看當前分支狀態
??git status
12.想要給文件重命名時,如何操作?
??手動重命名
1.查看分支狀態
??git status
2.刪除重命名前的文件名
??git rm test1.html
3.追蹤重命名后的文件名
??git add demo.html
4.查看狀態
??git status
5.提交
??git commit -m “手動重命名”
6.查看提交記錄
?? git log
——————————————————————————————————
??命令行重命名(推薦)
1.重命名
??git mv 原文件名 新文件名
??git mv demo.html test1.html
2.查看狀態
??git status
3.提交
??git commit -m “命令行重命名”
4.查看提交記錄
??git log
13.想要移動文件到其他位置時候,如何操作
??移動文件,并重命名
1.查看狀態
??git status
2.移動文件,并重命名
??git mv 原文件名稱 文件夾名/新文件名
??git mv ./test2.html ./home/home2.html
3.查看狀態
??git status
4.提交
??git commit -m “移動文件,并重命名”
5.查看狀態和提交記錄
??git status
??git log
//結束查看log
??q
14. 獨自使用git的常見問題及解決方法
文件有變化時,如何查看文件前后變化
方式一:
1.查看指定文件的所有被修改記錄
??git log --pretty=oneline home/home2.html
2.根據上面返回的commitId,查看某一次修改詳情
??#git show 上面獲取的commitid
??git show c1b64f1eb07c3a024957156fc7590fda7676996d
方式二:直接查看
git log -p home/home2.html
q
15.操作失誤的情況下,如何實現一鍵還原到上一次提交狀態
所有修改文件都是工作區狀態下,撤銷修改操作,一鍵還原
1.查看當前文件狀態
??git status
2.一鍵還原操作失誤文件
??git checkout – 文件名
??git checkout – * 一鍵還原所有文件的操作
??git checkout – test.html test3.html home/test1.html
16. 不再追蹤時如何實現撤銷追蹤操作
當文件已經被add了,處于暫存區,撤銷追蹤操作
1.查看當前文件狀態
??git status
2.撤銷追蹤操作
??git reset HEAD 文件名
??git reset HEAD test3.html
??本次add的文件撤銷到工作區
??git reset HEAD *
3.一鍵還原到上次提交狀態
??git checkout – test3.html
17. 想要回到上一版本或者指定版本時如何進行操作
1.在根目錄下,創建version.html 和 v.html兩個文件,添加內容(h1 版本1 /h1)視為”版本1“,并提交
??git add .
??git commit -m “版本1”
??git status
??git log --pretty=oneline
2.將內容改為“版本2”,追蹤并提交
??git commit -am “版本2”
??git status
??git log --pretty=oneline
執行git commit -am "提交描述"即可將add和commit操作合并, 不需要先git add file 再 git commit -m “提交描述” 了
3.按照第二步驟,繼續提交版本3,版本4,版本5
??不要忘記修改h1標簽里的內容
4.查看所有歷史記錄
git log --pretty=oneline
5.回到上一版本,已經提交,沒有push
#git reset --soft 上一個commitID 撤銷commit
??git reset --soft 版本4的commitID # 撤銷版本5的commit
#git reset --mixed 上一個commitID 兩個動作
??git reset --mixed 版本4的commitID 撤銷版本5的commit和add兩個動作
#撤銷并舍棄版本號之后的所有提交記錄,使用需要謹慎!!!
#撤銷后,工作區是版本4的代碼,版本5丟失了,謹慎使用!!!
??git reset --hard HEAD^
#回到上兩個版本
??git reset --hard HEAD^^
#回到上三個版本
??git reset --hard HEAD~3
#方式二:通過commit id的前7位,回到指定版本(往前/往后都可以)
??git reset --hard 473233
6.已經提交,且push
#由于遠程倉庫版本號為版本5 低于 本地倉庫版本4 ,不需要push,拒絕push
??git reset --hard 版本4的commitID
#撤銷,但是保存了提交記錄
??git revert 當前的版本5的commitID # commitID是最新提交的commitID,
#再進行push到遠程倉庫
??git push
7.查看當前狀態
git status
18. 想要將某一文件回到指定版本時如何進行操作
1.當前所有文件都處理版本5
#確認狀態是否為干凈的
??git status
??git log --pretty=oneline
2.為了驗證其他文件還在版本5,只有指定文件回到指定版本,標記一下其他文件
18. 想要將某一文件回到指定版本時如何進行操作
1.當前所有文件都處理版本5
#確認狀態是否為干凈的
??git status
??git log --pretty=oneline
2.為了驗證其他文件還在版本5,只有指定文件回到指定版本,標記一下其他文件
3.根據commit id,回退指定文件到指定版本
??git log --oneline 查看所有提交過的版本
??git checkout commitID – 指定回退文件
??git checkout 62cad8 – version.html
4.回退后截圖
5.查看當前狀態
??git status
6.追蹤并提交
??git commit -m “將指定文件回退到指定版本”
7.查看狀態
??git status
??git log --pretty-oneline
19.想要修改內容之后推送至遠程倉庫時如何進行操作
1.本地創建項目,初始化,并提交到本地倉庫
2.在github創建遠程倉庫
3.提交到遠程倉庫
4.新增css/js文件,并提交到本地倉庫
?? git status
??git add .
??git commit -m “”
5.push到遠程倉庫
??git push -u origin master
20.想要給每個版本創建一個獨特標簽,做所有版本標簽管理時如何操作
1.創建標簽(默認給最近的一次commit)
#git tag v版本號
??git tag v1.0
2.查看標簽
??git tag
3.查看標簽添加位置
??git log
4.給指定commit,添加標簽
??git tab v版本號 commitID
??git tag v0.5 69d113
5.查看是否添加標簽
??git tag
??git log --pretty=oneline
6.刪除指定標簽
??git tag -d v0.5
7.將添加標簽v1.0,push到遠程倉庫
??git push origin v1.0
8.在github上查看tag
21.想要創建、切換、刪除分支時如何及逆行操作
1.創建分支
??git branch 分支名
??git branch dev
2.查看所有分支
?? #當前活動分支 帶* 并且高亮
??git branch
3.創建test分支
??git branch test
??git branch
4.切換分支
??#git checkout 分支名 注意:切換前提:保證當前分支工作區clean狀態
??git checkout dev
??查看當前分支
??git branch
5.刪除分支
??#查看當前所有分支
??git branch
?? #git branch -d 分支名
?? #不能刪除當前活動分支 也不能刪除 commit之后 但 沒有merged的分支(即> 處于本地倉庫的分支)
??git branch -d test
6. 創建并切換到新創分支
??git checkout -b test
7.測試處于本地倉庫的分支,能否被刪除
7.1在test分支,commit一段代碼
??git add .
??git commit -m “”
7.2切換到dev分支
??git checkout dev
??#刪除test分支,是否報錯,如果需要強制刪除,git branch -D test
??git branch -d test
7.3如果需要強制刪除
??git branch -D test
22.想要合并分支時如何進行操作
1.在dev分支,開發會員系統,并提交到本地倉庫
2.切換到master分支
??git checkout master
??git branch --查看分支狀態
3.將dev分支的代碼合并到master分支,dev分支不變,master分支代碼會被覆蓋,結果使用dev分支的代碼
??git merge dev
23.當合并分支有沖突時如何正確的合并分支
如果分工明確,細致,可以避免沖突,但是一旦發生沖突?
1.在master分支,修改test.html中h1標題的內容為“master分支”,并提交
2.切換到dev分支,修改同一個文件的相同位置的內容“dev分支”,并提交
3.切換到master分支,將dev分支合并到master
?? git merge dev
解決方式一:撤銷合并:直接使用master分支代碼,舍棄忽略其他分支代碼
?? #放棄忽略合并
?? ? git merge --abort
?? #重新合并,復現沖突,為演示解決方式二準備
?? ? git merge dev
解決方式二:和沖突分支的開發人員協商,確定最終保留代碼,手動刪除沖突
和沖突分支的開發人員協商,確定最終保留代碼,手動刪除沖突
查看當前分支狀態,并提交
?? git status
?? git add .
?? //這里不需要描述 -m,接下來會進入一個可編輯的頁面:這里輸入描述
?? git commit
此時在英文模式下,按i,進入可編輯狀態
先按 按鍵esc 退出編輯狀態,在英文狀態下,再按 :wq ,退出該頁面
查看狀態
git status --用這一個也可以
git log --pretty=oneline
git push -u origin master
24.git分支管理
基礎分支
?1.master
?2.develop
一個項目的代碼庫至少要有master和develop這兩個分支。團隊成員從主分支(master)獲得的都是處于可發布狀態的代碼,而從開發分支(develop)應該總能夠獲得最新開發進展的代碼。
從master上獲得的代碼一定要保證是和線上運行的程序是一致的。
從develop上獲得的應該是最新的穩定版本的代碼。
除了基礎分支外,我們還需要輔助分支。輔助分支大體包括如下幾類:“管理功能開發”的分支、“幫助構建可發布代碼”的分支、“可以便捷的修復發布版本關鍵BUG”的分支。
輔助分支的最大特點就是“生命周期十分有限”,完成使命后即可被刪除。
輔助分支
Feature branch
Release branch
Hotfix branch
Feature branch
從develop分支檢出,最終也會合并于develop分支。常用于開發一個獨立的>新功能,且其最終的結局必然只有兩個,其一是合并入“develop”分支,其二>是被拋棄。最典型的“Fearture branches”一定是存在于團隊開發者那里,而>不應該是“中心版本庫”中。
通過下面的命令來解釋這個流程
??git checkout -b myfeature develop
??#在myfeature上開發完代碼之后,需要合并到develop分支上
??git checkout develop
??git merge myfeature
??git branch -d myfeature
??git push origin develop
Release branch
從develop分支檢出,最終合并于“develop”或“master”分支。這類分支建議命名為“release-*”。通常負責“短期的發布前準備工>作”、“小bug的修復工作”、“版本號等元信息的準備工作”。與此同時,“develop”分支又可以承接下一個新功能的開發工作了。在一>段短時間內,在“Release branch”上,我們可以繼續修復bug。在此階段,嚴禁新功能的并入,新功能應該是被合并到“develop”>分支的。“Release branch”產生新提交的最好時機是“develop”分支已經基本到達預期的狀態,至少希望新功能已經完全從“Feature >branches”合并到“develop”分支了。
經過若干bug修復后,“Release branches”上的代碼已經達到可發布狀態,此時,需要完成三個動作:第一是將“Release >branches”合并到“master”分支,第二是一定要為master上的這個新提交打Tag(記錄里程碑),第三是要將“Release branches”>合并回“develop”分支。
通過下面的命令來解釋這個流程
??git checkout -b release-1.2 develop
??#修改版本號等元信息的準備工作或者小bug的修復工作后 要合并到master
??git checkout master
??git merge release-1.2
??git tag -a 1.2 #發布前要建立里程碑
??#如果有bug的修改,還需要合并到develop
??git checkout develop
??git merge release-1.2
??git branch -d release-1.2 #最后刪除這個發布分支,它已經完成使命
Hotfix branch
從“master”檢出,合并于“develop”和“master”,通常命名為“hotfix-*”
建議設立“Hotfix branches”的原因是:線上總是可能產生非預期的關鍵BUG,希望避免“develop分支”新功能的開發必須為BUG修復讓路的情況。
BUG修復后,需要將“Hotfix branches”合并回“master”分支,同時也需要合并回“develop”分支
通過下面的命令來解釋這個流程
??git checkout -b hotfix-1.2.1 master
??#修復完BUG之后,要合并到master
??git checkout master
??git merge hotfix-1.2.1
??git tag -a 1.2.1 #修改線上BUG需要打標簽
??#修復完BUG之后,也要合并到develop
??git checkout develop
??git merge hotfix-1.2.1
??git branch -d hotfix-1.2.1 #最后hotfix的分支使命完成,刪除之
這就是一個非常好的分支管理模型。
所以,在我們的gitlab上面我們一定至少要有2個分支
master 永遠保持和線上代碼同步,在上線部署時從這個分支拉去代碼打包。如果我們的DI工具到時的功能完善,則DI工具直接從這個分支去代碼打包發布
develop 我們的持續集成工具從每天從這個分支上取代碼編譯大包部署到測試環境(KVM,Docker)。
每次上線前都要建立里程碑Tag
25.git多人分支集成協作時的常見場景
不同人想要查看版本路線如何進行操作
git log --oneline 查看簡化的提交記錄
git log --oneline --graph 查看當前分支提交版本路線
git log --oneline --graph --all 查看所有分支的版本路線圖
git log --oneline --graph 【-number】 查看當前分支提交版本路線圖
不同人想要刪除不想要的分支如何操作
??1.在github上dev分支下,創建兩個xiaoli分支和xiaohuang分支 ??2.在本地復制一份代碼:命名為xiaoli 和xiaohuang
??3.分別在以上兩個項目下,進行如下操作:
在終端fetch遠程倉庫代碼
git fetch
查看所有的分支
git branch -av
刪除遠程分支 #刪除遠程分支之前,確保該分支不用了 以及 確保該分支代碼都merge到主分支上
git push origin --delete xiaoli
在github上,查看是否被刪除