Git官網(wǎng):https:/// 一、Git下載 官網(wǎng)首頁(yè)下載,當(dāng)前最新版本:2.24.1 本人下載的是Git for Windows版本:Git-2.24.1.2-64-bit.exe 二、安裝 基本上按照默認(rèn)選項(xiàng)安裝即可。 安裝成功后在開(kāi)始菜單生成Git目錄和3個(gè)子菜單。
Git Bash:一個(gè)封裝過(guò)的cmd命令行,并在其中加入了一些新的命令與功能。(linux風(fēng)格) 三、Git工作流程 1、工作流程圖 Workspace:工作區(qū),電腦里能看到的目錄 2、工作區(qū)之間關(guān)系和命令 3、Git常用命令速查表 四、設(shè)置自己的用戶名和郵箱 打開(kāi)Git Bash,界面如下:
先后輸入下面2條命令并回車: git config --global user.name "用戶名" git config --global user.email "郵箱" 五、創(chuàng)建版本庫(kù)(repository) 1、執(zhí)行cd d:命令進(jìn)入d盤(pán) 2、執(zhí)行mkdir gitRepo命令在d盤(pán)創(chuàng)建目錄gitRepo 3、執(zhí)行pwd命令可以查看當(dāng)前目錄 4、執(zhí)行g(shù)it init命令把gitRepo目錄變成Git管理的版本庫(kù) 六、Git的基本操作 1、提交版本庫(kù)、查看狀態(tài)等 (1)在d:/gitRepo手動(dòng)建立文件test.txt,內(nèi)容為“第1行”;
2、版本回退(接上面例子) (1)先后執(zhí)行g(shù)it add和git commit命令
3、撤銷修改(接上面例子) (1)編輯文件test.txt,加入一行內(nèi)容“第3行”;
4、刪除文件的還復(fù)(接上面例子) 刪除也是一種修改,刪除的方式有2種: 備注:如果想徹底刪除文件,則git rm后需要git commit。 七、GitHub配置SSH Key 在用github管理項(xiàng)目的時(shí)候,可使用https url和SSH url兩種方式克隆到本地。 https url和SSH url區(qū)別: GitHub配置SSH Key的流程: 在用戶主目錄下會(huì)生成id_rsa和id_rsa.pub兩個(gè)文件,id_rsa是私鑰(不能泄露),id_rsa.pub是公鑰。
3、登陸GitHub ->右上角頭像處選擇“Settings”-> SSH and GPG keys -> New SSH key -> 保存后如下:
4、測(cè)試SSH key 輸入ssh -T git@github.com,返回一段警告信息,輸入yes即可。
因?yàn)閯?chuàng)建SSH key是沒(méi)有設(shè)置密碼,所以這里不用輸入密碼。 八、GitHub倉(cāng)庫(kù)的操作 1、GitHub創(chuàng)建Git倉(cāng)庫(kù) 在本地創(chuàng)建了一個(gè)Git倉(cāng)庫(kù),同步到GitHub倉(cāng)庫(kù)上,這樣別人可以通過(guò)GitHub倉(cāng)庫(kù)來(lái)協(xié)作。 登陸GitHub ->右上角頭像處選擇“Your repositories”-> New -> 在“Repository name”下面輸入名稱,如gitRepo -> 點(diǎn)擊“Create repository”提交。 (2)把本地倉(cāng)庫(kù)關(guān)聯(lián)到GitHub倉(cāng)庫(kù) git remote add origin git@github.com:jlccn/gitRepo.git
備注:jlccn是本人的GitHub賬戶名;gitRepo是上面第(1)建立的Repository name;origin是遠(yuǎn)程庫(kù)名字,這是Git默認(rèn)的叫法。 (3)把本地倉(cāng)庫(kù)的內(nèi)容推送到GitHub倉(cāng)庫(kù) 執(zhí)行命令:git push -u origin master
本人是win7系統(tǒng),推送時(shí)報(bào)錯(cuò)ssh:connet to host github.com port 22:Connection timed out
(4)查看GitHub頁(yè)面,可看到文件test.txt已經(jīng)同步上去。 2、從遠(yuǎn)程庫(kù)克隆到本地 從頭開(kāi)始,在GitHub創(chuàng)建遠(yuǎn)程庫(kù),再克隆到本地。 (1)登陸GitHub創(chuàng)建倉(cāng)庫(kù)
運(yùn)行后,在d盤(pán)自動(dòng)創(chuàng)建目錄gitRepo2,內(nèi)容如下:
九、分支管理 1、分支基本操作 查看分支:git branch 創(chuàng)建分支:git branch <name> 切換分支:git checkout <name>或者git switch <name> 創(chuàng)建+切換分支:git checkout -b <name>或者git switch -c <name> 合并某分支到當(dāng)前分支:git merge <name> 刪除分支:git branch -d <name> (1)創(chuàng)建并切換到dev分支
備注:相當(dāng)于兩條命令git brance dev和git checkout dev,也可以使用最新的命令git switch -c dev (2)查看分支
(3)手動(dòng)修改test.txt增加一行“第3行分支”,然后提交
(4)切換回master分支
備注:也可以使用git switch master 打開(kāi)test.txt,會(huì)發(fā)現(xiàn)剛才添加的內(nèi)容不見(jiàn)了,因?yàn)閯偛盘峤皇窃赿ev分支上,不會(huì)影響到master分支。 (5)把dev分支合并到master分支上
備注:上面的Fast-forward表示這次合并是“快進(jìn)模式”,這種模式下,刪除分支后,會(huì)丟掉分支信息。 打開(kāi)test.txt,分支添加的內(nèi)容已經(jīng)有了。
2、解決沖突 例子:
(2)修改test.txt,增加一行“第4行分支feature1”,內(nèi)容如下: 第1行 第2行 第3行分支 第4行分支feature1 (3)在feature1分支上提交
(4)切換到master分支 Git會(huì)自動(dòng)提示我們當(dāng)前master分支比遠(yuǎn)程的master分支要超前1個(gè)提交。
在master分支上把test.txt文件增加一行“第4行master分支”: 第1行 第2行 第3行分支 第4行master分支 提交master分支
(5)這種情況下Git執(zhí)行快速合并,會(huì)報(bào)錯(cuò)
打開(kāi)test.txt,內(nèi)容如下: 第1行 第2行 第3行分支 <<<<<<< HEAD 第4行master分支 ======= 第4行分支feature1 >>>>>>> feature1 git status可以查看沖突的文件
(6)手動(dòng)編輯test.txt內(nèi)容并保存,然后再提交 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支
用帶參數(shù)的git log可以看到分支的合并情況
(7)刪除feature1分支 3、Bug分支
(2)編輯test.txt,增加下面最后一行內(nèi)容: 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支 第6行dev分支處理中... (3)此時(shí)接到一個(gè)修復(fù)bug任務(wù),可以使用git stash保存工作區(qū)的修改
此時(shí)打開(kāi)test.txt,會(huì)發(fā)現(xiàn)第(2)添加的最后一行內(nèi)容不見(jiàn)了。 (4)假設(shè)在master分支上修復(fù)bug,切換到master分支上,并創(chuàng)建臨時(shí)分支
(5)模擬修復(fù)bug,手動(dòng)編輯test.txt,內(nèi)容如下,然后提交 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支:修復(fù)bug
備注:留意本次提交的版本號(hào)d12d0fb,在后面有用到。 (6)切換master分支,并完成合并,最后刪除issue-101分支
(7)切換回dev分支 用git status顯示工作區(qū)是干凈的,用git stash list查看保存的工作現(xiàn)場(chǎng)
恢復(fù)有兩個(gè)辦法: 用git stash list查看,就看不到任何stash內(nèi)容了:
打開(kāi)test.txt文件,內(nèi)容如下(注意第5行內(nèi)容不一樣): 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支 第6行dev分支處理中... (8)模擬完成dev任務(wù),手動(dòng)編輯test.txt,內(nèi)容如下,然后提交 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支 第6行dev分支處理完成
(9)修復(fù)dev分支的同個(gè)bug dev分支是早期從master分支分出來(lái)的,所以,這個(gè)bug其實(shí)在當(dāng)前dev分支上也存在。 使用git cherry-pick d12d0fb命令,復(fù)制一個(gè)特定的提交到當(dāng)前分支。
備注:因?yàn)樾薷牡氖峭瑐€(gè)文件,所以這里提示有沖突。 第1行 第2行 第3行分支 第4行分支feature1 <<<<<<< HEAD 第5行master分支 第6行dev分支處理完成 ======= 第5行master分支:修復(fù)bug >>>>>>> d12d0fb... fixbug 101 修改為: 第1行 第2行 第3行分支 第4行分支feature1 第5行master分支:修復(fù)bug 第6行dev分支處理完成 然后再提交即可。 4、Feature分支
(2)開(kāi)發(fā)完后提交
(3)切換加dev,準(zhǔn)備合并,然后刪除feature2分支
(4)此時(shí)因某種原因新功能取消,刪除feature2分支,用-d刪除
提示還沒(méi)有被合并,如果刪除,將丟失掉修改,如果要強(qiáng)行刪除,需要使用大寫(xiě)的-D參數(shù)。 (5)強(qiáng)行刪除
備注:不刪除沒(méi)用的分支,也沒(méi)什么影響,只是看起來(lái)比較亂。 5、多人協(xié)作的流程 (1)首先,可以試圖用git push origin <branch-name>推送自己的修改;
小結(jié): 十、標(biāo)簽管理 1、打標(biāo)簽
備注:默認(rèn)標(biāo)簽是打在最新提交的commit上的。 2、歷史提交的commit id打標(biāo)簽
3、查看所有標(biāo)簽
4、查看標(biāo)簽信息
5、創(chuàng)建帶有說(shuō)明的標(biāo)簽,用-a指定標(biāo)簽名,-m指定說(shuō)明文字
6、用命令git show <tagname>可以看到說(shuō)明文字:
7、刪除標(biāo)簽
8、推送某個(gè)標(biāo)簽到遠(yuǎn)程
9、如果標(biāo)簽已經(jīng)推送到遠(yuǎn)程,要?jiǎng)h除遠(yuǎn)程標(biāo)簽,要先從本地刪除,再?gòu)倪h(yuǎn)程刪除
|
|