實驗一 GIT 代碼版本管理css
實驗目的:html
1)瞭解分佈式分佈式版本控制系統的核心機理;git
2)熟練掌握git的基本指令和分支管理指令;github
實驗內容:服務器
1)安裝git網絡
2)初始配置git ,git init git status指令app
3)掌握git log ,git add ,git diff 指令編輯器
4) 掌握git tag git branch,git commit 指令分佈式
5)掌握git revert 指令ide
實驗記錄:
1)實驗內容結果的截圖
1.安裝git
具體詳細過程可參照:http://www.javashuo.com/article/p-kdpizzro-ew.html
2.初始配置git
在開始使用 Git 以前,先須要配置 Git,即設置用戶名和郵箱,截圖以下:
3.從頭建立倉庫
cd到e盤,而後運行mkdir -p se2020-git-course/new-git-project && cd $_這條命令,即建立se2020-git-course目錄,並可在該目錄下建立另外一個叫做new-git-project
的子目錄;而後使用git init命令,在當前初始化生成一個空的git倉庫,截圖以下:
使用git clone命令來克隆現有倉庫,這裏克隆的git倉庫路徑(通常爲URL)是https://github.com/udacity/course-git-blog-project,這裏須要確保終端的當前工做目錄沒有位於 Git 倉庫中即不在.git的目錄下。(.git目錄是一個庫),截圖以下:
完成後,可查看course-git-blog-project文件夾,截圖以下:
繼續使用git status命令,截圖以下:
這裏輸出結果的意思是:
On branch master – Git 位於 master 分支上,(也就是默認分支)。
Your branch is up-to-date with 'origin/master'. – 由於咱們使用 git clone 從另外一臺計算機上覆制了此倉庫,所以這部分告訴咱們項目是否與所複製的倉庫保持同步狀態。咱們不會在其餘計算機上處理該項目,所以這一行能夠忽略。
nothing to commit, working directory clean – 表示沒有任何待定的更改。
4.git log 的命令
在終端運行git log命令,該命令會顯示倉庫中每一個commit的SHA,做者,日期和消息。截圖以下:
使用git log --oneline命令,能夠更改倉庫信息的顯示方式:每行顯示一個commit,只顯示commit的SHA的前7個字符,顯示commit的消息。截圖以下:
運行git log --stat,此命令用來顯示commit中更改的文件以及添加或刪除的行數。截圖以下:
運行git log -p(-path),此命令用來更改git log顯示的方式,會在默認輸出中顯示被修改的文件,添加、刪除的行所在的位置以及作出的實際修改。截圖以下:
運行git show +SHA 命令將顯示特定 commit 的詳情它的輸出顯示和git log -p+SHA的徹底同樣。截圖以下:
5.git add& git commit& git diff
首先,進入到new-git-project目錄下,在其目錄下建立一個index.html文件,並添加以下一些起始代碼:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Blog Project</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<script src="js/app.js"></script>
</body>
</html>
而後,繼續在其目錄下創建js和css文件夾,並在文件夾下分別創建app.js和app.css文件,可爲空。運行git status命令,可看到咱們建立了幾個新的文件,可是這幾個文件並無被git跟蹤。截圖以下:
暫存文件
運行git add index.html命令,將index.html添加到暫存區,結果用git status來顯示。(index.html此時位於Changes to be committed暫存區分類下)截圖以下圖所示:
同理,運行git add css/app.css js/app.js命令,暫存另外兩個文件。截圖以下:
提交commit
在提交commit以前,先進行代碼編輯器的配置,先安裝subline Text,再運行git config --global core.editor "'\E:\Sublime Text 3\Sublime Text 3\sublime_text.exe' -n -w"命令,再運行git commit命令。截圖以下:
在第一行位置輸入Initaial commit (可爲其餘),點擊保存,並關閉代碼編輯器的窗口。完成第一個commit。截圖以下:
提交添加更改後的commit
向index.html中的body提交以下內容:
<header>
<h1>Expedition</h1>
</header>
運行git status命令,查看此時狀態,截圖以下:
同理與第一個commit相同操做,先使用git add命令將文件移到暫存區,再使用 git status 命令驗證文件是否位於暫存區,最後使用 git commit命令提交commit,並添加提交說明Add header to blog。完成第二我的添加更改的commit操做。截圖以下:
git diff
將index.html中的標題"Expedition"改成"Adventure",保存文件後,運行git diff命令(與git log -p結果同樣),此命令會顯示已經修改的文件,添加/刪除的行所在的位置,執行的實際更改 。截圖以下:
gitignore
見實驗分析錯誤部分
6.標籤、分支
git tag
確保在new-git-project項目的目錄下,運行git tag -a +標籤名命令向最近的commit添加標籤(v1.0是標籤的名稱,-a表示git建立的是一個帶建立者,日期,消息等額外信息的標籤),會打開代碼編輯器,輸入Ready for content做爲tag。截圖以下:
保存並退出編輯器,運行git tag命令,驗證已經向項目中添加了標籤,再運行git log,)(git log --decorate)獲得此標籤在倉庫的位置信息。git tag -d +標籤名,此命令表示刪除指定標籤。截圖以下:
git tag -a +標籤名 +已經commit的SHA,此命令表示向倉庫的指定Commit添加標籤,以 git tag -a v2.0 爲例,截圖以下:
建立分支
運行git branch命令,將列出倉庫中全部分支,運行git branch +分支名稱,將建立對應分支,運行git chenkout +指定分支名稱,將切換至指定分支。截圖以下:
運行git log --oneline,查看此時狀態,HEAD指向的是當前分支,此時提交的commit都會添加到此指向分支。截圖以下:
活躍分支
此時再次運行git branch命令,列出全部倉庫中分支,其中活躍分支名稱旁邊帶有星號。截圖以下:
刪除分支
運行git checkout master命令,切換到master分支,運行git branch -d sidebar命令,便可刪除sidebar分支(這是未向siderbar分支添加commit的狀況,如果已添加,須要運行git branch -D sidebar進行強制刪除)。截圖以下:
高效分支
在new-git-project目錄下有index.html,css/app.css(空文件),js/app.js(空文件),其中index.html內容以下:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Blog Project</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<link rel="stylesheet" href="css/app.css">
</head>
<body>
<header>
<h1>Expedition</h1>
</header>
<div class="container">
<main>
<div class="container">
<main>
</main>
</div>
<footer>
Made with ♥ @ Udacity
</footer>
</main>
</div>
<footer>
Made with ♥ @ Udacity
</footer>
<script src="js/app.js"></script>
</body>
</html>
運行git add +三個文件名,將全部文件暫存到倉庫,再運行git commit提交到倉庫。截圖以下:
更改-添加頁面顏色
向css/app.css添加如下內容,以添加頁面顏色。
body {
background-color: #00cae4;
}
運行gid add css/app.css命令將文件添加到暫存區,再運行git commit提交到倉庫。截圖以下:
更改-添加側欄
運行git log --oneline命令,再運行git branch siderbar +SHA(不肯定是否喜歡新的背景色,能夠選在設置頁面顏色的commit以前的SHA)。截圖以下:
運行git checkout siderbar命令,再運行git log --oneline,以驗證上一步。截圖以下:
向HTML文件中<main>中添加如下代碼,運行gid add index.html命令將文件添加到暫存區,再運行git commit提交到倉庫,運行git log --oneline命令,顯示以下。截圖以下:
<div class="container">
<main>
<div class="container">
<main>
</main>
</div>
<footer>
Made with ♥ @ Udacity
</footer>
更改-master上的標題
運行git checkout master命令切換分支,再將HTML的<h1>標題Expedtion改成Adventure,,運行gid add index.html命令將文件添加到暫存區,再運行git commit提交到倉庫,運行git log --oneline命令,顯示以下。截圖以下:
運行git log --oneline --graph --all命令,顯示倉庫中全部分支。截圖以下:
7.合併
合併
在master分支上,運行git merge siderbar命令,進行分支的合併。截圖以下:
合併衝突
在master分支上將HTML <h1>標題"Adventure"改成"Quest",運行gid add index.html命令將文件添加到暫存區,再運行git commit提交到倉庫,運行git log --oneline命令,顯示以下。截圖以下:
運行git log --oneline命令,再運行git branch heading-update +SHA(建立一個不是從master分支上分叉的分支,選擇master的commit以前的SHA)。截圖以下:
運行git checkout heading-update命令切換分支,HTML<h1>標題"Adventure"改成"Crusade",運行gid add index.html命令將文件添加到暫存區,再運行git commit提交到倉庫,運行git log --oneline --graph --all命令,顯示以下。截圖以下:
運行git merge heading-update命令,出現合併衝突,再運行git status命令,顯示index.html存在合併衝突。截圖以下:
用代碼編輯器打開index.html,將全部帶有衝突指示符的行刪除,選擇保留哪些行,並可進行修改。截圖以下:
運行gid add index.html命令將文件添加到暫存區,再運行git commit提交到倉庫。截圖以下:
8.撤銷更改
更改最近的commit
運行git commit --amend命令,代碼編輯器將打開,顯示原始信息,可進行修改,保存並關閉編輯器,即完成。截圖以下:
還原commit:
將HTML<h1>標題"Adventure Quest"改成"Crusades",運行git log --online --graph,再運行git revert +SHA(爲最近的SHA),返回查看標題。截圖以下:
重置
git reset --hard 選項清除 commit
git rest --soft 選項將 commit 的更改移至暫存區
git rest --mixed 選項取消暫存已被 commit 的更改
2)實驗過程當中發生的問題與解決
問題一:
錯誤緣由:打錯了路徑的單雙引號,修改以下便可
問題二:
根據實驗步驟建了.gitignore文件,project.docx文件,並向.gitignore文件中添加了一行project.docx
但卻顯示找不到這個文件
運行git status命令,顯示project.docx文件並未隱藏
百度也一直未解決,因而換了一種方法,在.gitignore文件中的一行project.docx前面添加了*,忽略此文件,再次運行git status命令。便可達到效果。然而原來的過程還未找到錯誤的地方。
實驗總結與體會:
一開始看到那麼多試驗內容以爲有點冗長,不太想動手,因而就根據一節節的實驗內容天天分着作一點,邊作邊寫實驗記錄的文檔,因此這看起來很長的文檔,其實是天天一點點累積起來的。這次的git實驗是一個驗證性的實驗,基本是跟着步驟來就能夠,過程當中偶爾也會出現一些小錯誤,但基本上上網查查或者問問同窗也基本能解決。因此就算是困難的事情分解着天天堅持作一點,一點點去克服,最終也會水到渠成。
思考題:
閱讀維基百科和百度百科 的Git詞條,總結分佈式分佈式版本控制系統的核心機理
答:分佈式版本控制又稱去中心化版本控制,便是一種不須要中心服務器的管理文件版本的方法,可是它也可使用中心服務器。更改能夠被合併到 DVCS 的任何其餘用戶的系統中,所以能夠實現很是靈活的工做流。它容許軟件開發者能夠共同參與一個軟件開發專案,可是沒必要在相同的網絡系統下工做。以分散式版本控制方法,做出軟件版本控制系統。