Git和GitHub的使用流程
安裝Git
計(jì)算機(jī)使用的是window系統(tǒng),在Git官網(wǎng)上下載對應(yīng)的程序。
安裝完成后瓤球,在文件夾中右鍵鼠標(biāo)出現(xiàn)的開始菜單中 出現(xiàn)“Git”->“Git Bash“冰垄,說明Git安裝完成权她。
在命令行中輸入以下,指令檢查下載版本
$ git version
可知當(dāng)前電腦安裝的git版本為2.24.0版本
創(chuàng)建版本庫
為了方便Git管理(修改蝴罪,刪除要门,跟蹤)文件欢搜,我們必須創(chuàng)建一個(gè)版本庫(repository)谴轮。
首先選擇我們要?jiǎng)?chuàng)建倉庫的文件夾位置第步,啟動(dòng)git bash。
在命令行中輸入以下指令
$ git init
此時(shí)可以發(fā)現(xiàn)在當(dāng)前目錄下會(huì)多一個(gè).git文件夾廓推,(如果沒有發(fā)現(xiàn)樊展,需要顯示所有隱藏文件夾)堆生。這個(gè)文件夾就是git用來跟蹤管理版本的,該文件夾不能手動(dòng)修改,否則會(huì)破壞版本庫糯景。
基本操作
將文件添加到本地倉
版本控制系統(tǒng)會(huì)跟蹤文本文件的改動(dòng),因此最住,當(dāng)我們修改文件完成后涨缚,需要將文件添加到本地倉進(jìn)行管理策治。
在命令行中輸入以下指令
$ git status
可以查看當(dāng)前狀態(tài),如圖所示茂翔,我們添加的txt發(fā)生了修改履腋,可以將其添加到本地倉中進(jìn)行更新遵湖。
在命令行中輸入以下指令
$ git add test.txt
執(zhí)行指令沒有任何顯示說明成功將test.txt添加到本地版本庫。然后需要進(jìn)行添加說明谋国,其指令為
$ git commit -m "修改test文件"
如果出現(xiàn)上圖所示烹卒,則說明添加說明成功弯洗,其中-m是message的縮寫,“ ”內(nèi)為本次修改的說明內(nèi)容藐吮。為了更好的管理和修改版本庫谣辞,該操作是非常有必要的沐扳,甚至為后期的回溯版本提供了足夠的便利。
管理本地倉
之前已經(jīng)使用了一種管理倉庫的指令$ git status躯嫉,能夠讓我們掌握倉庫當(dāng)前的狀態(tài),接下來將介紹一下其他指令祈餐;
雖然git status能夠告訴我們test.txt發(fā)生了修改帆阳,但是我們并不知道哪里發(fā)生了修改,此時(shí)在命令行中輸入
$ git diff test.txt
其效果為
白色字體是未修改部分山宾,紅色字體是刪除部分塌碌,綠色字體是新添加部分旬盯;
經(jīng)過多次添加文件胖翰,修改文件操作后,我們可以查看所有的修改歷史記錄萨咳,其指令為
$ git log
git log命令顯示最近提到最遠(yuǎn)提交的所有日志鹃两,最近的一次操作是修改test文件舀凛,在往前是修改test,fix confilt馋记,現(xiàn)在我們不想要這些修改信息懊烤,想進(jìn)行回溯之前的版本腌紧,執(zhí)行下面命令行
$ git reset 118ab82154f13bd38eabd8f0cd3531ea6a92ac37
執(zhí)行未出現(xiàn)問題的話,就回溯到了fix confilt版本号胚,在執(zhí)行g(shù)it log可以看到如下效果
此時(shí)使用指令$ git diff test.txt,發(fā)現(xiàn)當(dāng)前有很多不同,原因是乙帮,工作區(qū)的文件已經(jīng)進(jìn)行修改察净,而并沒有傳到版本庫中;為了讓工作區(qū)也恢復(fù)原狀氢卡,需要執(zhí)行執(zhí)行撤銷命令
$ git checkout test.txt
能夠獲得如圖效果
除了在相應(yīng)文件夾中刪除指定的文件夾這種刪除修改操作外峡捡,我們還可以用git中的rm指令用于刪除文件,如果這個(gè)文件已經(jīng)添加到版本庫中们拙,使用git rm指令將會(huì)永久刪除該文件阁吝。
GitHub遠(yuǎn)程倉庫
GitHub 是一個(gè)提供Git倉庫托管服務(wù)的遠(yuǎn)程倉庫突勇,本地Git倉庫和GitHub之間的傳輸是通過SSH加密的,所有首先需要?jiǎng)?chuàng)建一個(gè)SSH key埂奈。
第一步:創(chuàng)建SSH Key摔刁。在系統(tǒng)盤C盤中用戶文件夾中要是能找到.ssh文件夾中已經(jīng)有了SSH鑰匙共屈。否則在命令行中輸入以下指令
$ ssh-keygen -t rsa -C "youremil@163.com"
根據(jù)自己在GitHub上注冊使用的郵箱,生成本地SSH key借宵,一路按回車矾削,使用默認(rèn)值即可(不用于軍事,無需設(shè)置密碼)欲间。此時(shí)能夠找到.ssh文件中的兩個(gè)id_rsa和id_rsa.pub兩個(gè)文件,其中id_rsa是私鑰班缎,不能泄露出去达址,id_rsa是公鑰趁耗,可以告訴他人。
第二步:登入GitHub满葛,打開“Account settings”纱扭, “SSH keys”頁面:
然后點(diǎn)Add SSH key乳蛾,填上任意Title鄙币,在文本框中添加id_rsa.pub文件中的內(nèi)容。
完成上面兩步因惭,便可以開始將本地版本庫的內(nèi)容傳到GitHub遠(yuǎn)程倉庫中了绩衷。
在此之前咳燕,可以通過以下指令檢查當(dāng)前設(shè)置的郵箱和用戶名是否正確
$ git config --global --list
如果需要修改招盲,使用如下指令
$ git config --global user.name "新的用戶名"
$ git config --global user.email "新的郵箱"
如果更換郵箱信息低缩,需要重新生成ssh-key咆繁,在執(zhí)行一次第一步和第二步。
將本地倉庫內(nèi)容push到GitHub上自己建立的repository上需要執(zhí)行以下指令
git remote add origin git@github.com:ExpressDark/test.git
這里的git@github.com:ExpressDark/test.git是SSH key银觅。這一步的過程是把本地倉和在github上創(chuàng)建的遠(yuǎn)程倉庫進(jìn)行連接坏为。
下一步就可以將本地倉庫的內(nèi)容推到遠(yuǎn)程倉庫久脯。如果是第一次
$ git push -u origin master
如果是第一次推送,因?yàn)檫h(yuǎn)程倉庫是空的镰吆,可以將本地倉內(nèi)容推送到master分支帘撰,需要加上-u參數(shù)。之后只需要執(zhí)行
$ git push origin master
除了上傳本地倉到遠(yuǎn)程倉庫操作外万皿,還可以從遠(yuǎn)程倉庫clone內(nèi)容到本地進(jìn)行操作摧找,一般可能的方式有ssh或者h(yuǎn)ttp±喂瑁克隆指令為git clone蹬耘。
分支管理
Git把每次提交的內(nèi)容串成一條時(shí)間線,這條時(shí)間線就是一條分支减余,這個(gè)分支在Git中成為master综苔。一般來說,master是用來進(jìn)行版本的更迭與發(fā)布位岔,不不能輕易修改的如筛。為此開發(fā)應(yīng)該在分支上進(jìn)行杨刨。
首先,我們要?jiǎng)?chuàng)建一個(gè)dev分支
$ git branch dev
然后用git branch命令查看當(dāng)前分支赚抡,可以看到當(dāng)前分支任然在master上,現(xiàn)在需要切換到dev分支上去肉康。
切換分支的方式有兩種
$ git switch dev
$ git checkout dev
當(dāng)在dev分支上完成一定操作后,確定沒有問題可以將dev分支上的內(nèi)容合并到master分支上刚夺,首先先切換到master分支,然后執(zhí)行以下指令
刪除分支的指令為
$ git branch -d <name>
軟件開發(fā)中莽红,會(huì)時(shí)常有修復(fù)bug操作,為此需要?jiǎng)?chuàng)建一個(gè)bug分支來臨時(shí)修復(fù)bug,修復(fù)bug完成后妇智,合并分支,并刪除臨時(shí)bug分支拉盾。
如果當(dāng)手頭工作沒有完成時(shí)泻红,先用git stash保存當(dāng)前未完成工作讹躯,然后去修復(fù)bug,待bug完成后耙旦,使用git stash pop,回到工作現(xiàn)場。
標(biāo)簽管理
回溯版本時(shí)险领,commit號是6a4552e…,一串亂七八糟的數(shù)字不好管理噩茄,最好的辦法就是是進(jìn)行標(biāo)簽標(biāo)記凿菩。
可以用git tag查看當(dāng)前所有指令。標(biāo)簽直接執(zhí)行以下命令
$ git tag v1.0
如果知道commit的id,可以對之前的commit進(jìn)行便簽處理
$ git tag v1.0 <id>
推送本地標(biāo)簽命令為
$ git push origin <tagname>
刪除本地標(biāo)簽命令為
$ git tag -d <tagname>